본문으로 건너뛰기
고급약 30분

레거시 자동화를 AI-First로 전환하기: 스크립트가 아니라 그 안의 지식을 옮긴다

수천 개의 Selenium 테스트를 버리지 않고 AI 기반 테스트로 옮기는 4단계 전환 프레임워크를 익힌다. 핵심은 코드 변환이 아니라 코드에 박혀 있는 비즈니스 의도를 복원하는 일이다.

  • #레거시자동화
  • #AIFirst
  • #테스트전환
  • #Selenium
  • #의도복원

개념

병목이 옮겨갔다 — 코드 생성에서 신뢰 생성으로

지난 20년간 소프트웨어 개발의 병목은 대체로 코드를 만드는 일 이었다. 기능 하나를 붙이려면 사람이 설계하고 쓰고 리뷰해야 했고, 그 속도가 곧 제품의 속도였다.

AI 지원 개발 도구가 이 전제를 흔들고 있다. 코드 생성이 빠르고 싸지면서 병목이 다른 곳으로 이동했다.

이제 어려운 것은 소프트웨어를 만드는 일이 아니라, 그것을 믿어도 된다고 말할 근거를 만드는 일 이다.

QA에게 이건 나쁜 소식이자 좋은 소식이다. 나쁜 소식은 변경량이 폭증한다는 것이고 — 우리가 검증해야 할 것이 훨씬 빨리 늘어난다 — 좋은 소식은 병목이 우리 쪽으로 왔다는 것 이다. 병목에 있는 직무는 사라지지 않는다. 다만 일하는 방식이 바뀐다.

이 레슨과 다음 레슨은 그 변화의 한 갈래를 다룬다. 이미 조직이 가지고 있는 자동화 자산 — 수백에서 수만 개에 이르는 Selenium·Playwright 스크립트 — 을 버리지 않고 AI 기반 실행 모델로 옮기는 방법 이다.

절차적 자동화의 구조적 한계

모듈 13에서 우리는 UI 자동화를 배웠다. 로케이터를 안정적으로 잡고, 대기 전략을 세우고, 페이지 객체로 중복을 줄였다. 그 기법들은 여전히 유효하다. 다만 이 접근 전체가 공유하는 성질이 하나 있다.

절차적 자동화는 구현 세부사항을 코드에 새긴다.

driver.findElement(By.id("submit-btn")).click();
wait.until(ExpectedConditions.visibilityOfElementLocated(By.css(".order-total")));
assertEquals("₩45,000", driver.findElement(By.css(".order-total")).getText());

이 세 줄은 무엇을 확인하려는지 를 말하지 않는다. 대신 어떻게 확인할지 만 말한다. 사람이 읽으면 "주문 총액이 맞는지 보는구나"라고 유추할 수 있지만, 그 유추는 코드 어디에도 적혀 있지 않다.

그래서 화면이 바뀌면 테스트가 깨진다. submit-btn이 checkout-submit이 되면, 의도는 하나도 변하지 않았는데 코드는 실패한다. 이 유지보수 비용은 오랫동안 감수할 만했다 — 애플리케이션의 변경 속도가 관리 가능했기 때문이다.

그 전제가 무너지는 중이다. AI가 생성하는 코드가 늘면 UI 변경의 양과 속도가 함께 는다. 유지보수 비용이 선형으로 늘어나는 구조에서, 변경량이 몇 배가 되면 자동화 팀은 따라가지 못한다.

기존 스위트는 부채인가 자산인가

여기서 조직이 흔히 저지르는 판단 실수가 있다. 낡은 자동화 스위트를 기술 부채로 규정하고 통째로 버리는 것 이다.

모듈 11(레슨 4)에서 자동화 부채를 배웠다. 거기서 우리는 "자동화 테스트가 많을수록 좋다"는 말이 틀렸고, 유지보수되지 않는 테스트는 자산이 아니라 부채라는 것을 확인했다. 그 결론은 지금도 맞다. 하지만 부채인 것은 스크립트이지, 그 안에 담긴 지식이 아니다.

성숙한 자동화 스위트 안에는 이런 것들이 들어 있다.

