1. TDD란?
TDD(Test-Driven Development)는 말 그대로
"테스트 주도 개발: 테스트가 개발을 이끌어 나간다."라고 정의할 수 있다.
메소드 나 함수 같은 프로그램 모듈을 작성할 때
‘작성 종료조건을 먼저 정해놓고 코딩을 시작 한다’는 의미로 받아들이면 편하다.
- RED : 항상 실패하는 테스트를 먼저 작성
- GREEN : 테스트에 통과하는 프로덕션 코드 작성
- REFACTOR : 테스트가 통과하면 프로덕션 코드를 리팩토링
(반복되는 코드, 긴 메소드, 큰 클래스, 긴 매개변수 목록 등등 코드를 좀 더 효율적으로 바꾸기)
위의 레드 그린 사이클 처럼 우선 테스트를 작성하고 그걸 통과하는 코드를 만들고 해당 과정을 반복하면서
제대로 동작하는지에 대한 피드백을 적극적으로 받는 것이다.
2. TDD를 왜 사용하는가?
- 개발 단계 초기에 문제를 발견하게 해준다.
- 추후에 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존기능이 올바르게 작동하는지 확인할 수 있다.
- 기능에 대한 불확실성을 감소시켜준다.
- 시스템에 대한 실제 문서를 제공한다. 즉, 단위 테스트 자체가 문서로 사용할 수 있다.
2) 장점
- 코드 결함이 줄어든다.
- 깨끗한 코드가 나온다.
- 유지보수 비용이 줄어든다.
3. TDD의 과정
- 코드에 대한 테스트를 적는다.
- 테스트가 실패하는 것을 본다.
- 테스트를 통과할 수 있도록 코드를 짜서 테스트를 통과시킨다.
- 테스트를 더욱 자세하게 리팩토링 한다.
- 다시 테스트를 해서 코드가 테스트를 통과하도록 한다.
4. 프레임워크
테스트 코드 작성을 도와주는 프레임워크들이 있다.
가장 대중적인 테스트 프레임워크는 xUnit이 있는데 개발환경에 따라 Unit테스트를 도와주는 도구라고 생각하면된다.
대표적이 xUnit프레임워크들은 다음과 같다.
- JUnit - Java
- DBUnit - DB
- CppUnit - C++
- NUnit - .net
'SW' 카테고리의 다른 글
[Design Pattern] Factory Method Pattern (0) | 2020.08.12 |
---|---|
[IT 용어] Secure Coding (0) | 2020.08.12 |