Specnote
문서 홈으로
핵심 개념
Markdown 원문

검증은 어떻게 작동하나요

"AI가 직접 눌러 본다"는 게 실제로 어떻게 돌아가는지 궁금하시죠. 실제 브라우저가 시나리오를 재생하고, 통과·실패를 어떻게 가르고, 결과를 어떻게 남기는지 설명할게요.

실제 브라우저가 직접 눌러봐요

"AI가 직접 눌러 본다"는 말이 실제로는 이런 뜻입니다. Specnote는 진짜 웹 브라우저를 하나 띄워서, 테스트를 처음부터 끝까지 사람처럼 재생합니다. 주소를 열고, 칸에 글자를 입력하고, 버튼을 누르고, 다음 화면으로 넘어가요. 이 과정을 **처음부터 끝까지 재생(full-replay)**이라고 부릅니다.

여기서 중요한 건 테스트 코드를 한 줄도 작성할 필요가 없다는 점이에요. 보통 자동 테스트를 만들려면 개발자가 별도의 코드를 짜야 하는데, Specnote는 정리해 둔 테스트의 단계를 그대로 따라가기 때문에 그럴 필요가 없습니다. 테스트가 곧 대본인 셈이에요.

브라우저는 사람이 보는 화면과 똑같은 환경에서 움직입니다. 그래서 "내 눈으로 직접 해 봤을 때"와 가장 가까운 결과를 얻을 수 있어요.

통과·실패는 이렇게 가려요

테스트 안의 모든 단계가 똑같은 무게를 갖는 건 아닙니다. 판정의 기준이 되는 단계는 사람이 직접 입력하거나 누르는 단계예요. 이메일을 적고, 비밀번호를 넣고, 로그인 버튼을 누르는 — 사용자가 실제로 하는 행동이죠. 이런 단계가 전부 성공하면 통과입니다.

반면 다음과 같은 단계는 통과·실패를 가르는 셈에서 빠집니다.

  • 화면 이동 — 다음 페이지로 넘어가는 것 같은 흐름.
  • 시스템 처리 — 화면 뒤에서 자동으로 도는 작업.
  • 뒷정리 — 끝나고 정돈하는 단계.
  • 외부 서비스 의존 — Specnote 밖의 다른 서비스에 기대는 단계.

이런 단계는 사용자가 직접 좌우할 수 없는 부분이라, 여기서 막히더라도 테스트 전체를 실패로 떨어뜨리지 않습니다. 예를 들어 결제 단계에서 외부 결제사 응답이 잠깐 늦더라도, 그건 우리 화면의 문제가 아니라 바깥 사정이기 때문에 테스트 자체를 실패로 보지는 않아요.

판정은 통과 아니면 실패, 둘 중 하나로만 나뉩니다. 애매한 중간 판정은 없어요. 혹시 자동 판정이 놓친 부분이 있어 직접 눈으로 확인했다면, **손으로 "통과 처리"**를 해 둘 수도 있습니다.

무엇을 성공으로 볼지는 사람이 정해요

"이 단계가 다 되면 통과"라는 이 기준을 통과 조건이라고 불러요. Specnote는 이 통과 조건을 마음대로 확정하지 않습니다. 테스트를 만들거나 다듬을 때 자동으로 초안을 잡아 주긴 하지만, "이걸 기준으로 봅니다" 하고 확정하는 승인은 사람만 할 수 있어요. 연결한 AI에게도 이 승인 권한은 주지 않습니다. 무엇을 합격으로 볼지는 사람이 정한다는 원칙이에요.

같은 원칙이 검증을 시작하는 길목에도 있어요. 새로 검증 묶음을 시작할 때는 AI가 "무엇을 어떤 규칙으로 검증할지" 기획 검토안(PRD)을 만들어 오고, 그걸 사람이 승인한 뒤에야 첫 검증이 돌아갑니다. 정리하면 Specnote에서 사람만 내리는 결정은 세 가지예요 — 검증 검토안(PRD) 승인, 통과 조건 승인, 그리고 CI 자동 검증에 넣고 뺄지 정하기. 나머지는 다 AI에게 맡길 수 있지만, 이 세 가지는 사람 몫으로 남겨 두었어요.

