Test Driven Development (테스트 주도 개발)
테스트가 개발을 이끌어 나간다.
테스트를 먼저 만들고 테스트를 통과하기 위한 것을 짜는 것 즉, 만드는 과정에서 우선 테스트를 작성하고 그걸 통과하는 코드를 만들고를 반복하면서 제대로 동작하는지에 대한 피드백을 적극적으로 받는 것이다.
보통은 SW 개발을 할 때 코딩이 다 끝나고 난 후 테스트를 한다.
TDD를 적용한 사례
예를 들어, 생년월일(input)을 입력받으면 현재 나이(output)을 출력하는 프로그램
- 처음에는 간단한 것으로 목표를 정한다. (태어난 해와 올해의 연도를 입력)
- 만들기도 전에 만든 후에 무엇을 테스트할지를 설계한다.
- 그 다음에 그 테스트를 통과할 프로그램을 만든다.
- 테스트 프로그램으로 이 프로그램을 실행한다.
- 통과했으면 새로운 테스트를 추가한다.
위와 같은 작업을 계속 반복하면서 수행한다.
불확실성이 높을 때 '피드백'과 '협력'이 중요하다.
- 불확실성이 높을 때 '피드백'과 '협력'을 이용하면 더 좋은 결과가 나올 확률이 높아진다.
- TDD도 마찬가지로 '피드백'과 '협력'을 증진시키는 것이기 때문에 불확실성이 높을 때 도움이 되는 것이다.
1. 처음해보는 프로그램 주제 (나에 대한 불확실성이 높은 경우)
2. 고객의 요구조건이 바뀔 수 있는 프로젝트 (외부적인 불확실성이 높은 경우)
3. 개발하는 중에 코드를 많이 바꿔야 된다고 생각하는 경우
4. 내가 개발하고 나서 이 코드를 누가 유지보수할지 모르는 경우
모든 애자일의 실천법은 피드백과 협력을 동시에 증진시킨다.