테스트 작성
Updated:
테스트 작성
- 리펙토링을 실시하기 위한 필수 전제조건은 테스트를 해야 한다.
1. 자가 테스트 코드의 가치
- 모든 테스트를 완전히 자동화하고 결과를 자체적으로 검사하게 하자.
- 테스트 스위트는 버그를 찾는 시간을 획기적으로 줄여주는 강력한 버그 감지 도구이다.
- 테스트를 작성하기 가장 적합한 시점 중 하나는 프로그래밍을 시작할 때이다.
- 기능을 추가해야 할 때는 우선 테스트부터 작성하자.
2. JUnit 테스트 프레임워크
- 테스트를 자주 실행하자. 적어도 하루에 한 번은 테스트를 실시하고, 컴파일할 때마다 테스트를 국소화하자.
2.1 단위 테스트와 기능 테스트
- 단위 테스트의 목적은 프로그래밍 생산성 향상이다.
- 단위 테스트는 매우 국소적이어서, 각 테스트 클래스는 하나의 패키지 안에서만 효력이 있다.
- 다른 패키지의 인터페이스를 테스트하지만, 그 외에 나머지 코드는 잘 돌아간다고 가정한다.
- 기능테스트의 목적은 소프트웨어 전반이 제대로 돌아가는지 확인하는 것이다.
- 기능테스트는 고객에게 품질 보증만 할 뿐 프로그래머의 생산성과 무관하다.
- 따라서 기능 테스트는 별도의 버그 발견 전문 팀이 개발해야 한다.
- 버그 리포트를 받으면 우선 그 버그를 한눈에 볼 수 있게 출력하는 단위 테스트부터 작성하자.
3. 테스트 추가
- 버그 가능성이 많은 함수 위주로 작성한다.
- 완벽한 테스트를 작성하려다 아예 테스트를 포기하느니, 차라리 불완전한 테스트를 작성해 실행하는 편이 낫다.
- 뭔가 에러가 있으리라 예상될 땐 그 예외가 정말로 발생하는지 꼭 테스트하자.
- 테스트가 모두는 아니더라도 대부분의 버그는 잡아내므로 테스트 작성을 중단해서 안 된다.