컴퓨터 공학 스터디 W5.소프트웨어 공학🛠
통합테스팅은 무엇일까? 통합 테스팅은 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생할 수 있는 오류를 찾는 테스트를 말한다. 모듈들 사이에 인터페이스 오류는 없는지, 모듈이 올바르게 연계되어 동작하는지를 체크하는 과정이다.
통합 테스팅의 접근 방식은 총 4가지가 있다. 크게는 두가지 + 1개로 분류된다. 빅뱅 접근법, 점증적 접근법, 샌드위치 테스트 이런식으로 나누어볼 수 있다. 먼저 빅뱅 접근법에 대해 알아보자.
빅뱅 접근법은 시스템을 구성하는 모듈을 각각 따로 구성하고 전체 시스템을 한번에 시험하는 방식이다. 테스트를 위한 Driver나 Stub 없이 실제 모듈로 테스트를 진행한다.
Driver? Stub?
⚙️Driver⚙️
컴포넌트나 시스템을 제어하거나 호출하는 컴포넌트를 대체하는 소프트웨어 컴포넌트.
상위 모듈 없이 하위 모듈이 있는 경우 > 하위 모듈 구동
🛠Stub🛠
골격만 있거나 특별한 목적의 소프트웨어 컴포넌트를 구현한 것
상위 모듈 있지만 하위 모듈 없는 경우 > 하위 모듈 대체
빅뱅 접근법은 작은 시스템에 대해선 편리하지만 장애가 일어난 위치를 파악하기 어렵고 모든 모듈들이 한번에 테스팅 되기 때문에 위험이 높은 핵심 모듈들이 우선순위대로 분리되고 테스트 되기 어렵다는 단점이 있다. 또한 통합 테스팅은 모든 모듈들이 설계가 된 후에만 시작될 수 있기 때문에 테스팅팀은 테스팅 단계에서 실행을 위한 시간들을 조금 밖에 가지지 못한다.
점증적 접근법에서 테스팅은 논리적으로 연관된 두개 이상의 모듈을 조합하여 수행된다. 그 다음에 적절한 기능을 위해 관계된 다른 모듈들이 추가되고 테스트되는 방식으로 프로세스는 모든 모듈들이 성공적으로 합쳐지고 테스트될 때까지 계속된다. 점증적 접근법에서는 아까도 말했던 Driver와 Stub을 사용한다. 점증적 접근법은 서로 다른 두가지 방법으로 수행되는데 첫번째는 상향식 접근법이고 두번째는 하향식 접근법이다.
상향식 접근법은 모든 모듈들이 테스트 될 때까지 더 낮은 레벨에 있는 각 모듈은 더 위에 있는 모듈과 함께 테스트 되는 것을 말한다. 상향식 접근법에서는 드라이버가 필요한데 이 드라이버는 하위 모듈을 순서에 맞게 호출하고 호출할 때 필요한 매개 변수를 제공하여 반환 값을 전달하는 역할을 한다.
위 사진을 보면서 상향식 접근법의 흐름을 알아보겠다.
가장 밑 레벨에 있는 E,F 모듈을 통합하여 모듈 B에 테스트를 하고 모듈 G를 모듈 C에 테스트한 후에 마지막으로 모듈 B,C,D를 모듈 A에 통합하여 테스트를 한다.
상향식 접근법은 장애가 일어난 위치를 파악하기 쉽고 빅뱅 접근법과는 달리 모든 모듈들이 개발되는 시간을 낭비할 필요가 없다는 장점이 있다. 하지만 애플리케이션의 흐름을 제어할 모듈이 마지막으로 테스트 되며 결함이 되기 쉽고 일찍이 프로토 타입을 가지기 어렵다는 단점이 있다.
하향식 접근법은 시스템을 구성하는 모듈의 계층구조에서 맨 상위의 모듈부터 시작하여 점차 하위 모듈 방향으로 통합하는 방식이다. 아까와 동일한 사진으로 하향식 접근법에 흐름도 살펴보겠다.
먼저 모듈 A와 B를 통합하여 테스트한다. 그 다음으로 모듈 C를 먼저 선택할지 아니면 모듈 B 아래에 있는 모듈 E를 먼저 선택할지 결정해야합니다. 이때 모듈 C를 먼저 선택하는 방식을 넓이 우선 방식이라하고 모듈 E를 먼저 선택하는 방식을 깊이 우선 방식이라고 한다.
하향식 접근법은 상향식 접근법과 동일하게 장애가 일어난 위치를 쉽게 파악할 수 있다. 그리고 일찍이 프로토 타입을 가질 수 있으며 우선순위 대로 중요 모듈들이 테스트 될 수 있다는 장점이 있다. 하지만 많은 Stub을 필요로하게 되고 낮은 레벨에서 모듈들이 불충분히 테스트 된다는 단점이 있다.
마지막 네번째 접근 방법으로는 샌드위치 테스트가 있다. 상향식 접근법과 하향식 접근법의 장점을 이용하는 방식으로 하위 프로젝트가 있는 대규모 프로젝트에 사용하는 방식이다. 병렬 테스트가 가능하고 시간 절약이 가능하다. Driver와 Stub의 필요성이 괴장히 높은 방식이며 비용이 많이 소요된다.
통합 테스팅의 절차는 총 5단계이며 이 단게들은 테스트 전략에 상관이 없다.
- 통합 테스팅 계획을 준비
2.테스트 시나리오, 사례 및 스크립트를 설계한다.
3.결함들을 보고한 다음에 테스트 사례들을 실행한다.
4.결함들을 추적하고 다시 테스트한다.
5.성공적으로 통합이 완료될 때 까지 3,4 단계를 반복한다