AI 앱 테스트하기, 그리고 AI에게 앱 테스트 맡기기: 레이어, 도구, 그리고 비용
작성자 Sheela ·
테스트는 이제 두 방향으로 움직입니다. AI 기능을 출시한다면, 매번 조금씩 다른 답을 내는 대상을 위한 테스트가 필요합니다. 평범한 소프트웨어를 출시한다면, 이제 AI 도구들이 테스트를 대신 써 주고 유지해 주겠다고 나섭니다. 두 시장 모두 붐비고, 두 시장 모두 실제 청구액을 감추는 가격 구조를 갖고 있으며, 두 시장 모두 초록색 빌드처럼 보이는 실패 방식이 있습니다. 여기서는 레이어를 어떻게 나눠 생각할지, 우리가 리뷰한 16개 도구 중 어느 것이 어떤 일에 맞는지, 그리고 팀 리드가 근거를 댈 수 있는 첫 구성을 정리합니다.
지도: 두 가지 일, 일곱 개의 레이어
혼란의 대부분은 서로 다른 일을 하는 도구를 비교하는 데서 생깁니다. RAG 지표 라이브러리와 브라우저 에이전트는 둘 다 "AI 테스트"라고 불리지만, 어느 쪽도 다른 쪽을 대신하지 못합니다. 먼저 일을 나누세요.
AI 앱이나 에이전트를 테스트하는 일에는 네 개의 레이어가 있습니다.
- 평가(evals): 고정된 입력과 점수가 매겨지는 출력입니다. 답이 근거에서 벗어나지 않는지, 도구 호출이 올바른 함수로 가는지 봅니다. 이것이 유닛 테스트입니다.
- 대화 시뮬레이션: 두 번째 모델이 여러 턴에 걸쳐 사용자 역할을 합니다. 에이전트는 첫 턴이 아니라 네 번째 턴에서 실패하기 때문입니다.
- 레드팀 회귀 테스트: 생성된 공격(프롬프트 인젝션, 데이터 유출, 유해한 출력)을 변경할 때마다 다시 실행해, 막은 구멍이 계속 막혀 있도록 합니다.
- 운영 환경 채점: 같은 채점기를 실제 트레이스에 돌리고, 실제 사용자에게 나간 나쁜 답을 새 테스트 케이스로 만듭니다.
AI가 평범한 소프트웨어를 테스트하는 쪽에는 세 개가 있습니다.
- 백엔드 기록과 재생: 실제 API 호출과 그 뒤의 데이터베이스 응답을 기록해 테스트로 재생합니다.
- 프런트엔드 기록과 재생: 실제 세션을 기록하고 변경 전후의 화면 모습을 비교합니다.
- 브라우저 에이전트: 엔드투엔드 테스트를 계획하고, 작성하고, 실행하고, 고치는 AI입니다. 테스트는 여러분의 저장소나 업체의 클라우드에 있습니다.
AI 앱 테스트하기
평가: 가장 먼저 만들 레이어
promptfoo(4.5)는 LLM 테스트가 없는 상태에서 CI에 테스트가 도는 상태로 가는 가장 짧은 길입니다. 프롬프트, 공급자, 단언을 적은 YAML 파일 하나와 비교 표를 보여 주는 명령 하나면 됩니다. Node.js 22.22 이상이 필요합니다. 따져 볼 점이 하나 있습니다. 2026년 3월 9일 OpenAI가 promptfoo를 인수하겠다고 발표했고, 회사는 이제 자신이 OpenAI의 일부라고 밝힙니다. MIT 라이선스는 유지되고 다른 공급자도 지원하지만, 평가 대상인 업체가 채점기를 소유하는 것을 원치 않는 팀도 있을 것입니다.
DeepEval(4.2)은 기존 테스트 스위트 안에 평가를 넣고 싶은 Python 팀에 맞습니다. 테스트는 pytest처럼 생겼고, deepeval test run으로 실행하며, 충실도나 작업 완료율이 기준치 아래로 떨어지면 빌드를 실패시킵니다. 지표 카탈로그는 오픈소스 중에서도 가장 넓은 편이며 에이전트 계획과 음성까지 다룹니다.
Giskard(4.0)는 결정적 검사, LLM이 판정하는 검사, RAG 테스트 세트 생성, 레드팀 스캔을 하나의 Apache-2.0 라이브러리에 담았습니다. 버전 3은 새로 작성된 것으로 Python 3.12 이상이 필요하고, v2 사용자들이 의존하던 표 형식 모델 스캔은 빠졌습니다.
이미 쓰고 있을지도 모르는 두 가지도 있습니다. Ragas(3.4)는 RAG 평가의 용어(충실도, 컨텍스트 정밀도)를 정착시켰고 지금도 PyPI에서 한 달에 약 105만 회 다운로드되지만, 2026년 2월 24일 이후 아무도 커밋하지 않았습니다. 잘 돌아가면 계속 쓰되, 새 프로젝트는 이것으로 시작하지 마세요. UK AI Security Institute의 Inspect(4.4)는 각국 공공 AI 안전 연구소가 쓰는 평가 기반으로, 미리 만들어진 평가가 200개가 넘습니다. 모델 단위 벤치마크에는 맞는 도구지만, CI에서 프롬프트를 확인하려는 제품 팀에게는 필요 이상으로 큰 프레임워크입니다.
대화 시뮬레이션
단일 프롬프트 평가는 첫 질문에는 잘 답하다가 세 턴 뒤에 제약 조건을 잊어버리는 에이전트를 놓칩니다. LangWatch Scenario(3.9)는 에이전트와 직접 대화하며 이를 테스트합니다. 한 모델은 사용자 역할을 하고, 다른 모델은 매 턴을 판정하며, 전체가 평범한 pytest나 vitest 테스트로 실행됩니다. 첫 메시지를 고정하고, 모의 도구 결과를 주입하고, 특정 도구가 호출됐는지 단언한 뒤 나머지는 시뮬레이터에 맡길 수 있습니다. 음성 에이전트도 지원해 잡음 주입과 p50, p95 지연 시간을 잴 수 있습니다. 스타 약 1,000개에 열린 이슈 165개인 작은 프로젝트이며, 평가 라이브러리를 대신하기보다 그 옆에 두는 편이 맞습니다.
CI에서의 레드팀 회귀 테스트
출시 전에 한 번 돌리는 레드팀 스캔은 감사입니다. 풀 리퀘스트마다 다시 돌리면 회귀 테스트가 됩니다. promptfoo는 프롬프트 인젝션, 탈옥, 데이터 유출 공격을 생성합니다. 기본 설정에서는 이 생성이 promptfoo의 호스팅 서비스에서 이뤄지고, 무료 Community 등급은 레드팀 테스트를 한 달 10,000회 프로브로 제한합니다. Giskard의 스캔은 에이전트가 해야 할 일과 하지 말아야 할 일을 평이한 말로 적은 설명에서 공격 스위트를 만들고, 이를 OWASP LLM Top 10에 대응시킵니다. Scenario의 RedTeamAgent는 예의 바른 시뮬레이션 사용자를 여러 턴에 걸쳐 수위를 높이는 공격자로 바꿉니다. 단발성 적대적 프롬프트보다 실제 탈옥이 진행되는 방식에 가깝습니다.
운영 환경 채점
출시 전 테스트는 여러분이 떠올린 입력만 다룹니다. Braintrust(4.3)는 "마지막 변경으로 나아졌는가"라는 질문을 중심으로 만들어졌습니다. 실험, 데이터셋, 온라인 채점이 하나의 데이터 모델을 공유하므로 운영 환경의 나쁜 답이 몇 번의 클릭으로 테스트 케이스가 되고, 같은 채점기가 CI와 실제 트래픽 모두에서 돌아갑니다. Langfuse(4.6)는 오픈소스 쪽 선택지로, 트레이싱, 데이터셋, 실험, LLM 판정 채점을 무료 자체 호스팅판에서 쓸 수 있습니다. 대신 Postgres, ClickHouse, Redis, 객체 스토리지를 직접 운영해야 합니다.
AI에게 소프트웨어 테스트 맡기기
기록과 재생
Keploy(4.0)는 테스트가 없는 백엔드를 위한 도구입니다. 서비스를 keploy record 아래에서 실행하고 흐름을 한 번 훑으면, API 호출과 그로 인해 생긴 PostgreSQL, MySQL, MongoDB, Redis, Kafka, RabbitMQ 트래픽을 함께 기록합니다. keploy test는 요청을 재생하고 기록된 의존성을 모의 객체로 제공하므로 CI에 테스트용 데이터베이스가 필요 없습니다. Linux에서는 eBPF로 이를 처리하기 때문에 코드 변경은 필요 없지만 root 권한과 커널 5.10 이상이 필요합니다. macOS와 Windows 네이티브 빌드는 HTTP, MySQL, MongoDB만 안정적으로 재생합니다.
Meticulous(3.7)는 같은 일을 프런트엔드에서 합니다. 스테이징이나 프리뷰 빌드에 넣은 기록 스크립트가 세션과 그때 받은 백엔드 응답을 기록하고, 풀 리퀘스트마다 이전 코드와 새 코드에 각각 재생해 모습이 달라진 화면을 묶어 보여 줍니다. 테스트 코드를 쓰는 대신 시각적 변경 목록을 검토하는 셈입니다. 확인하는 것은 화면의 모습이지, 주문이 데이터베이스에 도착했는지가 아닙니다.
브라우저 에이전트
가장 붐비는 분야이며, 네 가지 선택지는 주로 테스트를 누가 소유하고 누가 실행하느냐에서 갈립니다.
Playwright Test Agents(4.1)는 Playwright에 무료로 포함됩니다. 플래너가 앱을 탐색해 Markdown 테스트 계획을 쓰고, 제너레이터가 그 계획을 저장소 안의 Playwright 테스트로 바꾸며, 힐러가 실패한 테스트를 하나씩 고칩니다. 이미 쓰고 있는 코딩 에이전트(VS Code, Claude Code, Codex, opencode) 안에서 실행되고, 브라우저를 조작할 때는 Playwright MCP(4.7)를 호출합니다. 결과물은 평범한 Playwright 코드이며 중간에 업체가 끼지 않습니다.
Momentic(4.0)에서는 테스트를 한 문장으로 쓰면 저장소에 YAML로 저장되고, 호스팅 브라우저, Android 에뮬레이터, iOS 시뮬레이터에서 실행됩니다. 버튼 위치가 바뀌면 자동 복구(auto-heal)가 다시 찾아내고 검토용 수정안을 제안합니다.
TestSprite(3.7)는 코딩 에이전트 뒤에 자리합니다. 코드나 요구사항 문서를 읽고, 프런트엔드와 백엔드 테스트를 쓰고, 자체 클라우드에서 실행한 뒤, 스크린샷, 페이지 구조, 수정 제안을 담은 실패 보고서를 돌려줍니다.
QA Wolf(4.1)는 도구가 아니라 일 자체를 팝니다. 이 회사의 에이전트가 Playwright와 Appium 테스트를 작성하고 실행하며, 실패가 낡은 테스트 때문인지 진짜 버그인지 판단하고, 버그는 영상과 함께 Linear나 Jira에 등록합니다. 관리형 요금제에서는 사람 QA 엔지니어가 모든 실패를 24시간 안에 확인합니다. 코드는 내보낼 수 있습니다.
AI가 생성하는 유닛 테스트에 대해 한 가지 경고가 있습니다. 예전에 CodiumAI라는 이름이었고 처음에는 테스트 생성으로 알려졌던 Qodo(3.8)는 올가을 테스트 생성 명령을 대체 기능 없이 폐기했고, 지금은 풀 리퀘스트 리뷰를 팝니다. 코딩 에이전트는 요청하면 기꺼이 유닛 테스트를 쓰지만, 코드를 보고 쓴 테스트는 코드가 해야 할 일이 아니라 코드가 하고 있는 일을 확인할 위험이 있습니다. 단언은 사람이 쓰거나 사람이 승인하게 하세요.
어떤 일에 어떤 도구인가
| 일 | 시작할 도구 | 우리 평점 | 비용 |
|---|---|---|---|
| CI에서 프롬프트와 RAG 회귀 테스트 | promptfoo 또는 DeepEval | 4.5 / 4.2 | 무료. 판정 모델과 모델 토큰 비용 발생 |
| 검사, RAG 질문, 레드팀 스캔을 하나의 Python 라이브러리로 | Giskard | 4.0 | 무료. 판정 토큰 비용, 기본값은 gpt-4o-mini |
| 여러 턴에 걸친 에이전트 동작 | LangWatch Scenario | 3.9 | 무료. 테스트당 턴마다 LLM 호출 2회 |
| 모델 단위 벤치마크와 안전성 평가 | Inspect | 4.4 | 무료. 토큰과 샌드박스 컴퓨팅 비용 |
| 운영 트래픽 채점(호스팅형) | Braintrust | 4.3 | 무료 등급 있음. Pro 월 249달러 |
| 직접 호스팅하는 트레이싱과 평가 | Langfuse | 4.6 | 자체 호스팅 무료. 클라우드 월 29달러부터 |
| 테스트가 없는 백엔드 | Keploy | 4.0 | CLI 무료. Pro 사용자당 월 19달러 |
| 변화가 잦은 프런트엔드의 시각적 회귀 | Meticulous | 3.7 | 비공개 |
| 직접 소유하는 엔드투엔드 테스트(이미 Playwright 사용) | Playwright Test Agents | 4.1 | 무료. 코딩 에이전트 토큰 비용 |
| 평이한 말로 쓰는 엔드투엔드 테스트(웹과 모바일) | Momentic | 4.0 | 무료 사용분 50달러. Scale 월 500달러 |
| 자기 작업을 브라우저에서 확인하는 코딩 에이전트 | TestSprite | 3.7 | 크레딧 방식, 월 19달러부터 |
| 엔드투엔드 테스트를 남에게 맡기기 | QA Wolf | 4.1 | 웹 실행 1회 1달러, 모바일 실행 1회 2달러 |
실제로 드는 비용
오픈소스 평가 도구는 거의 모두 설치는 무료이고, 실행하면 토큰 비용이 듭니다. DeepEval, Ragas, Giskard는 대부분의 지표를 LLM 판정 모델로 채점하므로 청구액은 대략 테스트 케이스 수 곱하기 지표 수 곱하기 실행 횟수입니다. 풀 리퀘스트마다 수백 개의 케이스를 돌리면 금세 쌓이고, Scenario는 매 턴 시뮬레이터와 판정 모델이 모두 말하므로 이를 두 배로 만듭니다. 전체 스위트는 매일 밤 돌리고, 풀 리퀘스트마다는 작은 스모크 세트만 돌리세요.
호스팅 플랫폼은 과금 단위가 다르고, 그 단위가 누구에게 맞는지를 결정합니다. Braintrust는 좌석이 아니라 데이터와 점수에 과금합니다. 월 249달러인 Pro에는 5 GB와 50,000개 점수가 포함되고, 그 뒤로는 점수 1,000개당 1.50달러이므로 운영 요청을 모두 판정하면 이 항목이 가장 빨리 커집니다. Langfuse가 직접 든 계산 예시에 따르면 Pro에서 500만 유닛은 월 551달러입니다. LangWatch 클라우드는 Growth에서 좌석당 월 29유로이고, DeepEval의 Confident AI는 Free 다음 단계가 월 200달러입니다.
브라우저 테스트에서는 단위가 실행 횟수나 단계 수입니다. QA Wolf가 직접 든 예시로, 웹 테스트 50개를 영업일마다 돌리면 월 약 1,083달러가 들고, 같은 테스트를 풀 리퀘스트마다 돌리면 몇 배로 늘어납니다. Momentic은 일반 단계 하나에 0.0125달러, AI가 판단해야 했던 단계에 0.025달러를 받습니다. 무료 50달러는 약 4,000단계에 해당하며, 잔액이 떨어지면 초과 과금 대신 테스트가 일시 중지됩니다. TestSprite의 Starter는 400크레딧에 19달러지만, 요금 페이지 어디에도 크레딧 하나로 무엇을 할 수 있는지 나와 있지 않습니다. Keploy의 Pro에는 테스트 실행 400회가 포함되고, 그 뒤로는 1회에 0.22달러입니다. Meticulous는 가격을 전혀 공개하지 않으며, 리뷰 사이트의 추정치는 연 약 2,000달러부터 월 600달러까지 다양합니다.
이 도구들이 오해를 부르는 지점
- 불안정한 판정 모델. 판정 모델도 모델이고, 모델처럼 실패합니다. DeepEval에서 가장 많이 논의된 이슈 중에는 판정 모델이 잘못된 JSON을 돌려줘 앱과 무관한 이유로 테스트가 실패하는 문제가 있습니다. 판정 모델이 바뀌면 점수도 달라지므로, 판정 모델 버전을 고정하고 그 업그레이드를 의존성 업그레이드처럼 다루세요. 비교하기 전에 기준선을 다시 돌리라는 뜻입니다.
- 비결정성. 앱도, 시뮬레이션 사용자도, 판정 모델도 흔들립니다. Scenario의
cache_key를 쓰면 시뮬레이션 사용자가 같은 말을 반복하지만, 프롬프트를 바꾸면 캐시가 무효가 됩니다. 빨간 샘플 하나로 빌드를 실패시키지 말고, 여러 번 실행한 통과율을 재고 떨어지면 경고를 보내세요. - 버그를 숨기는 자동 복구. 힐러의 일은 빨간 테스트를 초록으로 만드는 것인데, 때로는 빨강이 옳은 결과입니다. Playwright 문서에 따르면 힐러는 기능이 고장 났다고 판단해 테스트를 건너뛸 수 있고, 바쁜 팀은 이를 통과로 착각할 수 있습니다. Momentic은 수정을 몰래 적용하지 않고 검토용으로 제안하며, QA Wolf의 에이전트는 낡은 테스트와 진짜 버그를 구분하려 합니다. 무엇을 사든, 복구된 변경 사항은 모두 읽고 건너뛴 테스트는 실패로 세세요.
- 기록은 과거만 안다. Keploy와 Meticulous는 기록하는 동안 누군가 한 일만 다루며, 기록된 응답은 스키마가 바뀌면 낡게 됩니다. 재생 스위트가 초록이어도 아무도 클릭하지 않은 흐름에 대해서는 아무것도 말해 주지 않습니다.
- 데이터가 밖으로 나간다. TestSprite는 자체 클라우드에서 테스트를 돌리므로 앱의 페이지와 스크린샷이 그 회사 인프라를 거칩니다. Meticulous의 기록기는 키 입력과 네트워크 응답을 기록합니다. 비밀번호는 기본적으로 가려지지만, 그 밖의 개인 정보는 직접 작성한 규칙이 필요합니다. promptfoo, DeepEval, Ragas, Giskard는 텔레메트리가 기본으로 켜져 있고, 판정 모델을 호출할 때마다 테스트 프롬프트가 설정한 공급자에게 전송됩니다.
첫 구성
AI 기능 하나와 평범한 웹 앱을 운영하는 팀이라면, 다음 구성으로 토큰 비용을 조금 넘는 수준에서 위험의 대부분을 다룰 수 있습니다.
- 실제 사용자 질문에서 평가 케이스 30~50개를 promptfoo나 DeepEval로 작성하세요. 답의 성격이 허락하는 곳에서는 결정적 단언을 쓰고, 그렇지 않은 곳에서만 LLM 판정 모델을 씁니다. 프롬프트나 모델을 건드리는 풀 리퀘스트마다 실행하세요.
- 야간 빌드에 레드팀 스캔(promptfoo 또는 Giskard)을 추가하고, 통과해 버린 공격은 모두 영구 테스트 케이스로 만드세요.
- 기능이 에이전트라면, 예전에 잘못됐던 대화에 대해 Scenario 테스트를 3~5개 추가하고 시뮬레이션 사용자는 캐시해 두세요.
- 운영 트레이스를 Langfuse나 Braintrust로 보내고, 매주 나쁜 답 몇 개를 평가 세트로 옮기세요.
- 앱의 나머지 부분에서는 절대 깨지면 안 되는 다섯 가지 흐름(가입, 결제, 큰 고객이 의존하는 내보내기)을, 이미 Playwright를 쓰고 있다면 Playwright Test Agents로, 아니라면 Momentic 무료 등급으로 다루세요. 모든 계획과 복구된 테스트는 누군가 검토해야 합니다.
- 텔레메트리 끄기 설정(
PROMPTFOO_DISABLE_TELEMETRY,DEEPEVAL_TELEMETRY_OPT_OUT=1,DO_NOT_TRACK=1)은 첫 실행 뒤가 아니라 전에 해 두세요.
함정: 여기 있는 모든 레이어는 테스트 스위트를 싸게 만들어 주지만, 무엇이 올바른지는 어느 것도 정해 주지 않습니다. 쉬운 질문만 던지는 평가 세트도 통과하고, 단언을 고쳐 쓰는 힐러도 통과하고, 지난달 트래픽의 재생도 통과합니다. 테스트에서 비싼 부분은 늘 무엇을 확인할지 정하는 일이었고, 그 일은 여전히 팀의 몫입니다.
우리의 판단: 테스트에 쓰는 AI는 손이 빠른 신입처럼 대하세요. 케이스를 쓰고, 실행하고, 수정안을 내게 하되, 무엇이 참이어야 하는지의 목록과 AI가 바꾼 테스트의 승인은 사람이 쥐고 있어야 합니다. 호스팅 서비스에 돈을 내는 것은 그 청구액이 팀의 누군가가 무료 버전을 살려 두는 데 쓰는 시간보다 작아질 때면 충분합니다.