코드에 박혀 있는 것실제로는 무엇인가
어떤 워크플로를 테스트했는가조직이 중요하다고 판단한 고객 여정
어떤 값을 검증했는가문서에 없을 수도 있는 요구사항과 비즈니스 규칙
왜 이 순서로 실행했는가시스템 동작에 대한 운영 지식
왜 이 케이스가 존재하는가과거에 실제로 터진 결함의 역사
어떤 데이터로 테스트했는가경계·예외에 대한 도메인 전문성

자동화 테스트 하나하나는 누군가가 "이건 중요하다"고 내린 결정의 기록 이다. 검증문 하나하나는 요구사항을 붙잡아 둔 것이다. 이 관점에서 보면 Selenium 스위트는 테스트 프레임워크라기보다 조직 지식의 저장소 에 가깝다.

수천 개의 테스트를 지우는 것은 코드를 지우는 게 아니라 그 결정들의 기록을 지우는 것 이다. 그리고 그 지식을 다시 만들려면 처음 만들 때만큼, 혹은 그보다 더 오래 걸린다.

전환의 목표를 한 문장으로: 코드를 옮기는 것이 아니라, 코드에 갇힌 의도를 꺼내 다시 표현하는 것.

4단계 전환 프레임워크

이 관점 위에서 전환 과정은 네 단계로 구성된다.

  ① AI 준비도 분석        코드가 무엇에 의존하는지 전부 파악
        ↓
  ② AI와의 질의응답        코드 바깥에 있는 의도를 복원
        ↓
  ③ AI-First 테스트 정의 생성   절차 → 의도로 재표현
        ↓
  ④ 실행·검증 루프          돌려보고, 부족한 맥락을 되먹임
        ↑___________________________|

각 단계를 순서대로 본다.

1단계 — AI 준비도 분석: 테스트가 무엇에 기대고 있는가

전환을 시작하기 전에, AI(그리고 사람)가 이해해야 할 것은 테스트가 무엇을 하는가 만이 아니다. 무엇에 의존하는가 가 더 중요하다. 분석 대상은 테스트 스크립트만이 아니라 페이지 객체, 헬퍼 라이브러리, 셋업·티어다운, 픽스처, 설정 파일, 유틸리티 코드 전부다.

여기서 찾아야 할 것이 다섯 갈래다.

(1) 숨은 가정(Hidden Assumptions)

문서 어디에도 적혀 있지 않지만 테스트가 조용히 기대고 있는 것들이다.

  • 특정 환경 변수가 설정돼 있을 것
  • 데이터베이스에 미리 심어둔 데이터가 있을 것
  • 앞선 테스트가 만들어둔 공유 상태가 남아 있을 것
  • 특정 기능 플래그가 켜져(또는 꺼져) 있을 것
  • 야간 배치 작업이 이미 돌았을 것

이 목록은 자동화 엔지니어가 로컬에서 잘 되는데 CI에서만 깨지는 현상의 원인 목록이기도 하다. 오래된 스위트일수록 이런 가정이 많고, 대부분은 아무도 기억하지 못한다.

(2) 외부 종속성

API, 데이터베이스, 큐, 인증 시스템, 서드파티 서비스. 전환 시 이것들을 재사용 가능한 서비스로 바깥에 빼낼 수 있는가 를 평가한다. 모듈 4에서 배운 MCP 엔드포인트나 별도 유틸리티가 그 자리를 맡는다.

(3) 동적 런타임 데이터

테스트가 실행 중에 만들어내는 것들 — 사용자 계정, 토큰, 임시 레코드, 거래 번호. 이 흐름을 식별해두지 않으면 전환된 테스트는 첫 실행에서 "로그인할 계정이 없다"에서 멈춘다.

(4) 테스트 간 의존성

큰 스위트에는 숨은 실행 순서 요구가 흔하다. "테스트 C는 테스트 B가 만든 주문을 쓴다" 같은 것이다. 이런 관계를 찾아내 분리 가능한 지점 을 표시한다. 모듈 10에서 배운 테스트 독립성 원칙이 여기서 다시 나온다.

