Testing
단위 테스트를 작성하는 것은 단순한 검증이 아니라 설계의 문제이고 문서화의 문제이다.
테스트 주도 개발
테스트 코드를 먼저 작성하면,
- 프로그램의 모든 단일 함수의 동작을 검증하는 테스트를 갖게 된다.
- 프로그래머가 다른 관점에서 문제를 해결할 수 있다. (프로그램의 호출자 관점에서, 편리하게 호출할 수 있는 소프트웨어 설계)
- 테스트 가능한 프로그램을 설계하도록 강제할 수 있다. (소프트웨어를 다른 환경과 분리하도록 강제)
- 테스트가 문서화의 형태로 기능한다.
테스트 우선 방식 설계의 예
1 | public void testMove() { |
위 코드는 WumpusGame 의 어떤 부분보다 먼저 작성되었다.
자신의 의도를 구현하기 전에, 먼저 그 의도를 단순하고 읽기 편하게 만들어 테스트로 제시한다.
테스트 분리
운영 코드를 만들기 전에, 테스트를 먼저 작성하면 소프트웨어에서 분리해야할 부분이 드러나곤한다.
예를 들어,
- Payroll 클래스는 EmployeeDatabase 클래스를 이용해 Employee 객체를 꺼낸다.
- Employee 에 임금을 계산하도록 요청하고 CheckWriter 객체에 그 임금을 넘겨 수표를 만든다.
- Employee 객체에 임금을 지급하고 그 객체를 다시 DB 에 기록한다.