일곱 테스팅 원칙(Seven Testing Principles)

  • 테스팅은 결함의 존재를 보여주는 것이다
  • 완벽한 테스트는 불가능하다
  • 테스트 구성은 가능한 빠르게 시작한다
  • 결함은 군집되어 있다
  • 살충제 역설(Pesticide Paradox): 비슷한 테스트가 반복되면 새로운 결함을 발견할 수 없다
  • 테스팅은 문맥에 의존적이다
  • 오류 부재의 궤변: 사용되지 않는 시스템이나 사용자의 기대에 부응하지 않는 기능의 결함을 찾고 수정하는 것은 의미가 없다

Unit Test(단위 테스트)

기본 원칙aaa

  • 퍼블릭 메소드를 테스트한다
  • 테스트 결과에 영향을 미치는 디펜던시 객체는 모킹(Mocking)한다
  • 디스크 관련 디펜던시는 가능한 사용을 피한다
  • 네트워크 관련 디펜던시는 사용하지 않는다

F.I.R.S.T 원칙

  • Fast: 유닛 테스트는 빨라야 한다
  • Isolated: 다른 테스트에 종속적인 테스트는 절대로 작성하지 않는다
  • Repeatable: 테스트는 실행할 때마다 같은 결과를 만들어야 한다
  • Self-validating: 테스트는 스스로 결과물이 옳은지 그른지 판단할 수 있어야 한다
  • Timely: 유닛 테스트는 프로덕션 코드가 테스트를 성공하기 직전에 구성되어야 한다테스트 드리븐 개발(TDD) 방법론에 적합한 원칙이지만 실제로 적용되지 않는 경우도 있다

참고

_https://tech.buzzvil.com/handbook/test-principles/

_https://www.boxuk.com/insight/the-seven-principles-of-testing/

_https://medium.com/@tasdikrahman/f-i-r-s-t-principles-of-testing-1a497acda8d6