(5) 검증 로직

검증문이 UI에만 있는 것이 아니다. API 응답, DB 레코드, 로그, 리포트에 흩어져 있다. 이걸 모으는 것이 왜 중요한가? 검증문이 곧 "성공이란 무엇인가"의 정의 이기 때문이다. 전환 후에도 이 정의는 보존돼야 한다.

이 단계의 산출물은 AI 준비도 평가서와 전환 로드맵 이다.

2단계 — AI와의 질의응답: 코드 바깥의 지식 복원

전환 프로젝트에서 가장 놀라운 사실은 이것이다. 프레임워크 전체를 분석하고 나서도, 중요한 것들이 여전히 문서화돼 있지 않다.

  • 이 워크플로는 왜 하필 이 순서로 실행되는가?
  • 이 검증문은 어떤 비즈니스 규칙을 확인하는 것인가?
  • 어떤 조건에서 이 워크플로는 실패해야 마땅한가?
  • 이 대기 시간 5초는 무엇을 기다리는 것인가?

예전에는 이 답을 얻으려면 원래 작성한 엔지니어나 제품 담당자를 찾아다녀야 했다. 이미 퇴사했다면 답은 영영 사라졌다.

AI는 이 과정의 방향을 뒤집는다. 사람이 수년치 코드를 역설계하는 대신, AI가 분석한 뒤 "이 테스트를 확신 있게 전환하려면 무엇을 알아야 하는가" 라는 질문 목록을 만든다. 사람은 답만 하면 된다.

이 차이는 생각보다 크다. 빈칸을 찾는 일과 빈칸을 채우는 일은 난이도가 다르다. 실제로 대부분의 테스트는 놀랄 만큼 적은 설명만으로 의도가 복원된다. 정말로 아무도 모르는 소수의 테스트가 남는데, 그 사실 자체가 중요한 발견이다 — 아무도 이유를 모르는 테스트가 지금 CI에서 매일 돌고 있다는 뜻 이기 때문이다.

QA 실무 팁: 이 단계에서 나온 질문과 답변은 전환에만 쓰고 버리지 말고 테스트 문서로 남긴다. 전환을 하지 않기로 결정하더라도, 이 질의응답 만으로 스위트의 가치가 올라간다.

3단계 — AI-First 테스트 정의 생성

가정·종속성·의도가 확보되면 변환을 시작한다. 여기서 중요한 운영 원칙이 하나 있다. 전부를 한꺼번에 바꾸지 않는다.

AI에게 테스트를 복잡도 순으로 줄 세우게 하고, 단순한 것부터 전환한다. 복잡한 것은 사람 검토 대상으로 표시해 남긴다. 이렇게 하면 가치가 빨리 나오고 위험은 뒤로 미뤄진다 — 모듈 11에서 배운 점진적 자동화 전략 과 같은 사고다.

변환의 본질은 절차를 의도로 바꾸는 것 이다.

절차적 표현 (기존)의도 표현 (전환 후)
#submit-btn을 클릭한다주문을 확정한다
.order-total이 보일 때까지 기다린다주문 결과가 화면에 나타날 때까지 기다린다
텍스트가 정확히 ₩45,000인지 확인한다주문 총액이 장바구니 합계와 배송비를 반영한 값인지 확인한다

오른쪽이 왼쪽보다 구현 세부사항을 덜 담고 있다. 그런데 역설적으로 그래서 더 견고하다. 버튼 id가 바뀌어도 "주문을 확정한다"는 여전히 유효하기 때문이다.

여기서 나오는 산출물은 테스트 코드 가 아니라 구조화된 테스트 정의 다. 그 형식과 실행 방식은 다음 레슨에서 자세히 다룬다.

4단계 — 실행·검증 루프

정의를 만들었다고 전환이 끝난 게 아니다. 돌려보고, 검증하고, 다듬는 루프가 남아 있다.

런타임 데이터 준비 — 1단계에서 식별한 계정·토큰·시드 데이터를 재사용 가능한 서비스로 빼두고, 실행 시점에 주입한다.

