테스트

테스트 대역 (Test Doubles)

소밍소밍 2022. 3. 14. 00:27

테스트 대역이란 테스트를 위해 사용되는 대역 배우(Stunt Double)같은 것을 말한다. 용도와 구현 방법에 따라 다음 용어로 구분할 수 있다.

Dummy

가장 간단한 형태. 객체로 선언만 하고 아무 구현도 하지 않은 것. 주로 객체 전달에 사용되며 매개변수 목록을 채울 때 사용된다.

Stub

Dummy에서 조금 발전된 형태. 미리 준비되어 있는 응답을 제공해 줄 수 있도록 최소한의 코드를 구현해 둔다.

Spy

Stub의 기능에 함수들이 제대로 사용되었는지 확인할 수 있는 코드를 추가로 구현한 형태. 사용되는 객체가 정의된 방법으로 쓰여지는지 확인해야 할 경우 사용한다.

Fake

실제 객체처럼 동작하도록 복잡하게 구현된 형태. 실제로 코딩을 하는 방식이고 logic이 필요하다. 그러나 실제 환경보다는 쉬운 방법을 사용한다. RDBMS 대신 InMemoryDatabase를 사용하는 것을 예로 들 수 있다. 테스트를 위한 가상 DB를 만들어 주는 그런 것도 있다(?)

Mock

위 네 가지가 테스트를 위한 객체를 실제로 구현하는 반면, Mock은 동적으로 생성된 가상 객체를 말한다. 테스트를 위해 개발자는 실제 객체가 어떻게 구현되어 있는지는 알 필요가 없으며, 어떻게 동작해야 하는지 명세만 알면 mock library를 이용하여 그대로 동작하게 할 수 있다. 실제 코딩과 logic이 필요하다.

사용 방법에 따라 위 Fake를 제외한 세 가지로 동작할 수 있을 정도로 다른 double들에 비해 넓은 커버 범위를 가지고 있다. 또한 효율적으로 Test Double을 만들고, 의도한 대로 사용되었는지 확인이 가능하다. Test Double의 의도가 명확하게 기술된다는 장점이 있다.

그러나 초기에 배우기가 무척 어렵다는 아주 큰 단점이 있다.

'테스트' 카테고리의 다른 글

Mockito  (0) 2022.03.14
이클립스에서 Eclemma 쓰기  (0) 2022.03.14
이클립스에서 JUnit4 사용하기  (0) 2022.03.14
JUnit4  (0) 2022.03.14
단위 테스트 (Unit Test)  (0) 2022.03.14