-
Taming Testing of AI apps by Alex Soto @ Spring I/O 2025Spring/Spring IO 2025. 9. 20. 19:54
Taming Testing of AI apps by Alex Soto @ Spring I/O 2025
https://www.youtube.com/watch?v=7BWsvHDC-d8
Alex Soto가 Spring I/O 2025에서 발표한 "AI 앱 테스트 길들이기(Taming Testing of AI apps)" 세션과 관련 슬라이드에 대한 자세한 내용은 다음과 같습니다.
이 발표의 핵심은 AI 기반 애플리케이션, 특히 대규모 언어 모델(LLM)을 활용하는 앱을 기존 소프트웨어와 같이 안정적이고 결정론적으로 테스트하는 데 따르는 고유한 문제점과 이를 해결하기 위한 실용적인 3단계 접근 방식을 제시하는 것입니다.
1. AI 앱 테스트의 주요 난제
발표자는 LLM을 사용하는 AI 앱 테스트가 어려운 두 가지 핵심적인 이유를 제시합니다.
- 비결정론적 응답 (Non-Deterministic Responses):
- LLM의 응답은 **설명 불가능(Non-explainable), 예측 불가능(Non-predictable), 반복 불가능(Non-repeatable)**합니다. 예를 들어, 한 번은 "고양이"라고 대답하고 다음번에는 "새끼 고양이"라고 대답할 수 있으며, 이는 정확히 일치하는 테스트를 어렵게 만듭니다.
- 환각 현상 (Hallucinations):
- 모델이 사실과 다르거나, 입력/출력 간에 일관성이 없거나, 상식에 어긋나는 부정확한 응답을 생성하는 현상입니다. 발표자는 챗봇이 고객에게 $1에 자동차를 제공하는 법적 구속력 있는 제안을 한 실제 사례를 들어 테스트의 중요성을 강조합니다.
- LLM은 마치 "기자"처럼 항상 대답을 시도하며, 이는 잘못된 응답을 유발할 수 있습니다.
2. AI 앱 테스트 길들이기 3단계 접근법
발표자는 AI 앱 테스트를 성공적으로 길들이기 위해 개발자가 작성하는 빠른 테스트부터 운영 환경에서의 검증까지 아우르는 3단계 계층적 접근법을 제안합니다.
🥇 Level 1: 지속적 통합(CI) 테스트 (개발자 중심, 빠름)
개발자가 로컬이나 CI/CD 파이프라인에서 실행하는 빠르고 자동화된 테스트 기법입니다.
기법 설명 온도 낮추기 (Temperature Down) LLM의 창의성을 제어하는 파라미터인 온도를 0.0에서 0.4 사이로 낮춰 모델의 응답을 더 예측 가능하고 결정론적으로 만듭니다. 구조화된 출력 (Structured Output) 모델에게 응답을 JSON 포맷 및 특정 JSON 스키마에 맞춰 반환하도록 요청하여, 테스트하기 쉬운 예측 가능한 구조를 갖게 합니다. 의미적 비교 (Semantic Comparison) 구조화할 수 없는 자연어 텍스트 응답을 테스트할 때, 문자열 일치가 아닌 의미적 유사성을 비교합니다. (핵심) 벡터 임베딩 (Vector Embeddings) 가장 권장되는 방법으로, 문장을 다차원 벡터로 변환하여 벡터 간의 거리를 측정함으로써 의미론적 유사성(Semantically understand)을 비교합니다. (Rouge나 Levenshtein distance 같은 다른 알고리즘보다 정확도가 높습니다.) Sheets로 내보내기🥈 Level 2: 평가 (Evaluation) (행동 중심, 느림)
전통적인 **행동 주도 개발(BDD)**과 유사하게 비즈니스 관점에서 LLM의 성능을 검증하는 단계입니다.
- 시나리오 및 기능 문서화: AI가 수행해야 할 기능과 시나리오(예: 존재하는 사용자 정보 검색, 존재하지 않는 사용자 정보 검색 등)를 정의합니다.
- 데이터셋 생성: 테스트 시나리오를 검증하기 위한 데이터셋을 수동으로 만들거나, 다른 모델을 사용하여 **합성 데이터(Synthetic Data)**를 생성합니다.
- LLM Judge 및 Ranker: 사람이 수동으로 검증하여 에러를 수정(모델 재학습, RAG 개선 등)한 후, 학습된 LLM Judge나 더 가벼운 Ranker 모델을 사용하여 모델의 응답이 기대하는 바와 일치하는지 자동으로 점수를 매기고 평가합니다.
🥉 Level 3: AB 테스트 (Testing in Production)
AI 시스템의 비결정론적 특성상, 최종적으로는 운영 환경에서 테스트가 필요합니다.
- AB 테스트 실행: 새 모델을 출시할 때 기존 모델과 두 모델을 동시에 실행하고 어떤 모델이 더 나은 응답을 주는지 비교합니다.
- 모니터링 툴 사용: Langfuse와 같은 모니터링 툴을 사용하여 AI 애플리케이션의 입출력 및 성능을 관찰하고 LLM Judge를 구성하여 통계를 얻습니다.
- 사용자 피드백 수집: "이 답변이 유용했나요?"와 같은 피드백 메커니즘을 사용자에게 제공하여 모델 개선에 활용합니다.
3. AI를 활용한 테스트 작성
발표자는 AI 모델이 스스로 테스트를 작성하는 데 도움을 줄 수 있음을 시연했습니다.
- UI 테스트 자동화: LLM에게 "웹사이트로 이동하여 이 링크를 클릭하고, 양식을 사실적인 데이터로 채운 다음, 결과가 테이블에 표시되는지 확인하라"와 같은 자연어 테스트 시나리오를 제공했습니다.
- 모델은 요청에 따라 합성 데이터를 생성하고, Playwright와 같은 도구를 사용하여 실제 UI 테스트를 실행하고 결과를 검증함으로써 개발자가 테스트 코드를 작성하는 부담을 줄일 수 있음을 보여주었습니다.
4. 발표자의 최종 조언
- AI 앱은 결정론적인 기존 소프트웨어 위에 AI 기능이라는 체리가 올라간 형태임을 인지해야 합니다. 핵심 비즈니스 로직은 전통적인 방식으로 철저히 테스트해야 합니다.
- 데이터 과학자를 테스트 프로세스에 초기부터 참여시켜 모델에 대한 이해를 높여야 합니다.
- 모델에게 "고맙다"고 말하지 마십시오. (모델이 "천만에요"라고 응답하는 데 물 3병이 낭비된다는 유머러스한 조언입니다.)
AI chat 이 쉐보레 자동차를 $1 에 제안

'Spring > Spring IO' 카테고리의 다른 글
- 비결정론적 응답 (Non-Deterministic Responses):