전환 루프 — 첫 실행은 거의 항상 실패한다. 이때 중요한 것은 실패를 대하는 방식이다.

실패 발생
   ↓
AI가 증거(스크린샷·로그·실행 궤적)를 검토
   ↓
"무슨 정보가 없어서 판단하지 못했는가?"
   ↓
답을 테스트 정의에 보강
   ↓
재실행

이 루프의 성질을 놓치면 안 된다. 이 루프는 애플리케이션만 테스트하는 것이 아니라 전환 자체를 테스트한다. 실패가 앱의 결함인지, 정의의 불충분함인지를 매번 가르는 것 — 그 판단이 QA의 일이다. 모듈 18c(AI 교차검증)에서 배우는 태도가 여기서 그대로 필요하다.

그래서 이건 어디까지 믿을 만한가

이 프레임워크는 매력적이지만, 커리큘럼의 태도대로 한 겹 의심하고 넘어가자. 이 주장을 펴는 쪽은 대체로 도구를 파는 쪽이기도 하다.

의심할 지점 1 — "덜 적을수록 견고하다"는 어디까지 참인가. 의도 표현이 UI 변경에 강한 것은 맞다. 하지만 정밀함이 반드시 필요한 검증도 있다. 금액·세금·정산 금액이 "합리적으로 보이는가"로 판정되면 안 된다. 정확히 45,000원이어야 한다. 어디에 의도를 쓰고 어디에 정확한 값을 쓸지 가르는 것은 여전히 사람의 판단이다.

의심할 지점 2 — 비결정성이라는 대가. 런타임에 판단하는 실행 모델은 같은 입력에도 다른 경로를 밟을 수 있다. 모듈 18b(레슨 5)에서 배운 문제가 그대로 따라온다. 실패했을 때 재현이 어려운 테스트 는 디버깅 비용이 크다.

의심할 지점 3 — 비용 구조가 다르다. Selenium 테스트 1,000개를 매 커밋마다 도는 것과, 판단이 개입하는 실행을 매 커밋마다 도는 것은 비용이 다르다. 유지보수 시간은 줄어도 실행 비용은 올라갈 수 있다. 어느 쪽이 더 큰지는 조직마다 다르다.

의심할 지점 4 — 규제 도메인의 증거 요구. 모듈 25에서 봤듯 안전·인증이 걸린 도메인에서는 "이 요구사항을 이 방법으로 검증했다"는 추적 가능한 증거가 필요하다. 실행 경로가 매번 달라지는 검증을 그 증거로 제출하려면 별도의 설계가 필요하다.

결론적으로, 전환은 전부/전무의 문제가 아니다. 어떤 테스트를 의도 기반으로 옮기고, 어떤 테스트를 결정적 스크립트로 남길지 가르는 것 이 현실적인 목표다. 그 판단 기준은 다음 레슨에서 표로 정리한다.

ROI를 어떻게 말할 것인가

이런 전환을 제안할 때 경영진에게서 가장 자주 나오는 질문은 "토큰 비용이 얼마나 드나"이다. 그런데 그건 대개 가장 중요하지 않은 지표 다.

더 유용한 질문은 이것들이다.

질문어떻게 재는가
얼마나 많은 엔지니어링 시간이 사라졌는가로케이터 수정·오탐 조사에 쓴 시간(스프린트당)
얼마나 빨라졌는가UI 변경 후 자동화가 다시 초록이 되기까지 걸리는 시간
신뢰도가 올라갔는가오탐(false failure) 비율, 자동화 결과를 무시하는 빈도
커버리지가 넓어졌는가이전에는 비싸서 못 하던 검증(시각적 이상, UX 혼란)의 수

모듈 11(레슨 3)에서 배운 자동화 ROI 계산이 여기서 그대로 쓰인다. 다만 분모에 실행 비용(토큰) 이라는 항목이 새로 하나 붙을 뿐이다. 많은 팀에서 유지보수 절감만으로도 정당화된다 는 결과가 나오지만, 그건 계산해봐야 아는 것이지 전제할 것이 아니다.

