테스트 자동화(하네스) 구성요소

정처기SW개발테스트
읽는데 8분 소요
처음 쓰여진 날: 2025-10-07
마지막 수정일: 2025-10-07
조회수:

요약

정보처리기사 실기 시험의 핵심 개념인 테스트 하네스의 구성요소(테스트 드라이버, 스텁, 슈트, 케이스, 시나리오, 스크립트, 목 객체)를 완벽하게 정리합니다. 특히 시험에 자주 출제되는 테스트 드라이버와 스텁의 차이점을 명확히 설명합니다.

용어키워드
테스트 하네스(Test Harness)소프트웨어 도구, 프레임워크, 테스트 환경 구축, 구성요소 집합
테스트 드라이버(Test Driver)상향식 테스트, 하위 모듈 테스트, 호출하는 모듈, 상위 모듈 역할
테스트 스텁(Test Stub)하향식 테스트, 상위 모듈 테스트, 호출되는 모듈, 더미 모듈
테스트 슈트(Test Suite)테스트 케이스 집합, 묶어놓은 단위, 특정 기능 테스트
테스트 케이스(Test Case)입력값, 실행 조건, 예상 결과, 테스트 최소 단위, 명세
테스트 시나리오(Test Scenario)동작 흐름, 스토리, 여러 케이스 묶음, 로그인 후 글쓰기
테스트 스크립트(Test Script)자동화, 실행 코드, 테스트 케이스 코드화
목 객체(Mock Object)상태 검증, 행위 검증, 정교한 객체, 호출 횟수 확인

정보처리기사 실기 시험에서 테스트 드라이버(Test Driver)테스트 스텁(Test Stub) 의 역할과 차이점을 묻는 문제는 단골 출제 유형입니다. 두 개념을 명확히 구분하고 암기하는 것이 합격의 핵심입니다.


테스트 하네스(Test Harness)란?

테스트 하네스는 단위 테스트나 모듈 테스트에서 테스트를 실행하기 위한 환경을 구축하는 소프트웨어 도구나 프레임워크를 의미합니다. 테스트 대상 컴포넌트가 정상적으로 작동하는지 확인하기 위해, 테스트를 지원하는 코드와 데이터를 하나로 묶은 실행 환경이라고 할 수 있습니다.

주요 구성 요소로는 테스트 드라이버, 테스트 스텁, 테스트 슈트, 테스트 케이스 등이 있으며, 이들이 모여 하나의 테스트 환경을 구성합니다.


테스트 하네스의 핵심 구성요소

테스트 드라이버 (Test Driver)

테스트 드라이버는 테스트 대상 모듈을 호출(Call) 하고, 테스트 결과를 검증하는 상위 모듈12 역할을 하는 테스트 코드입니다. 주로 상향식(Bottom-up) 테스트345 에서 사용됩니다.

  • 역할: 하위 모듈(테스트 대상)을 호출하여 테스트를 시작하고, 파라미터를 전달하며, 결과를 확인합니다.
  • 함수 호출 및 데이터 흐름의 방향: 상위 모듈 ← [테스트 드라이버] + 하위 모듈 (테스트 대상)
  • 핵심 키워드: 상향식 테스트, 하위 모듈 테스트, 호출하는 모듈

테스트 스텁 (Test Stub)

테스트 스텁은 테스트 대상 모듈이 호출하는 다른 모듈의 기능을 임시로 대체하는 더미(Dummy) 모듈입니다. 주로 하향식(Top-down) 테스트678 에서 사용됩니다.

  • 역할: 상위 모듈(테스트 대상)이 호출하는 하위 모듈9의 역할을 임시로 수행하며, 미리 정해진 값을 반환하거나 간단한 로직을 처리합니다.
  • 함수 호출 및 데이터 흐름의 방향: 상위 모듈 (테스트 대상) + 하위 모듈 ← [테스트 스텁]
  • 핵심 키워드: 하향식 테스트, 상위 모듈 테스트, 호출되는 모듈
구분테스트 드라이버 (Test Driver)테스트 스텁 (Test Stub)
목적하위 모듈을 테스트하기 위해 사용상위 모듈을 테스트하기 위해 사용
역할테스트 대상 모듈을 호출하는 상위 모듈 역할테스트 대상 모듈에 의해 호출되는 하위 모듈 역할
테스트상향식(Bottom-up) 테스트하향식(Top-down) 테스트
비유자동차를 운전하는 운전자(Driver)주연 배우를 대신하는 대역(Stub) 배우
함수 호출, 데이터 흐름드라이버테스트 대상(하위)테스트 대상(상위)스텁

그 외 주요 구성요소

