본문 바로가기
Theory/Architecture

아키텍처 요소 테스트하기

by y.j 2022. 7. 5.
728x90

테스트 피라미드

테스트의 기본 전제는 만드는 비용이 적고, 유지보수하기 쉽고, 빨리 실행되고, 안정적인 작은 크기의 테스트들에 대해 높은 커버리지를 유지해야 한다는 것이다. 이 테스트는 하나의 '단위'가 제대로 동작하는지 확인 할 수 있는 단위 테스트들이다.

테스트 피라미드

테스트 피라미드가 위로 올라갈수록 비용이 더 비싸지고 실행이 느리며 깨기지 쉽다. 또, 새로운 기능을 만드는 것보다 테스트를 만드는 시간을 더 쓰게 된다. 테스트 피라미드는 테스트의 커버리지 목표를 낮게 잡아야 한다는 것을 의미한다. 맥락에 따라 테스트 피라미드에 포함되는 계층은 달라질 수 있다. '단위 테스트', '통합테스트', '시스템 테스트'의 정의는 맥락에 따라 다를 수 있다.

 

단위 테스트는 하나의 클래스를 인스턴스화하고 클래스의 인터페이스를 통해 기능들을 테스트한다.만약 클래스가 다른 클래스에 의존한다면 의존되는 클래스들은 인스턴스화하지 않고 테스트하는 동안 필요한 작업들을 흉내내는 목 객체로 대체한다.

 

통합 테스트는 연결된 여러 유닛을 인스턴스화 하고 시작점이 되는 클래스의 인터페이스로 데이터를 보낸 후 유닛들의 네트워크가 기대한 대로 잘 동작하는지 검증한다. 두 계층 간의 경계를 걸쳐서 테스트 할 수 있기 때문에 객체 네트워크가 완전하지 않은 시점에서는 목 객체로 대체 할 수 있다.

 

시스템 테스트는 어플리케이션을 구성하는 모든 객체 네트워크를 가동시켜 특정 유스케이스가 전 계층에서 잘 작동하는지 검증한다. UI를 포함한 엔드 투 엔드 테스트 층이 있을 수 있다. 

 

 

 

728x90

'Theory > Architecture' 카테고리의 다른 글

애플리케이션 조립하기  (0) 2022.07.10
경계 간 매핑하기  (0) 2022.07.09
영속성 어댑터 구현하기  (0) 2022.07.02
웹 어댑터 구현하기  (0) 2022.06.29
유스케이스 작성하기  (0) 2022.06.21

댓글