2.4. AI 및 LLM(거대 언어 모델) 도입으로 인한 테스트 패러다임의 붕괴

2.4. AI 및 LLM(거대 언어 모델) 도입으로 인한 테스트 패러다임의 붕괴

전통적 소프트웨어 공학이 지난 반세기 동안 구축해 온 테스팅(Testing)의 세계관은 철저히 데카르트적인 기계론에 기반하고 있었다. 코드(Code)는 규칙(Rule)의 집합이었고, 입력(Input)이 주어지면 출력(Output)은 시계톱니바퀴처럼 한 치의 오차도 없이 예측된 결괏값을 도출해야만 했다. 이 견고한 결정론적(Deterministic) 패러다임 아래에서 공학자들은 단위 테스트(Unit Test), 통합 테스트(Integration Test)라는 견고한 성벽을 쌓아 올릴 수 있었다.

그러나 신경망(Neural Network) 알고리즘의 비약적인 발전과 함께, 기계가 언어를 이해하고 생성하는 **거대 언어 모델(Large Language Model, LLM)**이 엔터프라이즈(Enterprise) 시스템의 핵심 아키텍처로 도입되면서 상황은 완전히 뒤바뀌었다. 우리는 이제 코드가 아닌 ’확률(Probability)’과 대화해야 하는 낯선 문명에 진입한 것이다.

본 절에서는 소프트웨어 테스팅의 든든한 방어막이었던 수리적 체계가 LLM이라는 비결정성(Nondeterminism)의 블랙박스 앞에서 어떻게 산산조각 났는지, 즉 ‘테스트 패러다임의 붕괴’ 현상을 다룬다.

1. 붕괴의 진원지: 규칙 기반(Rule-based)에서 데이터 기반(Data-driven)으로

과거의 테스팅 패러다임이 유효했던 것은 인프라 안에 명시적인 시스템 로직(Source Code)이 존재했기 때문이다. 엔지니어는 제어 흐름 테스팅(Control Flow Testing)이나 조건 검증(Branch Coverage)을 통해, 내부의 모든 엣지 케이스를 100\% 연역적으로 통제할 수 있었다.

그러나 LLM을 위시한 현대의 AI 앱(Application) 아키텍처에서 비즈니스의 핵심 로직은 더 이상 if-else 구문 안에 머물지 않는다. 로직은 수십억 개의 모델 가중치(Weights & Biases) 파라미터와 벡터 공간(Vector Space) 안으로 흡수되어 흔적조차 없이 사라져버렸다.

  • 전통적 디버깅의 소멸: 시스템이 잘못된 결과(Bug)를 도출했을 때, 과거에는 특정 파일의 342 번째 라인 코드를 찾아 수정하면 그만이었다. 하지만 LLM이 심각한 환각(Hallucination)을 발생시켰을 때, 우리는 수십억 개의 가중치 행렬 중 대체 어떤 숫자가 잘못되었는지 추적할 수 있는 직관을 상실했다. 버그의 근본 원인 분석(Root Cause Analysis, RCA)이 불가능해진 것이다.

2. 테스트 자동화(Test Automation) 피라미드의 전복

마틴 파울러(Martin Fowler)가 주창하여 수십 년간 엔터프라이즈의 교리로 취급받던 ‘테스트 자동화 피라미드(Test Automation Pyramid)’ 역시 하부 구조부터 무너져 내렸다.

기존 피라미드는 빠르고 저렴하며 결정론적인 **단위 테스트(Unit Tests)**를 가장 거대한 기반(Base)으로 삼고, 비교적 비용이 많이 드는 종단 간 테스트(E2E)를 꼭대기에 소수로 배치하라고 지시한다.

그러나 프롬프트(Prompt)를 주입받아 응답을 생성하는 LLM 연결망 테스트에서는, ’단일 컴포넌트 단위’라는 개념 자체가 모호해진다.
프롬프트 단어 하나의 변경이 전체 답변의 논리적 구조를 완전히 파괴시킬 수 있는 극단적 비선형성(Non-linearity)을 띠기 때문에, 개별 함수(Function)만 떼어 내어 고정된 Mock 데이터로 단위 테스트를 수행하는 행위는 AI 도메인에서 아무런 품질(Quality)을 보장해 주지 못한다. 피라미드의 근간이 증발해 버린 것이다.

graph TD
    subgraph Traditional Automation Pyramid
        direction BT
        T1_U[Unit Tests \n (Fast, Cheap, Deterministic)] 
        T1_I[Integration Tests] 
        T1_E[E2E / UI Tests \n (Slow, Expensive)]
        
        T1_U --> T1_I --> T1_E
    end

    subgraph The AI Testing Collapse
        direction BT
        T2_U[Unit Tests \n ⛔ Meaningless in Weights]
        T2_I[Prompt & Context \n Integration]
        T2_E[Human/LLM Evaluation \n (Massively Slow, Unpredictable)]
        
        T2_U -.->|Foundation Broken| T2_I
        T2_I -->|Heavily Relies on| T2_E
    end
    
    style T1_U fill:#efe,stroke:#3c3,stroke-width:2px;
    style T2_U fill:#fdd,stroke:#d00,stroke-width:2px,stroke-dasharray: 5 5;
    style T2_E fill:#ffeda0,stroke:#f0a020,stroke-width:2px;

3. 하위 절의 전개 흐름

더 이상 전통적 오라클의 참/거짓(True/False) 이분법이 통용되지 않는 이 참담한 붕괴 사태를 분석하기 위해, 이어지는 하위 절에서는 AI 도입이 어떠한 패러다임 전환을 강제했는지 구체적인 요인을 파서 조망한다.

  1. 2.4.1. 결정론적(Deterministic) 출력에서 확률적(Stochastic) 출력으로의 전환: 똑같은 질문에 매번 다르게 답하는 LLM의 확률론적 특성이 어떻게 멱등성(Idempotency)의 신화를 파괴했는지 논의한다.
  2. 2.4.2. ’정답’의 정의 모호성: 시 한 수를 짓거나 마케팅 문구를 창작하는 비정형(Creative) 도메인에서, 사실관계의 참/거짓 판독을 넘어선 ’가치 판단’이 테스트를 어떻게 늪으로 빠지게 하는지 추적한다.
  3. 2.4.2.1. 다중 정답(Multiple Valid Answers)의 허용: 결과의 정답이 단 하나의 벡터(Vector)가 아닌, 다양한 형태와 어투로 무한히 분기될 수 있음을 인정함으로써 발생하는 ’기준점 없는 채점’의 딜레마를 분석할 것이다.

소프트웨어 품질 공학의 가장 거대한 위기이자, 이를 극복하기 위해 역설적으로 “어떻게 테스트가 불가능한 확률 모델(AI)의 멱살을 쥐어짜 확고한 결정론의 궤도로 우겨넣을 것인가?“라는 본 서적의 핵심 아젠다로 진입하는 중요한 출발점이 될 것이다.