1. 순서 정하기
1) 쉬운 경우에서 어려운 경우로 진행
2) 예외적인 경우에서 정상인 경우로 진행
*암호 검사기 연습 예제 순서를 보면 쉬운 경우에서 어려운 경우로 진행 됨
1. 모든 규칙 충족: 단순 값(Ex. 상수)을 리턴값으로 넣어서 테스트 -> 새로운 추가 테스트 넣어서 에러 발생 시 -> 상수 제거 후 일반화
2. 1번 규칙 미충족, 나머지 규칙 충족
3. 2번 규칙 미충족, 나머지 규칙 충족
4. 3번 규칙 미충족, 나머지 규칙 충족
5. Null이거나 값이 없는 문자열 -> 유효하지 않은 값
6. 1번 규칙 충족, 나머지 규칙 미충족
7. 2번 규칙 충족, 나머지 규칙 미충족
8. 3번 규칙 충족, 나머지 규칙 미충족
9. 모든 규칙 미충족
2. 예외 상황을 먼저 테스트 해야하는 이유
- 다양한 예외 상황은 복잡한 if-els블록을 동반할 때가 많음
- 나중에 발견된 예외를 반영하려면 코드의 구조를 뒤집거나, 조건문을 중복해서 추가하는 상황 발생 -> 코드가 복잡해지면 버그 발생 가능성을 높임
3. 얼마만큼의 코드를 작성할 것인가?
TDD를 처음 접할 시 아래 단계에 따라 익히는 연습하기
1. 정해진 값 리턴
2. 값 비교를 이용해서 정해진 값 리턴 <- 새로운 경우의 값을 넣어 테스트 해보기
3. 다양한 테스트를 추가하면서 구현 일반화
4. 지속적인 리팩토링
1) 언제?
- 테스트 통과 후 리팩토링 진행
- 테스트 대상 코드의 리팩토링 구체적인 시점
- 상수를 변수로 변경했을 때, 변수명을 변경했을 때 -> 작은 것은 발견 시 바로 실행
- 메소드 추출과 같은 메소드 구조에 영향을 주는 것 -> 큰 틀에서 구현 흐름이 눈에 들어오기 시작한 뒤에 진행
*주의사항
- 구현 초기에는 전반적인 흐름을 몰라서 메소드 추출과 같은 리팩토링 진행 시 코드 구조를 잘못 잡을 가능성이 높고, 코드가 잘못되면 다음 테스트 통과 과정에서 코드가 복잡해지거나 어려워질 수 있음
- 리팩토링 후 문제가 있다고 판단되면 즉시 리팩토링을 취소해서 코드를 원상 복구 후에 진행하고 그 후에 코드 의미나 구조가 명확해질 때 다시 리팩토링 시도
2) 무엇?
- 코드 중복은 대표적인 리팩토링 대상
- 코드가 길어지면 메소드를 추출하고 메소드명으로 코드의 의미를 표현하자
3) 왜?
- 지속적인 리팩토링은 코드 가독성이 높아짐 -> 코드 분석이 쉬워짐, 수정 요청이 있을 시 파악 및 변경이 쉬움 -> 유지보수에 좋음
참고: 최범준의 테스트 주도 개발 시작하기
'Spring > Test' 카테고리의 다른 글
TDD, 테스트 코드의 구성 (0) | 2022.11.30 |
---|---|
TDD 테스트 주도 개발, 기능 명세와 설계 (0) | 2022.11.27 |
테스트 주도 개발 시작하기 - TDD 시작, TDD 암호 검사기 3 (0) | 2022.11.27 |
테스트 주도 개발 시작하기 - TDD 시작, TDD 암호 검사기 2 (0) | 2022.11.27 |
테스트 주도 개발 시작하기 - TDD 시작, TDD 암호 검사기 1 (0) | 2022.11.27 |