1. 단위테스트(Unit Test)
- 테스트가 가능한 최소 단위로 나누어진 소프트웨어(모듈, 프로그램, 객체,클래스 등) 내에서 결함을 찾고 그 기능을 검증하는 것
- 구현 단계에서 각 모듈이 구현된 후에 단위 테스트를 수행
- 모듈을 단독적으로 실행할 수 있는 환경이 필요
- 테스트 드라이버(Test driver)
- 테스트 스텁(Test stub)
1) 테스트 드라이버
- 테스트 대상이 되는 모듈을 호출하여 준비한 테스트 데이터를 제공하고 모듈의 실행결과를 받는 모듈
- 이란적으로 상향식 테스트에서 아직 통합되지 않은 상위 컴포넌트의 동작을 시뮬레이션 하기 위해 사용
- 테스트 케이스가 저장되어 있는 파일이나 데이터베이스로부터 하나의 테스트케이스를 읽는다.
- 읽은 테스트 케이스를 입력 인자로 사용하여 테스트 대상이 되는 모듈을 호출
- 모듈의 실행 결과를 저장하고 다음 테스트 케이스를 읽는다. 경우에 따라서는 테스트 드라이버가 테스트 오라클 역할을 수행할 수 있다.
즉, 실행 결과가 원하는 결과인지를 판별하여 프로그램에 오류가 검출되었는지를 판별하는 기능을 수행할 수있다. - 2-3 과정을 더 이상 실행할 테스트 케이스가 없을 때까지 반복하여 수행
2) 테스트 스텁
- 호출되는 모듈의 개발이 완료되지 않은 경우, 호출하는 모듈을 시험하기 위해 생성한 더미 모듈
- 함수와 헤더 등의 코드 루틴만 정의하고 내부 코드는 제한적으로 구현하거나 구현하지 않는 경우가 많음
- 테스트 스텁을 이용하여 실제 모듈 사용 시에 발생하기 어려운 경우를 강제적으로 만들어 테스트할 수 있음
2. 통합 테스트(Integration Test)
- 모듈을 통합하는 과정에서 수행되는 테스트
- 모듈 간의 상호 작용이 올바르게 되는 지를 검사하는 테스트
- 통합테스트에서 오류가 발생되는 경우
- 개별적인 모듈에 대한 테스트가 불충분하여 오류가 발생
- 제한된 상황만을 고려하여 작성한 테스트 드라이버/스텁으로 인해 실제 모듈과 통합하는 과정에서 오류가 발생
- 개별 모듈에서 동일한 전역 변수를 사용하는 등으로 인해 모듈 간의 예기치 못한 상호 작용이 발생하여 오류 발생
- 개별적인 모듈에 대한 테스트가 불충분하여 오류가 발생
1) 통합 전략
- 빅뱅통합
- 개별적인 모듈에 대해 단위테스트를 수행한 후에 전체 시스템에 대해 한번에 통합테스트를 수행
- 단시간에 테스트가 가능하나 오류가 발생했을 경우 오류가 발생한 모듈 및 원인을 찾기가 매우 어려움
- 점진적 테스트
- 한번에 모듈들을 통합하지 않고 점진적으로 모듈들을 통합하면서 테스트
- 하향식 통합, 상향식 통합, 샌드위치 통합방식이 있음
2-1) 하향식 통합
- 시스템을 구성하는 모듈들의 계층 구조에서 가장 상위에 있는 모듈부터 시작하여 하위에 있는 모듈들을 점진적으로 통합하는 방식
- 상위 모듈을 테스트할 때, 하위 모듈을 대치할 테스트 스텁이 필요
- 가장 상위 모듈을 테스트 하기 위해 하위 모듈을 테스트 스텁으로 대치한 후 테스트 수행
- 깊이 우선방식이나 너비 우선 방식을 사용하여 테스트 스텁을 한번에 하나씩 실제 모듈로 대치.
추가된 모듈이 호출하는 하위모듈을 테스트 스텁으로 대치한 후 회귀 테스트 수행 - 깊이 우선, 너비 우선
2-2) 하향식 통합 장/단점
- 장점
- 설계상의 오류를 빨리 발견할 수 있음
- 단점
- 많은 수의 테스트 스텁이 필요하고 만약 테스트 스텁을 구현할 때 비용이 많이 소요되는 경우에는 효과적이지 않음
- 블랙박스 테스트만을 사용하는 경우에는 하위 모듈이 충분하게 테스트가 이루어지지 않을 수 있다.
3-1) 상향식 통합
- 하위 모듈을 먼저 통합하고 상위에 있는 모듈들을 통합하는 방식으로 테스트 드라이버 필요
- 클러스터 또는 빌드 : 특별한 기능을 제공하는 하위의 모듈들의 모임
- 하위 모듈을 클러스터링한 후에 테스트 드라이버를 작성하여 테스트 수행
- 클러스터를 테스트한 후에 테스트 드라이버를 제거하고 결합
- 위 과정을 시스템이 완전히 통합 될 때까지 반복하여 수행
3-2) 상향식 통합 장/단점
- 장점
- 하위에 있는 모듈들을 충분하게 테스트할 수 있음
- 테스트 스텁을 제공하는 비용이 들지 않음
- 단점
- 설계 오류를 조기에 발견하지 못함
4) 샌드위치 통합
- 상향식 통합 방식과 하향식 통합방식을 절충하여 통합
'용어정리' 카테고리의 다른 글
[JSTL] 기본개념 (0) | 2021.08.08 |
---|---|
[네트워크] MAC주소 (0) | 2021.07.26 |
[CSTS] SW품질 (0) | 2021.06.14 |
[Git] branch name (0) | 2021.06.08 |
[네트워크] GET방식과 POST방식 (0) | 2021.05.26 |