6. 점진적 통합 방식 (하향식 통합 테스트(스텁), 상향식 통합 테스트(드라이버), 혼합식 통합 테스트)
7. 회귀 테스팅 Regression Testing
단위 테스트 Unit Test
단위 테스트는 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트 하는 것을 의미합니다. 단위 테스트에서는 인터페이스, 외부적 I/O, 자료 구조, 독립적 기초 경로, 오류 처리 경로, 경계 조건 등을 검사합니다. 단위 테스트는 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행합니다. 단위 테스트는 구조 기반 테스트와 명세 기반 테스트로 나뉘지만 주로 구조 기반 테스트를 시행합니다.
단위 테스트로 발견 가능한 오류로는 알고르짐 오류에 따른 원치 않는 결과, 탈출구가 없는 반복문의 사용, 틀린 계산 수식에 의한 잘못된 결과 등이 있습니다.
구조 기반 테스트 (White Box Test)
단위 테스트의 주된 테스트는 구조 기반 테스트로, 화이트 박스 테스트라고 불리기도 한다. 프로그램 내부 구조 및 복잡도를 검증하는 테스트입니다. 화이트 박스 테스트, 구조 기반 테스트의 유형은 제어 흐름, 조건 결정 등이 있습니다.
명세 기반 테스트 (Black Box Test)
단위 테스트의 또 다른 테스트 방법으로는 명세 기반 테스트가 있습니다. 블랙 박스 테스트라고도 합니다. 테스트 유형으로는 동등 분할, 경계 값 분석 등이 있습니다.
통합 테스트 (Integration Test)
통합 테스트는 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트 기법입니다. 통합 테스트는 크게 나누어 보면 비점진적 통합 방식과 점진적 통합 방식 테스트가 있습니다.
비점진적 통합 방식
단계적으로 통합하는 절차 없이 모든 모듈이 미리 결합되어 있는 프로그램 전체를 테스트하는 방법을 의미합니다.
빅뱅 통합 테스트 방식이 해당합니다.
점진적 통합 방식
모듈 단위로 단계적으로 통합하면서 테스트하는 방법을 의미합니다.
종류로는 하향식 통합 테스트, 상향식 통합 테스트, 혼합식 통합 테스트가 해당합니다.
하향식 통합 테스트 (Top Down Integration Test)
하향식 통합 테스트는 통합 테스트 중, 점진적 통합 방식에 속하는 테스트 방법으로, 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법을 의미합니다. 하향식 통합 테스트는 깊이 우선 통합법 혹은 넓이 우선 통합법을 사용합니다.
좌측이 깊이 우선 통합법이고 우측이 넓이 우선 통합법 입니다.
하향식 통합 테스트 절차
-) 주요 제어 모듈은 작성된 프로그램을 사용하고, 주요 제어 모듈의 종속 모듈들은 스텁(Stub)으로 대체합니다. (상위 모듈을 위한 기능만 가지고 있는 하위 모듈을 스텁 Stub 이라고 부릅니다) -) 깊이 우선 또는 넓이 우선 등의 통합 방식에 따라 하위 모듈인 스텁들이 한 번에 하나씩 설제 모듈로 교체됩니다 -) 모듈이 통합될 때마다 테스트를 실시합니다 -) 새로운 오류가 발생하지 않음을 보증하기 위해 회귀 테스트를 실시합니다
상향식 통합 테스트 (Bottom Up Integration Test)
상향식 통합 테스트는 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법을 의미합니다.
상향식 통합 테스트 절차
-) 하위 모듈들을 클러스터(Cluster)로 결합함 -) 상위 모듈에서 데이터의 입&출력을 확인하기 위해 더미 모듈인 드라이버(Driver)를 작성합니다. (하위 모듈에서 거꾸로 상위 모듈로 올라가기 때문에 실제로 상위 모델은 존재하지 않습니다. 그렇기 때문에, 존재하지 않는 상위 모듈의 인터페이스 역할을 하는 모듈을 보고 '드라이버'라고 합니다) -) 통합된 클러스터 단위로 테스트 함 -) 테스트가 완료되면 클러스터는 프로그램 구조의 상위로 이동하여 결합하고 드라이버는 실제 모듈로 대체됨
혼합식 통합 테스트
혼합식 통합 테스트는 하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합을 사용하여 최적의 테스트를 지원하는 방식을 의미합니다. 샌드위치식 통합 테스트 방법이라고도 합니다.
회귀 테스팅 Regression Testing
회귀 테스트는 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트를 의미합니다.
이미 테스트된 프로그램의 테스팅을 반복하는 것을 의미합니다. 회귀 테스트는 수정한 모듈이나 컴포넌트가 다른 부분에 영향을 미치는지, 오류가 생기지 않았는지 테스트하여 새로운 오류가 발생하지 않음을 보증하기 위해 반복 테스트합니다.