끄적끄적

리팩토링 4장 - 테스트 만들기 본문

리팩토링

리팩토링 4장 - 테스트 만들기

widruv 2016. 2. 27. 19:06
테스트 만들기

모든 테스트를 완전히 자동화하고, 테스트가 자신의 결과를 스스로 확인하게 하라.
  • 테스트의 결과 또한 컴퓨터가 확인하도록 테스트 코드를 작성하라.
  • TS_ASSERT_EQUALS( result, expected_result )

언제 테스트 코드를 작성해야 하는가?
  • 프로그래밍 시작 전
    • 구현보다는 인터페이스에 집중할 수 있게 된다.
    • 코딩을 완료할 명확한 지점( 테스트를 통과하는 지점) 을 갖게 되는 것을 의미함

테스트를 자주 실행 시켜라. 컴파일 할 때마다 테스트를 하고, 적어도 하루에 한번 모든 테스트를 실행시켜라.

리팩토링을 할 때는 작업하고 있는 코드만 몇 가지 테스트를 실행시켜야 한다.


단위 테스트 ( Unit test )  vs 기능 테스트 ( functional test )
  • 단위 테스트
    • 프로그래머에게 생산성 제공
    • 범위가 매우 한정적
    • 프로그래머가 작성
  • 기능 테스트
    • 소프트웨어 전체가 제대로 작동하는 지를 확인하기 위해 작성
    • 사용자에게 확실한 품질 제공
    • 프로그래머의 생산성은 관계 없음
    • 버그를 찾는 것을 즐기는 다른 팀에 의해 개발되어야 함

테스트 추가하기
  • 클래스가 해야 하는 모든 작업을 확인하고, 각각의 작업에 대해 클래스가 오류를 범할 수 있는 조건에 대해 테스트
  • 단순한 member 변수를 읽거나 쓰는 접근자(accessor)는 테스트 x
  • 문제가 생길만한 곳에 집중해서 추가

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

모든 버그를 잡기 위해 모든 경우의 수를 테스트 하는 것보다 대부분의 버그를 잡기 위해 합당한 시간을 보내는 것이 더 낫다.


Comments