[xUnit 테스트 패턴] 17장 - 프로젝트 냄새


17장 - 프로젝트 냄새

버그투성이 테스트

  • 자동 테스트에서 계속 버그가 나온다.

증상 : 버그투성이 테스트

  • 테스트에 버그가 있어 제품 코드의 에러를 잡아내지 못했다.

미치는 영향 : 버그투성이 테스트

  • 테스트에 대한 신뢰가 떨어진다.
  • 테스트 경고를 무시하게 된다.

원인 : 버그투성이 테스트

  • 깨지기 쉬운 테스트
    • 인터페이스에 민감함, 동작에 민감함, 데이터에 민감함, 문맥에 민감함으로 발생
  • 애매한 테스트
  • 테스트하기 힘든 코드

해결 패턴 : 버그투성이 테스트

  • 테스트를 적절하게 작성하는 방법 배우기
  • 리팩토링
  • 테스트 먼저 작성하기

테스트를 작성하지 않는 개발자

  • 개발자들이 자동 테스트를 작성하지 않는다.

증상 : 테스트를 작성하지 않는 개발자

  • 버그 발생

미치는 영향 : 테스트를 작성하지 않는 개발자

  • 테스트 빚(test debt) 발생

원인 : 테스트를 작성하지 않는 개발자

  • 부족한 시간
  • 테스트하기 힘든 코드
  • 잘못된 테스트 자동화 전략

문제 해결을 위한 조언 : 테스트를 작성하지 않는 개발자

  • 코드 커버리지 향상 시키기

높은 테스트 유지 비용

  • 기존 테스트를 유지 보수하기가 너무 힘들다.

증상 : 높은 테스트 유지 비용

  • 깨지시 쉬운 테스트
  • 꺠지시 쉬운 픽스처
  • 변덕 스러운 테스트

미치는 영향 : 높은 테스트 유지 비용

  • 생산성 저하

원인 : 높은 테스트 유지 비용

  • 깨지기 쉬운 테스트
  • 애매한 테스트
  • 테스트하기 힘든 코드

문제 해결을 위한 조언 : 높은 테스트 유지 비용

  • 개발 속도를 조절하고 테스트 리팩토링 스토리 기간을 만들어야 한다.

제품 버그

  • 공식 테스트나 제품에서 버그가 너무 많이 나온다.

미치는 영향 : 제품 버그

  • 시간과 노력이 든다.

원인 : 제품 버그

  • 드문 테스트 실행
  • 테스트 안 된 코드
    • 원인 : DOC를 동기적으로 호출하고, DOC는 특정 값을 리턴하거나 예외 발생 시
  • 놓친 테스트
    • 테스트 메소드에 Test 속성 추가 까먹음
  • 빠진 단위 테스트
    • 증상 : 단위 테스트는 전부 통과하는데 고객 테스트는 실패
  • 테스트 안 된 요구 사항
    • 증상 : 테스트 주고 개발 도중 요구 사항을 처리하기 위한 코드 추가 시 발생
    • 근본 원인 : 부수효과 같은 간접 출력에서 발생
    • 해결책
      • 충분한 고객 테스트
      • 비즈니스 로직 레이어에서 프레젠테이션 레이러 분라
      • 모의 객체로 동작 검증
  • 절대 실패하지 않는 테스트