테스트 하네스
IT 위키
더 많은 작업
- Test Harness; 테스트 하니스, 테스트 장치
- 테스트 대상 모듈을 실제 실행 환경 없이 구동하고 결과를 수집할 수 있도록 테스트 드라이버, 테스트 스텁, 테스트 스크립트, 실행 도구 등을 한데 묶은 테스트 환경
단위 테스트나 통합 테스트를 할 때 테스트 대상 모듈은 혼자서 실행되지 않는다. 대상을 호출해 줄 상위 모듈, 대상이 부르는 하위 모듈, 입력 데이터, 결과를 비교·기록하는 장치가 있어야 한다. 이것들을 모아 대상 모듈을 감싸는 장치가 테스트 하네스다. 하네스(harness)는 말에 채우는 마구(馬具)라는 뜻으로, 대상을 붙들어 매고 움직이게 한다는 비유다.
ISTQB 용어집은 테스트 하네스를 "테스트를 실행하는 데 필요한 스텁과 드라이버를 포함한 테스트 환경" 으로 정의한다.[1] 그래서 드라이버 하나만을 하네스라고 부르는 것은 정확하지 않다. 드라이버와 스텁은 하네스의 구성 요소다.
| 구성 요소 | 역할 |
|---|---|
| 테스트 드라이버(Test Driver) | 아직 없는 상위 모듈을 대신해 시험 대상 모듈을 호출하고 매개변수를 넘긴다. 상향식 통합에서 쓴다 |
| 테스트 스텁(Test Stub) | 아직 없는 하위 모듈을 대신해 호출당하면 미리 정한 값을 돌려준다. 하향식 통합에서 쓴다 |
| 테스트 슈트(Test Suite) | 실행할 테스트케이스들의 묶음 |
| 테스트 스크립트(Test Script) | 테스트케이스를 자동으로 실행하는 절차·코드 |
| 목 오브젝트(Mock Object) | 호출 순서·횟수까지 검증하도록 행위를 정해 둔 가짜 객체 |
| 결과 비교·보고 기능 | 실제 결과를 기대 결과(테스트 오라클)와 비교하고 기록한다 |
- JUnit, pytest 같은 단위 테스트 프레임워크는 드라이버 역할(테스트 실행기)과 결과 비교(단언문, assertion)를 함께 제공하는 하네스다
- 임베디드 소프트웨어에서는 실제 하드웨어 대신 입출력을 흉내 내는 시뮬레이터를 하네스에 넣는다
- 회귀 테스트를 반복 실행하려면 하네스가 자동화되어 있어야 한다
- ↑ 「ISTQB Glossary: test harness」, ISTQB, 2024.