Lewis's Tech Keep
[우아한 테크캠프][PRO][3기] 3주차 정리 - 1 본문
ATDD 프로젝트
ATDD?
ATDD = 인수테스트 주도 개발
실패하는 인수 테스트 작성 -> TDD 사이클 (유닛 테스트 실패 -> 유닛 테스트 성공 -> 리팩토링)
-> 성공하는 인수테스트 작성 -> 리팩토링 -> 실패하는 인수 테스트 작성
ATDD 시 고려사항
- 개발자만이 참여하는 테스트가 아니다.
- 기획, 개발 및 다른 관점을 가진 팀원들이 같이 참여하는 테스트라 생각하고
시나리오를 작성, 코드를 작성할 것
- 기획, 개발 및 다른 관점을 가진 팀원들이 같이 참여하는 테스트라 생각하고
- 인수 조건 (인수 테스트가 충족해야하는 조건)
- 여러 포맷이 존재함 (이번 시도는 시나리오 기반 표현 방식)
- 시나리오의 단위 고려할 것 (나누는 단위에 따라 달라짐)
- 인수 테스트
- 인수 조건을 검증하는 테스트
- 실제환경과 유사하게 테스트 환경을 구성
- 문서화
- Spring Rest Docs 활용해 API 문서화
- 문서화를 위해서 Mock 서버 & DTO 정의가 필요
레거시 코드 리팩터링
- 리팩터링 방법
- 인수 테스트를 작성하여 기존에 구현된 기능 보호
- 파악 가능한 부분부터 단위테스트를 만들어 기능 검증
- 인수 테스트로 보호하고 이후 리팩터링을 진행
- 메서드 분리
- 인수 테스트 작성 후 메서드 분리 시 사이트 이펙트에 대한 피드백을 바로 받을 수 있음
- 기능 구현하다가 꼬여도 이전 테스트 성공 시점으로 바로 리셋 가능
- 작은 단위로 메서드 분리
- 단위 테스트 작성
- 단위가 작아짐 -> 역할이 줄어듬 -> 검증 대상 명확하게 보이게 됨
- 단위 테스트 하기 쉬운 코드로 변경됨
인수 테스트
- 사용자의 관점(비개발자)에서 설계 및 작동을 생각해야 함
- 인수 조건에 기술용어 사용하지 않고 개발자가 아닌 사용자들이 이해할 수 있는 단어 사용
- 요청 응답 기준 모든 부분 검증 전구간 테스트
- 세부 구현에 영향 받지 않는 Black Box 테스트
인수 테스트 팁
- Feature 기준으로 테스트 클래스 나누기
- Scenario 기준으로 테스트 메서드 나누기
- 하나의 Feature 내부에 있는 Scenario는 같은 테스트 픽스쳐를 공유하는 것을 추천
- 다른 인수 테스트에서 재사용 가능
추가로 해 볼 것
- BDD (Cucumber)
'Java > 우아한 테크캠프 정리' 카테고리의 다른 글
[우아한 테크캠프][PRO][3기] 3주차 정리 - 2 (0) | 2021.12.02 |
---|---|
[우아한 테크캠프][PRO][3기] 2주차 정리 - 2 (0) | 2021.11.20 |
[우아한 테크캠프][PRO][3기] 2주차 정리 - 1 (0) | 2021.11.13 |
[우아한 테크캠프][PRO][3기] 1주차 정리 - 4 (0) | 2021.11.10 |
[우아한 테크캠프][PRO][3기] 1주차 정리 - 3 (0) | 2021.11.09 |
Comments