TDD 간략한 개념 정리
이력서 및 포트폴리오 제작하며 이곳저곳 인터넷을 떠돌아 다니던 중, 대부분의 개발자들이 공통적으로 말하는 부분이 있었다.
테스트 코드가 중요하다.
그래서 오늘은 전공시간때 배웠던 TDD의 개념과 적용 방법 을 다시 한번 정리해보기로 했다.
1. 그래서, TDD가 뭐였더라?
- TDD(Test Driven Development)
- 반복 테스트를 이용한 소프트웨어 개발 방법론.
- 작은 단위의 테스트 케이스를 작성하고,
- 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.
2. TDD 개발주기
- <Red>단계 : 실패하는 테스트 코드를 작성.
- <Green>단계 : 테스트 코드를 성공시키기 위한 실제 코드를 작성.
- <Yellow>단계 : 중복 코드 제거, 일반화 등의 리팩토링을 수행한다.
3. Unit Test의 5원칙 (F.I.R.S.T)
- F - Fast. 테스트 코드의 실행은 빨라야 한다.
- I - Independent. 독립적으로 실행이 되어야 한다.
- R - Repeatable. 반복 가능해야 한다.
- S - Self Validating. 메뉴얼 없이 테스트 코드만으로 성공/실패 여부를 알 수 있어야 한다.
- T - Timely. 바로 사용 가능해야 한다.
4. Give - When - Then 패턴
- Give - When - Then 패턴은
[준비 - 실행 - 검증]의 패턴으로 테스트 코드를 작성하는것을 의미한다.- Give. 테스트 준비를 위한 변수, 입력 값을 정의.
- When. 실제 액션을 하는 테스트의 단계.
가급적 하나의 메서드만 실행하는 것이 바람직하다. - Then. 테스트를 검증하는 과정.
예상한 값, 실제 실행을 통해 나온 값을 비교 검증한다.
5. 관련 라이브러리
- Java
- JUnit
- Spring Test & Spring Boot Test
- AssertJ
- Hamcrest
- Mockito
- JSONassert
- JsonPath
- Python
- unittest