한 번 승인해 두면, 이후 코드가 조금 바뀌어도 그 기준이 그대로 유지돼요. 그러다 승인해 둔 통과 조건과 지금 테스트가 서로 어긋나면 — 예를 들어 단계 순서가 달라졌거나 확인 항목이 바뀌면 — Specnote가 "승인과 조건이 달라졌어요" 하고 알려 주고, 다시 승인할 수 있게 해 줍니다. 그래서 "언제 정한 기준으로 통과라고 하는 건지"가 늘 분명하게 남아요.

화면이 바뀌면 스스로 따라가요

만드는 동안 화면은 계속 조금씩 바뀝니다. 버튼 위치가 옮겨지거나, 이름이 살짝 달라지죠. 이럴 때 예전 같으면 테스트가 버튼을 못 찾아 실패했겠지만, Specnote의 테스트는 작은 변화 정도는 스스로 맞춰 따라갑니다. 옮겨진 버튼을 다시 찾아 자기 단계를 고쳐 잡아요. 이걸 자동 복구라고 불러요.

단, "무엇을 확인하려는지"라는 의도 자체가 바뀌면 얘기가 달라요. 그건 사실상 다른 테스트라서, 기존 것을 물러나게 하고 새 테스트로 갈아 끼웁니다. 이때는 통과 조건을 새로 승인해 달라고 알려 줘요. 그래서 "겉모습만 바뀐 것"과 "본질이 바뀐 것"을 구분해 다룹니다.

잘 안 풀릴 때 — 자동 재시도

한 번에 깔끔하게 안 되는 경우가 있어요. 화면이 조금 늦게 뜨거나, 버튼을 정확히 찾지 못하는 상황이죠. 이럴 때 Specnote는 바로 실패로 처리하지 않고 스스로 다시 시도합니다. 단계마다 방법을 바꿔 가며 최대 세 번까지 손을 써 보는 3단 자동 복구예요.

사람으로 치면 "어, 안 눌리네? 잠깐 기다렸다가 다시 해 볼까?" 하고 한 번 더 해 보는 것과 같습니다. 이렇게 해서 진짜 문제인지, 잠깐의 일시적인 걸림이었는지를 가려 줘요. 그래도 끝내 안 되면 그때 실패로 남깁니다.

단계가 진짜 맞는지 먼저 확인해요

검증을 본격적으로 돌리기 전에, Specnote는 한 가지를 먼저 점검합니다. 테스트의 단계가 지금 화면과 실제로 맞는지 대조하는 일이에요. 이걸 단계 확정이라고 부릅니다.

예를 들어 "이메일 입력" 단계가 적혀 있는데, 화면에 그 입력 칸이 정말 있는지 먼저 비춰 봅니다. 맞으면 그 단계를 "확정"으로 표시하고, 위치가 바뀌었거나 찾지 못하면 "확인이 필요한" 단계로 따로 알려 줘요.

좋은 점은 이 단계 확정 과정이 크레딧을 쓰지 않는다는 거예요. 검증을 본격적으로 돌리기 전에 미리 정리해 두는 안전 점검이라, 부담 없이 거칠 수 있습니다. 미리 한 번 맞춰 보고 들어가면, 정작 검증을 돌렸을 때 엉뚱한 곳에서 헛걸음하는 일이 줄어듭니다.

영상과 스크린샷으로 남아요

검증을 돌릴 때마다 두 가지가 함께 저장됩니다.

  • 화면 영상 — 브라우저가 테스트를 재생하는 모습을 처음부터 끝까지 담은 영상(.webm 형식)이에요. 어디서 어떻게 진행됐는지를 그대로 되돌려 볼 수 있습니다.
  • 단계별 스크린샷 — 각 단계에서 화면이 어떤 모습이었는지를 사진으로 남겨요.

그래서 "통과/실패"라는 결과 한 줄에서 끝나지 않습니다. 실패했다면 영상과 스크린샷을 열어 어느 장면에서 무엇이 어긋났는지 눈으로 직접 확인할 수 있어요.

실패한 테스트는 수정 리포트로 정리됩니다. 무엇이 어긋났는지 원인을 모아, 코드를 고치는 AI에게 그대로 넘길 수 있는 형태예요. Specnote가 코드를 직접 손대는 건 아니고, "여기를 이렇게 고쳐야 한다"는 정리를 만들어 주는 역할입니다.

검증 결과를 어떻게 읽고 활용하는지는 검증 실행과 결과 보기에서 더 자세히 다룹니다. 용어가 헷갈린다면 핵심 용어 한눈에로 돌아가 찾아보세요.