3.9.1 비즈니스 로직(약관, 프로모션 등) 변경에 따른 테스트 스위트의 진화

3.9.1 비즈니스 로직(약관, 프로모션 등) 변경에 따른 테스트 스위트의 진화

엔터프라이즈 환경에서 ’정답(Ground Truth)’이라는 개념은 물리학의 상수처럼 영원불멸하지 않다. 비즈니스 환경은 유기적으로 생동하며, 어제까지 완벽한 참(True)이었던 명제가 오늘 아침 약관 변경 공지 하나로 치명적인 버그(False)로 돌변한다.

AI 소프트웨어의 신뢰성을 담보하는 오라클(Oracle) 파이프라인에서 가장 뼈아픈 기술 부채(Technical Debt)는 낡은 정답지를 붙들고 있는 ’노후화된 테스트 스위트(Stale Test Suite)’에서 발생한다. 본 절에서는 가변적인 비즈니스 룰 앞에서 테스트 스위트를 어떻게 진화(Evolution)시켜야 하는지 그 공학적 전략을 다룬다.

1. 정답지 노후화(Decay) 현상과 거짓 음성(False Negative)의 폭증

오라클 시스템이 비즈니스 정책의 변화 속도를 따라잡지 못할 때 나타나는 가장 대표적인 증상은 회귀 테스트(Regression Test) 파이프라인이 붉은색(Fail)으로 도배되는 현상이다.

  • False Negative의 역설: 새로운 “여름 특별 대출 금리 3.5%” 정책이 RAG(Retrieval-Augmented Generation) 시스템의 지식 베이스(Knowledge Base)에 정상적으로 업데이트되었다. AI 챗봇은 올바르게 “3.5%“라고 훌륭히 대답했지만, 하드코딩된 과거의 정답지("답변에 4.0%가 포함되어야 함")를 쥔 오라클이 이를 환각(Hallucination)으로 오판하고 Fail을 때린다.
  • 이처럼 테스트 스위트가 비즈니스 로직과 결합도(Coupling)를 유지하지 못하면, CI/CD 파이프라인은 매번 양치기 소년처럼 거짓 경보를 울려대고, 결국 엔지니어들은 테스트 결과를 신뢰하지 않고 강제 배포를 강행하는 ’테스트 무용론’에 빠지게 된다.

2. 참조 투명성(Referential Transparency)을 통한 동적 정답지 연결

이러한 유지보수의 악몽을 타파하는 유일한 길은, 정답지 파일(JSON/YAML) 내부에 변동성이 높은 ‘값(Value)’ 자체를 박아두는 관행을 근절하는 것이다. 시스템은 상수 대신, 단일 진실 공급원(SSOT: Single Source of Truth)을 가리키는 포인터(Pointer)를 가져야 한다.

  • 안티 패턴 (정적 값 하드코딩):
    {"expected_fact": "무료 배송 기준은 5만원입니다."}
  • 결정론적 진화 패턴 (동적 참조):
    {
      "test_id": "POLICY_SHIPPING_01",
      "query": "무료 배송 받으려면 얼마 사야 해?",
      "dynamic_expected_fact": {
        "api_endpoint": "/api/v1/policies/shipping/free_threshold",
        "json_path": "$.current_threshold_amount"
      }
    }
    

이제 프로모션 팀 관리자가 백오피스 어드민 화면에서 무료 배송 기준을 3만 원으로 낮추는 순간, 오라클은 런타임(Runtime)에 해당 API를 즉시 호출(Dereference)하여 `30,000`이라는 새로운 기준값을 동적으로 확보한다. 비즈니스 로직이 변경되어도 테스트 스위트의 코드는 단 한 줄도 수정될 필요가 없다.

## 3.  과거 테스트 케이스의 은퇴(Retirement)와 아카이빙 파이프라인


비즈니스가 진화함에 따라 테스트 케이스 역시 수명을 다한다. 과거의 정책을 묻는 질문은 새로운 비즈니스 룰의 도래와 함께 테스트의 가치를 상실하거나, 완전히 다른 기대 답변을 요구하게 된다.

오라클 관리 스크립트는 매 빌드(Build)마다 단순한 Pass/Fail 채점을 넘어, **'고아 정답지(Orphaned Ground Truth)'**를 식별하는 작업(Garbage Collection)을 함께 수행해야 한다.
- API 엔드포인트가 사라지거나, RAG 지식 베이스에서 해당 약관 문서가 폐기(Deprecation)된 경우, 오라클은 정답지를 무기력한 `Fail`로 남겨두지 말고 `RETIRED` 상태로 마킹하여 테스트 스위트에서 기계적으로 분리(Archiving)해야 한다.

AI는 매일 새로운 데이터를 먹고 진화한다. 그 AI의 목줄을 쥐고 있는 결정론적 정답지 테스트 스위트 역시, 낡은 문서 더미로 남아있어서는 안 되며 비즈니스 로직과 함께 실시간으로 호흡하는 '살아있는 유기체'로 진화해야 한다.