세상을 바꾸는 개발자

좋은 단위 테스트의 4대요소(회귀방지, 리팩터링 내성, 빠른 피드백, 유지보수성) 본문

기타/UnitTest

좋은 단위 테스트의 4대요소(회귀방지, 리팩터링 내성, 빠른 피드백, 유지보수성)

헬창코딩 2022. 4. 23. 16:41

회귀방지

  • 회귀는 소프트웨어 버그이다(기능이 의도한대로 동작x)
  • 단순한 코드를 테스트하는 것은 가치가 거의 없다
  • 회귀 방지 지표를 극대화 하려면 테스트가 가능한 한 많은 코드를 실행하는 것을 목표로 해야한다.

리팩터링 내성

  • 테스트에서 얼마나 많이 거짓양성이 발생하는지 살펴봐야하한다(적을 수록 좋음)(거짓음성: 테스트는 잘 동작하지만 기능은 실패)
  • (거짓양성: 기능은 잘 동작하지만 테스트는 실패)
  • 테스트를 실패로 변경하지않고 코드를 리팩터링 할 수 있는지에 대한 척도이다.SUT의 구현 세부 사항과 테스트간의 결합도를 낮추는 것뿐이다 즉, 코드의 내부 작업과 테스트 사이를 가능 한 멀리 떨어뜨리고 최종결과를 목표로 하는 것.
  • → 테스트를 깨지지않게 하고 리팩터링 내성을 높이는 방법

회귀방지와 리팩터링 내성의 관계

  • 테스트 정확도의 극대화
    • 테스트 정확도 = 신호(발견된 버그 수) / 소음(허위 경보 발생 수)

빠른피드백

  • 테스트가 얼마나 빨리 샐행되는지에 대한 척도

이상적인 테스트란

  • 회귀방지, 리팩터링내성, 빠른피드백은 상호 배타적
  • 곱셈법칙(하나라도 0이 되면 의미없음)
  • 모두 완벽한 점수 얻기 힘듬

→ 세가지 특성 모두를 양보할 만큼 서로 조금씩 인정하는 것이 최선의 전략

(하지만 리팩터링 내성읠 최대한 많이 갖는 것을 목표로 하자!!)

테스트 피라미드(단위 →통합 →엔드 투 테스트)

블랙박스테스트

  • 내부구조몰라도 기능검사가능
  • 애플리케이션이 어떻게가 아니라 무엇을 해야하는지 중심
  • 회귀방지 : 나쁨 , 리팩터링내성 : 좋음

화이트박스 테스트

  • 내부 작업을 검증하는 테스트 방법
  • 테스트는 요구 사항이나 명세가 아닌 소스 코드에서 파생
  • 회귀방지 : 좋음 , 리팩터링내성 : 나쁨

테스트를 작성할때는 블랙박스 테스트 이용 하자!

테스트를 분석할때는 화이트박스 테스트 이용 하자!

 

 

 

혼자 단위테스트라는 책을 읽으면서 생각에 흐름대로 적은 글입니다..
참고한 책은 단위 테스트라는 책입니다. ( http://www.yes24.com/Product/Goods/104084175 )

 

단위 테스트 - YES24

소프트웨어 개발에 있어 단위 테스트는 이제 선택이 아니라 필수가 됐다. 단위 테스트에 대한 오해를 바로잡고, 올바른 단위 테스트에 대한 원칙, 테스트를 작성하는 스타일과 효과적인 테스트

www.yes24.com

 

Comments