Skip to content

(마스터클래스 과제) 테스트코드 구현이 SW개발에서 어떤 의미일까?

Kwon soon won edited this page Nov 17, 2020 · 1 revision

제품의 안정성을 높이고, 기능 추가 및 수정으로 인한 부작용(Side-effect)를 줄일 수 있으며, 불안감 없이 코드 작성을 할 수 있도록 도와주고, 결과적으로 생산성을 매우 높여 줍니다.

테스트 원칙

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

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

F.I.R.S.T 단위 테스트 원칙

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

Reference

https://medium.com/@ssowonny/설마-아직도-테스트-코드를-작성-안-하시나요-b54ec61ef91a

Clone this wiki locally