이 레슨이 말하는 병목의 이동 을 우리 조직의 숫자로 확인하는 방법 — 리드타임을 작업·대기·재작업으로 쪼개고 암달의 법칙으로 개선 한계를 계산하는 것 — 은 레슨 13에서 다룬다. 전환 파일럿의 ROI를 말하기 전에 그 숫자부터 재 두면 기대치를 과장하지 않게 된다.

실무에서 왜 필요한가

자동화 스위트를 오래 운영해본 조직에는 반드시 "손대기 무서운 영역"이 있다. 아무도 이유를 모르지만 지우면 뭔가 터질 것 같은 테스트들. 이 레슨의 1·2단계는 전환을 하지 않더라도 그 자체로 가치가 있다. 숨은 가정과 복원된 의도를 문서로 남기는 순간, 그 영역은 더 이상 블랙박스가 아니다.

그리고 이 작업은 QA가 조직에서 위치를 바꾸는 계기가 되기도 한다. 자동화 엔지니어의 일이 "스크립트를 고치는 사람"에서 "조직이 무엇을 중요하게 여기는지 정의하고 관리하는 사람" 으로 이동하기 때문이다. 어떤 테스트가 어떤 비즈니스 규칙을 지키고 있는지 말할 수 있는 사람은 회의실에서 다른 무게를 갖는다.

현실적인 조언도 하나 붙인다. 전환은 전면 프로젝트로 시작하지 않는 게 좋다. 가장 유지보수 비용이 큰 스위트 하나(대개 UI 회귀 스위트)를 골라 20~30개 테스트로 파일럿을 돌리고, 절감 시간과 실행 비용을 실측한 뒤 확대 여부를 정한다. 그 실측값이 곧 다음 단계의 근거가 된다.

채용시장에서의 위치

"AI 시대에 테스트 자동화 엔지니어는 사라지는가"라는 질문이 업계에서 자주 나온다. 이 레슨의 내용은 그 질문에 부분적인 답을 준다.

사라지는 것은 직무가 아니라 작업이다. 로케이터를 고치고 대기 시간을 조정하는 작업의 비중은 줄어든다. 대신 늘어나는 것은 이런 일들이다.

  • 이 시스템에서 무엇이 중요한지 정의하는 일
  • "성공"과 "실패"의 기준을 판정 가능하게 만드는 일
  • AI가 만든 정의와 판정을 검증하는 일
  • 어디에 의도를 쓰고 어디에 정확한 값을 쓸지 가르는 일

개발 쪽에서 "코드만 짜는 개발자에서 제품 맥락을 이해하는 개발자로"라는 말이 나오는 것과 정확히 같은 이동이다. 테스트 쪽 버전은 이렇게 말할 수 있다 — 스크립트를 쓰는 사람에서, 무엇을 신뢰할 수 있는지 정의하는 사람으로.

채용 관점에서 실질적인 조언은 이것이다. "AI 도구를 써봤다"는 이제 변별력이 약하다. 변별력이 있는 것은 "기존 자산을 어떻게 다뤘는가" 다. 면접에서 이렇게 말할 수 있으면 층이 다르다 — "레거시 회귀 스위트 1,200개 중 유지보수 비용 상위 80개를 골라 의도 기반으로 전환했고, 전환 과정에서 아무도 이유를 모르던 테스트 14개를 발견해 그중 9개는 삭제, 5개는 규칙을 문서화했습니다."

실습 과제

과제 1 — 숨은 가정 발굴하기 (20분)

지금 접근 가능한 자동화 테스트를 3개 고른다(회사 코드가 없다면 오픈소스 프로젝트의 E2E 테스트도 좋다). 각각에 대해 본문의 다섯 갈래로 의존성을 적는다.

테스트숨은 가정외부 종속성동적 데이터다른 테스트 의존검증 위치

작성 후 스스로에게 묻는다 — 이 테스트를 완전히 새 환경에서 돌리려면 무엇을 먼저 준비해야 하는가? 그 목록에 있는데 위 표에 없는 항목이 있다면, 그게 바로 놓친 숨은 가정이다.

해설 보기

