TDD와 단위테스트코드
TDD를 작성할 일이 없어 단위테스트와 같은 의미로 알고 있었는데
"스프링부트와 AWS로 혼자 구현하는 웹서비스" 책에서 읽다가 차이점을 알게 되었습니다.
책의 내용을 정리하자면...
TDD
- 테스트가 주도하는 개발을 의미
- 테스트 코드를 먼저 작성하는 것부터 시작
- RED: 항상 실패하는 테스트를 먼저 작성
- GREEN: 테스트가 통과하는 프로덕션 코드 작성
- REFACTOR: 테스트가 통과하면 프로덕션 코드를 리팩토링
단위 테스트
- TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미
- TDD와 달리 테스트 코드를 꼭 먼저 작성해야 하는 것도 아니고, 리팩토링도 포함되지 않습니다.
- 순수한 테스트 코드 작성을 의미
단위 테스트 코드 작성이유
- 단위 테스트는 개발단계 초기 문제를 발견하게 도와줍니다.
- 개발자가 나중에 코드 리팩토링이나 라이브러리 업그리에드 등에서 기존 기능이 올바르게 작동하는지 확인가능합니다.
- 기능에 대한 불확실성을 감소 시키는데 도움을 줍니다.
- 시스템에 대한 실제 문서를 제공합니다. 단위 테스트 자체가 문서로 사용이 가능합니다.
현재 저의 개발 방식을 생각해보면
1. 소스코드 작성
2. 스프링부트 실행
3. API 호출
4. 호출 결과 확인 (sysout 이나 클라이언트 콘솔창에서 확인)
5. 원하는 결과가 아닐 경우 코드 수정
- 위와 같은 방식의 문제는 코드 수정시마다 재실행을 해야 한다는점 입니다.
- 컴퓨터의 성능에 따라 시간이 걸리겠지만 짧아도 7초 길면 1분 가까이 시간이 걸리곤 합니다.
- 출력문을 통해서 직접 검증해야하는 문제점을 테스트 코드를 통하여 자동검증이 가능하게 됩니다.
- 새로운 기능이 추가시 기존 기능과의 동작의 원활함을 보장 해줄 수 있습니다.
테스트 코드 작성을 도와주는 프레임워크
- xUnit : 가장 대중적인 프레임워크
- JUnit : JAVA
- DBUnit : DB
- CppUnit : C++
- NUnit : .net