통합테스트
태그 :
- 개념
- - 단위 테스트후에 모듈들을 조합한 경우 발생 가능한 오류 발견을 위한 테스트 - 개발된 소프트웨어 전체를 통합하여 컴포넌트들 사이의 상호작용과 사용자 인터페이스에서 비즈니스 컴포넌트에 걸쳐 일어나는 상호작용이 정상적으로 수행되는지를 검사
I. 소프트웨어의 상호작용을 테스트하는 통합테스트
- 통합테스트의 정의
- 단위 테스트후에 모듈들을 조합한 경우 발생 가능한 오류 발견을 위한 테스트
- 개발된 소프트웨어 전체를 통합하여 컴포넌트들 사이의 상호작용과 사용자 인터페이스에서 비즈니스 컴포넌트에 걸쳐 일어나는 상호작용이 정상적으로 수행되는지를 검사
- 통합테스트의 목적
- 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트
- 시스템 전체의 기능과 성능을 테스트
II. 통합테스트 유형과 통합 단계
- 통합테스트의 유형
Top-down Integration Testing
Depth-first integration
Breadth-first integration
Bottom-up Integration
Sandwich Testing
Regression Testing
Smoke Testing
구분 |
개념 |
장점 |
단점 |
하향식 Top-down (순차통합) |
모듈부터 통합하며 시험 테스트 Stub필요
|
- 점증적 통합 - 상위층 모듈 조기시험 - 사용자 조기 확인 - 심리적 안정감 |
입출력 모듈이 최하위에 존재하므로 테스트 어려움
Depth-first integration Breadth-first integration |
상향식 Bottom-up (순차통합) |
최하위 모듈 통합 후 위층의 모듈 추가 테스트 (Test Driver필요)
|
- 오류발견이 용이함 - HW사용 분산 - 하위층 기능이 많은 경우 적합 |
- 테스트 초기 전체적인 구조 미비 - 고객확인 늦어짐 |
샌드위치 (연쇄식, 순차통합) |
특정기능을 수행하는 모듈 최소단위부터 시험
|
- 중요기능의 빠른시험 - 사용자의 빠른확인 - 점증적 통합가능 |
기능분류 및 우선순위 선택 |
동시식 (빅뱅통합) |
시스템을 구성하는 모듈을 각각 따로 구현하고 전체 시스템을 한번에 시험 |
빠른 시간에 전체 시스템 테스트 |
- 오류의 원인을 찾기 어려움 - 시스템의중요한 부분과 부수적인 부분의 구별이 어려움 - 일정계획의 융통성이 없음 |
나. 하향식 통합 5단계:
1. 주프로그램 모듈은 시험 드라이버로 사용하고, 주 모듈에 직접 종속되는 모든 모듈을 스텁으로 교체.
2. 선택한 통합 접근법(깊이-우선이나 넓이-우선 방식)에 따라 종속된 스텁들을 한 번에 하나씩 실제 모듈들로 대체
3. 각 모듈이 통합된 후 시험을 실시하여 통합시 발생하는 인터페이스 오류를 찾아 오류를 제거
4. 주 모듈에 직접 종속적인 모듈의 시험이 끝난 경우, 하위 모듈의 종속 모듈들을 스텁 형태로 삽입합니다.
5. 회귀 시험은 새로운 오류가 반입되지 않은 것을 확인
다. 상향식 통합 4단계:
1. 하위 레벨 모듈들은 특정한 소프트웨어 부가기능을 수행하는 클러스터들에 결합
2. 드라이버는 시험 사례 입력과 출력을 조정
3. 클러스터를 시험
4. 드라이버가 제거되고 클러스터가 프로그램 구조의 위로 이동하면서 결합
III. 테스트 하니스, 드라이버와 스텁 및 고려사항
가.Test harness, Test Driver와 Stub
- 시스템을 테스트하기 위하여 작성된 별도의 프로그램, 테스팅이 끝난 후 삭제
- Test Driver
- 시험 대상 모듈을 호출하는 간이 소프트웨어
- 상향식 통합 테스트에서 해당 모듈이 호출하는 가상의 상위 계층 모듈
3. stub시험 대상 모듈이 호출하는 또 다른 모듈의 기능을 대신하여 쓰여진 간이 소프트웨어하향식 통합 테스트에서 해당 모듈이 호출 및 Return하는 가상의 하위계층 모듈
4. Test Driver과 Stub의 특성
구분 |
Test Driver |
Test Stub |
용도 |
하위모듈을 구동 |
하위모듈을 대체 |
특징 |
구현이 비교적 난이 Bottom-Up 점증 통합 하위모듈 중요도 높을 때 |
구현이 쉬움 Top-Down점증통합 상위모듈 중요도 높을 때 |
Test 문제점 |
초기에 구조 파악이 어려움 |
입출력이 대부분 하위에 위치하여 테스트가 어려움 |
나. 통합테스트의 고려사항
- Test Driver와 Stub 제작 시 개발되는 모듈의 정상적인 동작에 영향을 주지 않아야 함
- 개발되는 모듈의 오류를 식별할 수 있는 테스트 케이스를 도출하는 것이 매우 중요하며, 개발 방법론과 프로세스에 적합한 통합 테스트 유형을 선정해야 함