* FIRST 원리

> 좋은 테스트의 속성을 의미


> Fast (빠른)

- 빠른 테스트는 Milli Second 수준이 소요된다


> Isolated (고립된)

- 좋은 단위 테스트는 검증하려는 작은 양의 코드에 집중한다
    (테스트와 상호작용하는 코드가 많을수록 문제가 발생할 소지가 늘어난다. 따라서, 작은 양의 동작에만 집중하면 테스트 코드를 집중적이고
    독립적으로 유지하기 쉬워진다)

- 테스트 코드는 어떤 순서나 시간에 관계없이 실행할 수 있어야 한다


> Repeatable (반복 가능한)

- 실행할 때마다 결과가 같아야 한다. 그러기 위해서는 직접 통제할 수 없는 외부 환경에 있는 항목들과 격리시켜야 한다
    (반복 가능한 테스트를 힘들게 만드는 요소에 대해서는 Test Double 을 이용하여 고립시킬 수 있다)


> Self-validating (스스로 검증 가능한)

- 스스로 검증 가능할 뿐만 아니라 스스로 준비할 수도 있어야 한다. 테스트에 필요한 어떤 설정 단계든 자동화를 해야 한다
    (수동적으로 외부 환경 설정이 필요하다면 고립성을 위반한 것이다)


> Timely (적시의)

- 단위 테스트는 좋은 습관이다. 테스트 작성을 미룰수록 치석이 끼고 충치가 늘어날 것이다.
    코드를 반영하기 전보다 반영한 후에 테스트를 작성하는 것은 더욱 어렵다

- 테스트가 없는 경우 소스 코드 반영이 불가능하도록 만드는 도구로도 사용된다

- 단위 테스트를 더 많이 작성할수록 테스트 대상 코드가 줄어들며, 작성이 더욱 쉬워진다

- Legacy 코드에 대한 테스트는 시간 낭비가 될 수도 있다. 큰 결함이 없고 당장 변경할 예정이 없다면, 굳이 테스트를 작성할 필요가 없다

'SW 공학 > 테스팅' 카테고리의 다른 글

CORRECT (경계 조건 찾기)  (0) 2020.09.26
Right-BICEP (무엇을 테스트 할지)  (0) 2020.09.26
//category  (0) 2020.09.19
Mock Aren't Stubs / 마틴 파울러  (0) 2019.08.25
Mock Objects (작성중)  (0) 2019.08.24

+ Recent posts