가장 자주 누락되는 것은 시간에 대한 가정 이다. "영업일 기준", "오늘 날짜로부터 7일 후", "월말 배치 이후" 같은 조건이 코드에 상수로 박혀 있는 경우가 많다. 이런 테스트는 특정 날짜에만 조용히 깨진다.

두 번째로 자주 나오는 것은 계정 상태에 대한 가정 이다. 테스트 계정이 이미 약관에 동의했고, 온보딩을 끝냈고, 결제 수단이 등록돼 있다는 가정. 새 환경에서 돌리면 첫 화면부터 다르다.

이 과제의 진짜 목적은 전환 준비가 아니라 우리 스위트가 얼마나 환경에 묶여 있는지 체감하는 것 이다. AI 전환을 하지 않더라도, 이 목록은 CI 안정화에 그대로 쓰인다.

과제 2 — AI에게 질문 목록을 만들게 하기 (20분)

과제 1의 테스트 중 하나를 골라, 코드 전체(테스트 + 페이지 객체 + 헬퍼)를 AI에게 주고 다음과 같이 요청한다.

이 테스트를 구현 세부사항 없이 의도 기반 테스트 정의 로 다시 쓰려고 한다. 지금 코드만으로는 알 수 없어서 사람에게 물어봐야 하는 것들을 질문 목록으로 만들어라. 각 질문에 대해 왜 그것을 알아야 하는지도 함께 적어라.

받은 질문들을 세 갈래로 분류한다.

  • 내가 바로 답할 수 있는 것
  • 팀에 물어봐야 답이 나오는 것
  • 아무도 모를 것 같은 것
해설 보기

세 번째 분류에 들어간 질문이 이 과제의 수확이다. 아무도 답할 수 없는 질문이 걸린 테스트는 지금 CI에서 매일 돌면서 누구도 그 의미를 모르는 상태로 초록/빨강을 내고 있다.

그 테스트를 어떻게 할지는 세 선택지가 있다 — (1) 실제 사용자 시나리오를 추적해 의도를 재구성한다, (2) 과거 결함 이력을 뒤져 왜 만들어졌는지 찾는다, (3) 지운다. 모듈 11 레슨 4의 기준으로 판단하면 된다. 중요한 것은 셋 중 무엇을 택하든 결정으로 남기는 것 이다. 방치가 가장 나쁘다.

과제 3 — 복잡도 랭킹과 전환 순서 정하기 (15분)

과제 1~2에서 다룬 테스트들을 포함해 10개 를 골라, 아래 기준으로 점수를 매기고 전환 순서를 정한다.

기준배점
유지보수 빈도(최근 6개월간 수정 횟수)높을수록 전환 우선
검증의 정밀성 요구(금액·규제 등)높을수록 전환 후순위
외부 종속성 개수많을수록 후순위
다른 테스트와의 결합도높을수록 후순위
실패 시 사업 영향높을수록 신중히

상위 3개와 하위 3개를 뽑고, 하위 3개에 대해서는 "전환하지 않고 그대로 두는 이유" 를 한 줄씩 적는다.

과제 4 — 전환 파일럿 계획서 쓰기 (20분)

상사에게 제출한다고 가정하고 한 장짜리 계획서를 쓴다. 다음을 포함한다.

  • 대상 스위트와 테스트 개수, 선정 근거
  • 4단계 각각에 걸리는 예상 기간
  • 측정할 지표 3개 와 현재 값(베이스라인)
  • 실패 판정 기준 — 어떤 결과가 나오면 확대하지 않고 중단할 것인가
  • 전환하지 않을 영역과 그 이유

'실패 판정 기준'을 반드시 넣는다. 모듈 4에서 배운 대로, 중단 조건이 없는 파일럿은 파일럿이 아니라 그냥 시작 이다.

