4장

테스트 만들기 모든 테스트를 완전히 자동화하고, 테스트가 자신의 결과를 스스로 확인하게 하라.

  • 테스트의 결과 또한 컴퓨터가 확인하도록 테스트 코드를 작성하라.

  • TS_ASSERT_EQUALS( result, expected_result )

언제 테스트 코드를 작성해야 하는가?

프로그래밍 시작 전

구현보다는 인터페이스에 집중할 수 있게 된다.
코딩을 완료할 명확한 지점( 테스트를 통과하는 지점) 을 갖게 되는 것을 의미함

테스트를 자주 실행 시켜라. 컴파일 할 때마다 테스트를 하고, 적어도 하루에 한번 모든 테스트를 실행시켜라. 리팩토링을 할 때는 작업하고 있는 코드만 몇 가지 테스트를 실행시켜야 한다. 단위 테스트 ( Unit test ) vs 기능 테스트 ( functional test )

단위 테스트

  • 프로그래머에게 생산성 제공

  • 범위가 매우 한정적

  • 프로그래머가 작성

기능 테스트

  • 소프트웨어 전체가 제대로 작동하는 지를 확인하기 위해 작성

  • 사용자에게 확실한 품질 제공

  • 프로그래머의 생산성은 관계 없음

  • 버그를 찾는 것을 즐기는 다른 팀에 의해 개발되어야 함

테스트 추가하기

  • 클래스가 해야 하는 모든 작업을 확인하고, 각각의 작업에 대해 클래스가 오류를 범할 수 있는 조건에 대해 테스트

  • 단순한 member 변수를 읽거나 쓰는 접근자(accessor)는 테스트 x

  • 문제가 생길만한 곳에 집중해서 추가

코드를 보고 어디가 복잡한지, 기능을 보고 어느 곳에서 에러가 발생할 것 같은지 보라테스트로 모든 버그를 찾을 수는 없다.하지만 리팩토링을 하면 코드를 더 잘 이해할 수 있게 되고 더 많은 버그를 찾을 수 있을 것이다. 모든 버그를 잡기 위해 모든 경우의 수를 테스트 하는 것보다 대부분의 버그를 잡기 위해 합당한 시간을 보내는 것이 더 낫다.

Last updated