명세에서 독립적인 테스트 만들기
반례로 테스트의 검출 능력을 확인하고 기존 계약을 보호합니다.
진도 0%
레슨
- 요구사항에서 테스트 도출하기
제목 길이의 바로 아래·경계·바로 위 입력을 독립 기대 결과로 판정합니다.
- 완료 상태 전이 검사
미완료에서 완료로 바뀌는 전이와 완료 재요청의 결과를 모델로 검사합니다.
- 틀린 구현을 잡는 반례
길이 비교와 식별자 조회를 잘못 구현한 제공 변형을 JUnit 테스트로 검출합니다.
- 회귀 검사 범위 정하기
완료 API를 추가하고 생성·조회 계약의 회귀 테스트를 함께 실행합니다.
명세에서 독립적인 테스트 만들기 미션
m04-small-changes 미션 solution 전체를 이어받아 완료 HTTP 경계와 독립 테스트를 확장합니다. 기존 서비스의 complete 계약은 유지하고 새 명세·검출 fixture·HTTP 검사를 준비했습니다. starter에는 완료 응답 상태 결함과 반례 누락이 있습니다.
요구사항
- POST /tasks/{id}/complete는 본문 없이 200 Task를 반환합니다. 반복 완료도 같은 값이며 다른 항목·목록 순서·다음 번호를 보존합니다.
- 잘못된 ID는 400 INVALID_ID, 없는 양의 정수는 404 NOT_FOUND입니다. 큰 양의 정수도 없는 ID입니다. 경로 문자열 파싱과 서비스 입력 계약을 구분합니다.
- IndependentProbe.java에 구현의 출력 복사 없이 경계 길이·없는 ID·반복 완료의 명세 기대값을 작성합니다. Candidate.java와 DetectionTest.java를 바꾸지 않습니다.
- 기존 Java·MockMvc 검사와 Python 참조 모델을 보존합니다. 허용 변경은 TaskController.java·TaskApplication.java·IndependentProbe.java·review.md입니다.
- review.md에 각 변형의 구별 입력·명세 근거·테스트 이름·정상 통과와 검출 성공·회귀 범위·실제 실행 증거·미확인 범위를 기록합니다. 실제 AI 또는 제공 fixture 사용 여부도 적습니다.
완료 기준
- ./mvnw test (캐시 준비 환경 ./mvnw -o -q test)가 종료 코드 0이며 보고서 failures·errors·skipped가 0입니다.
- DetectionTest에서 정상 fixture는 통과하고 경계 비교·없는 ID·반복 완료 변형 세 개가 assertion 실패로 검출됩니다. 컴파일 오류나 업무 예외만으로 검출 성공을 인정하지 않습니다.
- CompletionHttpTest가 완료·재완료·다른 항목 보존·없는 ID 뒤 상태와 다음 번호·잘못된 ID·큰 양의 ID를 검사합니다. 기존 생성·조회·서비스 회귀도 통과합니다.
- python3 check_scope.py로 보호 해시와 허용 경로를 확인하고 bash check_reference.sh로 앞 Python 참조 모델을 재실행합니다.
- standalone MockMvc 범위만 확인하며 실제 소켓·전체 빈 구성·동시성·운영 배포는 미확인입니다. 문서의 근거 타당성은 사람이 검토합니다.
./mvnw test미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 요구사항과 실제 검증 근거를 연결해 설명합니다.
- 본인이 판단한 사항과 AI에 맡긴 사항을 구분합니다.
- 통과·실패·미확인 상태를 사실대로 기록합니다.