테스트 용어 정리
SUT(System Under Test)
테스트의 대상이 되는 시스템 혹은 객체
협력객체(collaborator)
부차적 객체(secondary objects)
테스트 더블(Test Double)
진짜 객체 대신 테스트 용도로 사용되는 모든 종류의 위장 객체
종류
Dummy 객체: 전달되지만 실제로는 사용되지 않는다. 일반적으로 매개 변수 목록을 채우기 위해 사용된다.
Fake 객체: 프로덕션에는 적합하지 않은 방법으로 구현되어 있는 객체이다. 예를 들면 DB에 접근하는 대신 테스트 전용 인메모리 DB에 접근하는 방식에서 이를 사용한다.
Stub: 테스트 중에 호출되면 미리 준비된 결과를 제공한다. 보통은 테스트를 위해 프로그래밍한 내용이 아니면 응답하지 않는다.
Spy: 자신이 호출된 방법/과정 등의 정보를 기록하는 Stub이다. 이메일 서비스에서 몇 개의 이메일을 보냈는지 기록하는 형태가 Spy에 해당한다.
Mock: 호출했을 때 사전에 정의된 명세대로의 결과를 돌려주도록 미리 프로그램되어있다. 예상치 못한 상황에서 호출되면 예외를 발생시킬 수 있으며, 예상한 만큼 호출되었는지 확인한다.
상태 검증
메서드가 수행된 후 SUT나 협력객체의
상태
를 살펴봄으로써 올바르게 동작했는지 판단상태를 검증하기 위해 프로덕션에서는 필요없는 상태 노출 메서드(ex. getter)가 추가될 수 있다.
행위 검증
해당 메서드가 호출되었는지 검증함으로써 올바르게 동작했는지 판단한다.
구현에 의존적이기 때문에 프로덕션 코드가 수정될 때 테스트 코드가 변경될 확률이 높아진다.
테스트 작성이 상태 검증보다 쉽기 때문에 설계 상 문제점을 파악하기 어려워질 수 있다.
알람 등의 경우 상태 검증이 어려우므로 통합 테스트를 고려해볼 수 있지만 SUT가 아닌 다른 곳에 의존성이 생길 수 있어, 행위 검증을 하는게 나을 수도 있다.
출처
Last updated