-
테스트 더블: 소개테스팅 관련/개념 2020. 8. 9. 17:53
이어지는 시리즈
테스트 더블 (= 영화 스턴트 대역)
시험 대상 시스템(SUT)을 지정하는 클래스 또는 시스템을 테스트하기 위해 필요한 컴포넌트들의 단순화된 버전테스트 더블을 생성하는 이유?
- 컴포넌트들이 아직 완성되지 않음
- 컴포넌트들을 구성하는데 많은 비용이 들어감
- 컴포넌트들이 제 3자에 의해 소유되어있음
- 테스팅의 결과로 실제 컴포넌트들에 부작용이 생기는 것을 피하기 위함
- 항상 잘 실행되지는 않지만 어쩔 때는 괜찮은 테스트(Flakey Tests)들을 방지하는데 도움을 줌
- 시험 대상 시스템을 세밀한 관찰을 허용함(테스트 결과뿐만이 아닌 컴포넌트들의 상호작용)
테스트 더블은 생태계를 제공한다
- 더미 객체: 테스트 대상 시스템에서 파라미터로서 필요한 더미 값으로 '채워진' 객체. 테스트와 관련이 없고, 복잡하면 생성할 필요 없음
- 테스트 스텁: 특정 SW 컴포넌트를 호출하거나 의존관계에 있는 다른 컴포넌트들을 개발/테스트하고자, 해당 SW 컴포넌트를 골격 또는 특정 목적을 위해 구현한 것. 호출된 컴포넌트 대체. 테스트 대상 시스템에 의해 사용되는 더미 입력데이터 소스를 제공. 예) 가짜 데이터베이스
- 페이크 객체: 데이터베이스와 같은 '무거운' 프로세스들의 '가벼운' 구현. 예) 외부 데이터베이스 대신 인메모리 데이터베이스
- 모의(Mock) 객체: 테스트 대상 시스템에 의해 발생된 '간접적인 결과'를 확인함. (거의 유의어로 볼 수 있음: 스파이 객체) 시스템이 올바르게 다른 시스템들을 사용하는지 결정.
- 모의 객체: 테스트를 실행할 수 있도록 구성.
- 스파이 객체: 실제 객체를 감싸는 것으로, 테스트 대상 시스템과 다른 객체 사이의 상호작용을 모니터할 수 있게 함.
→ 더미 객체, 테스트 스텁, 페이크 객체는 테스트 입력값을 제공함으로서, 테스트를 실행할 수 있도록 한다.
→ 모의 객체, 스파이 객체는 메서드 호출의 출력값를 확인함으로서, 테스트를 세밀하게 모니터할 수 있도록 한다.
Mockito
- 자바에서 사용되는 테스트 더블을 생성하는데 많이 사용되는 프레임워크
- 유닛 테스트 케이스를 구성하는데 있어 jUnit과 잘 통합할 수 있음 (쉽고 빠르게 테스트 스텁, 모의 객체 생성)
- 다른 종류의 모든 테스트 더블을 지원함
- 목적: 유닛 테스트를 위해 종속성(dependencies)을 모의 구성하며, 테스트 대상 시스템과 모의 객체들 사이의 상호작용을 검사.
테스트 더블은 "가짜" ecosystem 방법을 제공한다
Mockito는 테스트 더블 구성을 쉽게 만드는 '프레임워크'다
'테스팅 관련 > 개념' 카테고리의 다른 글
테스트 더블: 출력값 (0) 2020.08.09 테스트 더블: 입력값 (0) 2020.08.09 소프트웨어 테스팅 프로세스 레벨 (0) 2020.06.20 '좋은' 테스트 계획의 중요성 (0) 2020.06.17 테스트 계획이란? (0) 2020.06.02