구성요소설명
테스트 슈트테스트 케이스들의 집합. 특정 기능이나 모듈에 대한 모든 테스트 케이스를 묶어놓은 단위입니다.
테스트 케이스특정 요구사항을 검증하기 위한 입력값, 실행 조건, 예상 결과 등의 명세. 테스트의 최소 단위입니다.
테스트 시나리오여러 테스트 케이스를 묶어 하나의 **동작 흐름(스토리)**을 검증하는 것. (예: '로그인 후 글쓰기')
테스트 스크립트테스트 케이스를 자동화된 방식으로 실행할 수 있도록 작성된 코드.
목 객체(Mock Object)스텁과 유사하지만, 호출에 대한 상태나 행위까지 검증하는 더 정교한 객체. (예: 'A 메서드가 3번 호출되었는가?')

소스 코드 분석 도구

소스 코드 분석 도구는 실행 여부에 따라 정적 분석 도구와 동적 분석 도구로 나뉩니다. "애플리케이션을 실행하지 않고"가 보이면 정적, "실행하면서"가 보이면 동적입니다.

구분정적 분석 도구 (Static Analysis Tool)동적 분석 도구 (Dynamic Analysis Tool)
실행 여부실행하지 않음실행하면서 분석
검사 대상코딩 표준, 코딩 스타일, 코드 복잡도, 잠재적 결함, 문법 오류메모리 누수, 보안 취약점, 코드 커버리지
도구 예시pmd, cppcheck, SonarQube, Checkstyle, FindBugsAvalanche, Valgrind
장점코드 작성 단계부터 결함 조기 발견실제 실행 시점의 동작·자원 사용 검증

메모리 누수와 코드 커버리지는 실제로 프로그램을 실행해야만 측정 가능하므로 동적 분석의 영역입니다.


단위 테스트 프레임워크 (xUnit 계열)

xUnit은 단위 테스트(Unit Test)를 자동화하기 위한 오픈소스 프레임워크 패밀리입니다. 언어별로 다음과 같은 구현체가 존재합니다.

프레임워크대상 언어
JUnitJava
CppUnitC++
NUnit.NET (C# 등)
PyUnit (unittest)Python
HttpUnit웹 애플리케이션

JUnit

자바 프로그램의 단위(메서드·클래스) 테스트를 자동화하기 위한 xUnit 계열 프레임워크입니다. @Test, @Before, @After 등의 애너테이션과 assertEquals, assertTrue 같은 단언(Assertion) 메서드로 테스트 코드를 작성합니다.


테스트 오라클 (Test Oracle)

테스트 오라클(Test Oracle) 은 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값(true value) 을 제공하는 메커니즘입니다. 입력값이 너무 많아 모든 경우를 검증하기 어려운 현실적 한계 때문에, 상황에 맞는 다양한 오라클 종류가 사용됩니다.

오라클 종류핵심 개념
참(True) 오라클모든 입력값에 대해 기댓값을 제공 — 발생할 모든 오류를 검출
샘플링(Sampling) 오라클특정 일부 입력값에 대해서만 기댓값 제공
휴리스틱(Heuristic) 오라클일부 입력값은 기댓값 제공, 나머지는 추정값으로 처리 (샘플링 + 추정)
일관성 검사(Consistent) 오라클변경 전과 변경 후 결과값이 동일한지 비교 (회귀 테스트에 활용)

"전수 입력값에 대해 기댓값을 제공하는 것이 불가능"이 보이면 샘플링 오라클, "변경 전과 후 결과 비교"가 보이면 일관성 검사 오라클입니다.


정보처리기사 실기 대비 문제


Footnotes

  1. 사용자가 직접 접하고 시스템의 핵심 제어 흐름을 담당하는 모듈(예: 카드 결제)

  2. 반대로 하위 모듈은 상위 모듈에 의해 호출되는, 특정 기능을 수행하는 모듈입니다(예: 카드 번호 유효성 검사)

  3. 상향식 테스트는 하위 모듈부터 테스트를 시작하여 상위 모듈로 테스트를 올려가는 방식입니다.

  4. 테스트 순서: 하위 모듈 -> 중위 모듈 -> 상위 모듈

  5. 하위 모듈의 정확성을 먼저 확인하고 상위 모듈로 통합하기 위해 상향식 테스트를 사용합니다.

  6. 하향식 테스트는 상위 모듈부터 테스트를 시작하여 하위 모듈로 테스트를 내려가는 방식입니다.

  7. 테스트 순서: 상위 모듈 -> 중위 모듈 -> 하위 모듈

  8. 시스템의 구조와 주요 기능의 조기 검증에 초점을 맞추기 때문에 상위 모듈을 먼저 테스트하는 하향식 테스트를 사용합니다.

  9. 하위 모듈은 상위 모듈에 의해 호출되는, 특정 기능을 수행하는 모듈입니다(예: 카드 번호 유효성 검사)


관련 글

(14개)
제목태그시험
AJAX, Fetch API 등 - 인터페이스 통신 기술
SW개발
-
테스트 레벨(단위, 통합, 시스템, 인수 테스트)과 V 모델
테스트
-
테스트 케이스 구성 요소
테스트
-
테스트 자동화(하네스) 구성요소 | 정처기 감자