자가 체크리스트

  • 소프트웨어 개발의 병목이 코드 생성에서 신뢰 생성으로 이동한다는 말의 의미를 QA 관점에서 설명할 수 있다
  • 절차적 자동화가 구현 세부사항을 코드에 새긴다는 것이 왜 유지보수 비용의 근원인지 말할 수 있다
  • 자동화 스위트에서 '부채인 것'과 '자산인 것'을 구분해 설명할 수 있다
  • 테스트 코드 안에 어떤 종류의 조직 지식이 담기는지 네 가지 이상 들 수 있다
  • 4단계 전환 프레임워크를 순서대로 설명할 수 있다
  • AI 준비도 분석에서 찾아야 할 다섯 갈래(숨은 가정·외부 종속성·동적 데이터·테스트 간 의존·검증 로직)를 열거할 수 있다
  • 2단계 질의응답이 '빈칸 찾기'와 '빈칸 채우기'의 역할을 어떻게 나누는지 설명할 수 있다
  • 전환을 복잡도 순으로 진행하는 이유를 위험 관리 관점에서 말할 수 있다
  • 실행·검증 루프가 앱뿐 아니라 전환 자체를 개선한다는 의미를 설명할 수 있다
  • 이 접근을 의심해야 할 지점 네 가지(정밀성·비결정성·비용·규제 증거)를 들 수 있다
  • 전환의 ROI를 토큰 비용이 아니라 어떤 지표로 말해야 하는지 설명할 수 있다

흔한 실수

  • 레거시 스위트를 통째로 부채로 규정하고 폐기한다. 부채는 스크립트이고 자산은 그 안의 지식이다. 지우기 전에 꺼내야 한다.
  • 전환을 전면 프로젝트로 시작한다. 유지보수 비용이 가장 큰 스위트 하나로 파일럿을 돌리고 실측한 뒤 확대한다.
  • 1단계를 건너뛰고 바로 변환한다. 숨은 가정을 모른 채 옮긴 테스트는 새 환경에서 첫 줄부터 실패하고, 원인 파악에 전환보다 긴 시간이 든다.
  • 질의응답 결과를 전환에만 쓰고 버린다. 복원된 의도는 그 자체로 문서 자산이다. 전환을 중단하더라도 남겨야 한다.
  • 모든 검증을 의도 표현으로 바꾼다. 금액·세율·정산처럼 정확한 값이 필요한 검증까지 "합리적으로 보이는가"로 바꾸면 테스트가 의미를 잃는다.
  • 첫 실행 실패를 앱의 결함으로만 해석한다. 정의가 불충분해서 실패한 것인지 앱이 잘못된 것인지 가르는 것이 이 단계의 핵심 작업이다.
  • ROI를 토큰 비용으로만 논의한다. 유지보수 시간, 복구 속도, 오탐 비율이 실제로 더 큰 항목이다. 다만 실행 비용도 분모에 반드시 넣는다.
  • 아무도 이유를 모르는 테스트를 그대로 둔다. 삭제든 문서화든 결정으로 남긴다. 방치된 테스트는 신뢰도를 갉아먹는다.

참고 자료

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

AI — 인공지능
사람이 규칙을 일일이 적지 않아도 데이터에서 규칙을 찾아 판단하는 소프트웨어.
QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
UI — 사용자 인터페이스
사람이 직접 보고 누르는 부분 — 화면, 버튼, 입력창.
CI — 지속적 통합
코드를 올릴 때마다 자동으로 합쳐서 빌드하고 시험까지 돌리는 방식.
API — 응용 프로그램 인터페이스
프로그램끼리 주고받는 창구. 사람이 화면 버튼을 누르는 대신, 프로그램이 정해진 주소로 요청을 보내 답을 받는다.
MCP — 모델 컨텍스트 프로토콜
인공지능이 외부 도구와 자료를 쓰도록 연결하는 약속.
DB — 데이터베이스
데이터를 넣어 두고 꺼내 쓰는 저장소. 보통 표 여러 개가 서로 연결된 형태다.
ROI — 투자 수익률
들인 돈과 시간에 비해 얼마를 돌려받았는지.
UX — 사용자 경험
쓰는 사람이 느끼는 전체 느낌 — 빠른가, 헷갈리지 않는가, 실수해도 되돌릴 수 있는가.
E2E — 끝에서 끝까지
화면 한 조각이 아니라 사용자가 밟는 전체 흐름을 처음부터 끝까지 한 번에 돌려 보는 시험.

용어집 전체 보기