“정답”이 결정적이지 않을 때 에이전트 행동 검증 (새 탭에서 열림)
자율 에이전트의 실행 과정은 환경, 타이밍, UI 상태에 따라 달라지므로 기존의 결정론적 테스트 방식만으로는 올바른 동작을 안정적으로 검증하기 어렵다. 에이전트가 실제 작업을 성공했는데도 실행 경로가 예상과 다르다는 이유로 테스트가 실패하는 ‘거짓 음성(false negative)’이 발생할 수 있다. 글은 고정된 스크립트 대신 필수 결과와 경로의 구조를 검증하는 독립적인 ‘Trust Layer’를 제안하며, 이를 통해 설명 가능하고 CI에 적합한 에이전트 검증을 구현할 수 있다고 주장한다.
에이전트 기반 검증에서 발생하는 문제
- Copilot Coding Agent가 UI, 브라우저, IDE 같은 실제 환경을 조작하면 실행 결과가 매번 동일하지 않다.
- 네트워크 지연으로 로딩 화면이 오래 표시되거나, 반대로 즉시 화면이 나타날 수 있다.
- 에이전트가 상황에 맞게 대기하고 작업을 완료했더라도, 테스트가 특정 시점이나 순서를 기대하면 실패한다.
- 주요 문제는 다음과 같다.
- 거짓 음성: 작업은 성공했지만 테스트가 실패로 판정한다.
- 취약한 인프라: 렌더링, 타이밍, 네트워크 같은 환경 잡음이 결과에 영향을 준다.
- 컴플라이언스 함정: 올바른 결과를 냈어도 사전에 기록된 에이전트 행동과 다르면 회귀로 오인된다.
- 에이전트의 정확성은 정해진 단계를 그대로 따르는 것이 아니라, 필수적인 결과를 안정적으로 달성하는지로 판단해야 한다.
기존 테스트 방식이 자율 에이전트에 맞지 않는 이유
- Assertion 기반 테스트
- 모든 검증 조건을 사람이 직접 작성해야 한다.
- 가능한 모든 대체 경로를 명세하기 어렵다.
- Record-and-replay
- 실행을 녹화된 순서와 비교하므로 사소한 타이밍·렌더링 변화에도 실패한다.
- 시각적 회귀 테스트
- 스크린샷 차이는 감지하지만, 해당 변화가 작업의 의미나 최종 결과에 영향을 주는지는 이해하지 못한다.
- ML 오라클
- 많은 학습 사례가 필요하다.
- 실패 판정의 근거를 설명하기 어려운 블랙박스가 되기 쉽다.
- 이 방식들은 모두 “정확성은 특정한 관찰 상태와 순서를 재현하는 것”이라는 공통 가정을 갖는다.
- 하지만 에이전트 시스템에서는 서로 다른 실행 경로가 동일한 올바른 결과로 이어질 수 있다.
필수 상태와 선택적 변형의 구분
에이전트 동작을 검증하려면 모든 상태를 동일하게 취급하지 말고, 성공에 반드시 필요한 요소와 환경에 따라 달라지는 요소를 분리해야 한다.
- 필수 상태(Essential states)
- 성공을 위해 반드시 도달해야 하는 상태다.
- 예를 들어 VS Code 검색 작업에서는 최종적으로 ‘검색 결과’ 화면에 도달해야 한다.
- 선택적 변형(Optional variations)
- 로딩 스피너, 일시적인 로딩 화면, 장식적 UI 변화처럼 성공 여부와 직접 관련 없는 상태다.
- 수렴 경로(Convergent paths)
- 단축키 사용, 메뉴 선택 등 서로 다른 절차가 동일한 최종 상태로 합쳐지는 경우다.
- 로딩 화면이 나타났는지는 중요하지 않지만, 검색 결과가 표시되었는지는 작업의 성공을 결정한다.
- 따라서 검증 대상은 실행 과정 전체가 아니라 성공을 보장하는 논리적 구조여야 한다.
Dominator 분석을 활용한 필수 행동 추출
필수 상태와 부수적 상태를 자동으로 구분하기 위해 컴파일러 이론의 Dominator 관계를 활용할 수 있다.
- 제어 흐름 그래프에서 노드 A가 노드 B를 지배(dominates)한다는 것은 시작점에서 B로 가는 모든 경로가 A를 거쳐야 한다는 뜻이다.
- 에이전트의 실행 기록을 그래프로 표현하면 다음을 식별할 수 있다.
- 모든 성공 경로에 공통으로 나타나는 필수 상태
- 일부 경로에만 등장하는 선택적 상태
- 서로 다른 실행 경로가 다시 합쳐지는 지점
- 이 분석을 통해 테스트가 확인해야 할 최소한의 성공 조건을 추출할 수 있다.
- 또한 “왜 이 실행을 성공 또는 실패로 판단했는가”를 그래프 구조로 설명할 수 있어, 단순한 블랙박스 판정보다 신뢰성이 높다.
스크립트가 아닌 실행 그래프로 모델링
- 자율 에이전트의 행동은 고정된 1차원 스크립트보다 여러 분기와 수렴 지점을 가진 그래프로 보는 편이 적합하다.
- 그래프 기반 모델은 특정 순서를 강제하지 않고, 서로 다른 행동 경로가 같은 필수 결과에 도달했는지를 평가할 수 있다.
- 이 접근은 에이전트의 자유로운 문제 해결 능력을 유지하면서도, CI 파이프라인에서는 반드시 충족되어야 할 결과를 엄격하게 검증할 수 있는 기반이 된다.
- 글에서 제안하는 Trust Layer는 이러한 실행 그래프를 바탕으로 우연한 환경 차이와 실제 기능 실패를 구분하는 역할을 한다.
실용적인 적용 방향
- 에이전트 테스트를 작성할 때 모든 중간 화면과 클릭 순서를 고정하지 않는다.
- 대신 다음을 명확히 정의한다.
- 반드시 도달해야 하는 최종 상태
- 작업 성공을 입증하는 핵심 데이터나 UI 상태
- 무시할 수 있는 로딩·렌더링 변화
- 허용 가능한 대체 실행 경로
- CI에서는 기록된 경로의 일치 여부보다 필수 상태의 도달 여부와 상태 간 논리적 관계를 검증하는 것이 적절하다.
- 이를 적용하면 환경 변화로 인한 불필요한 실패를 줄이고, 에이전트가 실제로 작업에 실패한 경우에는 더 정확하게 감지할 수 있다.