[시나공] 테스트 오라클·테스트 하네스·순환 복잡도 정리 (정적·동적 분석 포함)
2026. 3. 5. 11:02ㆍCertifications/정보처리기사 실기
1️⃣ 테스트 오라클(Test Oracle)
✅ 개념
- 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 값을 비교하는 기준
- 테스트 케이스 실행 후 예상 결과와 실제 결과를 비교하여 오류를 판별
🔹 특징
- 결과 판단 기준 제공
- 테스트 자동화에서 중요한 역할
- 예상 결과를 계산하거나 확인하는 방식 사용
🎯 포인트
- “예상 결과 vs 실제 결과 비교” → 테스트 오라클
2️⃣ 테스트 오라클의 종류
| 종류 | 의미 | 특징 |
|---|---|---|
| 참(True) 오라클 |
모든 테스트 케이스의 입력 값에 대해 정확한 기대 결과를 제공하는 오라클 |
발생 가능한 모든 오류 검출 가능 가장 이상적인 형태 |
| 샘플링(Sampling) 오라클 |
특정 테스트 케이스에 대해서만 기대 결과를 제공하는 오라클 |
전수 테스트가 어려운 경우 사용 |
| 휴리스틱(Heuristic) 오라클 |
일부 입력 값에 대해 기대 결과를 제공하고 나머지는 추정으로 판단하는 오라클 |
경험이나 직관 기반으로 결과 판단 |
| 일관성 검사(Consistent) 오라클 |
애플리케이션 변경 전과 변경 후의 실행 결과가 동일한지 비교하는 오라클 |
회귀 테스트에서 활용 |
3️⃣ 테스트 자동화 도구
| 도구 | 특징 | 주요 내용 |
|---|---|---|
|
정적 분석 도구 (Static Analysis) |
프로그램을 실행하지 않고 코드 분석 |
· 코딩 표준 / 코딩 스타일 / 코드 복잡도 / 메모리 누수 / 스레드 결함 분석 · 대표 도구 : PMD, Checkstyle, SonarQube, Cobertura |
|
테스트 케이스 생성 도구 |
테스트 케이스 자동 생성 |
· 자료 흐름도 기반 생성 · 기능 테스트 기반 생성 · 입력 도메인 분석 · 랜덤 테스트 |
| 테스트 실행 도구 |
스크립트 기반 테스트 자동 실행 |
· 테스트 데이터와 테스트 절차를 자동 실행 |
|
성능 테스트 도구 (Performance Test) |
시스템 성능 측정 |
· 처리량(Throughput) · 응답시간(Response Time) · 경과시간(Turn Around Time) · 자원사용량(Resource Usage) |
4️⃣ 테스트 하네스(Test Harness)
✅ 개념
- 테스트 수행 환경을 구성하는 요소들의 집합
✅ 구성 요소
| 구성 요소 | 설명 |
|---|---|
| Test Driver | 테스트 대상 하위 모듈 호출 |
| Test Stub | 호출되는 하위 모듈을 대신하는 가짜 모듈 |
| Test Suites | 테스트 케이스들의 집합 |
| Test Case | 테스트 입력 / 조건 / 예상 결과 |
| Test Script | 테스트 실행 절차 자동화 |
| Mock Object | 실제 객체 대신 사용하는 가짜 객체 |
🎯 포인트
- Driver = 호출
- Stub = 호출 당함
5️⃣ 결함(Fault)
✅ 개념
- 소프트웨어가 설계와 다르게 동작하는 원인
🔹 예시
- 오류 발생
- 잘못된 결과 출력
- 시스템 오동작
6️⃣ 애플리케이션 성능 측정 지표
| 성능 지표 | 설명 |
|---|---|
|
처리량 (Throughput) |
일정 시간 동안 처리한 작업량 |
|
응답 시간 (Response Time) |
요청 전달 → 응답 도착까지 걸린 시간 |
|
경과 시간 (Turn Around Time) |
요청 시작 → 처리 완료까지 걸린 시간 |
|
자원 사용률 (Resource Usage) |
CPU / 메모리 / 네트워크 사용량 |
7️⃣ 시간 복잡도(Big-O)
| 시간 복잡도 | 의미 | 예시 |
|---|---|---|
| O(1) | 입력 크기와 관계없이 일정 | 스택의 삽입, 삭제 |
| O(log2n) | 로그 증가 | 이진 탐색(Binary Search), 이진 트리(Binary Tree) |
| O(n) | 선형 증가 | 선형 탐색(Linear Search), for문 |
| O(nlog2n) | 로그 선형 | 힙 정렬(Heap Sort), 2-Way 합병 정렬(Merge Sort) |
| O(n²) | 제곱 증가 | 버블 정렬, 선택 정렬, 삽입 정렬 |
| O(2ⁿ) | 지수 증가 | 피보나치 수열 |
8️⃣ 순환 복잡도(Cyclomatic Complexity)
✅ 개념
- 프로그램의 논리적 복잡도를 측정하는 지표
🔎 맥케이브 순환도(McCabe's Cyclomatic) = 순환 복잡도
✅ 계산 방법
🔹 방법 1. 영역 수를 계산

- R1 : Outside
- R2 : A-B-C
- R3 : A-C-D
- R4 : C-D 사이 영역
따라서,
순환 복잡도 = 영역 수
= 4 (Outside 포함)
🔹 방법 2. 공식 사용
- 공식 : V(G) = E(간선 수) - N(노드 수) + 2
V(G) = 6(간선 수) - 4(노드 수) + 2 = 4
9️⃣ 클린 코드(Clean Code) 작성 원칙
| 원칙 | 설명 |
|---|---|
| 가독성 | 누구나 이해하기 쉬운 코드 작성 |
| 단순성 | 코드를 간결하게 작성 |
| 의존성 배제 | 다른 모듈에 미치는 영향 최소화 |
| 중복성 최소화 | 코드 중복 제거 |
| 추상화 | 상위 계층은 개념 중심, 하위 계층은 구현 중심 |
📊 시험 포인트 정리
🔥 1) 테스트 오라클 종류 구분 문제
- True Oracle
- Sampling Oracle
- Heuristic Oracle
- Consistent Oracle
🔥 2) Driver / Stub 구분 문제
🔥 3) 정적 분석 vs 동적 분석
| 구분 | 특징 |
|---|---|
| 정적 분석 (Static Analysis) | 실행 없이 분석 |
| 동적 분석 (Dynamic Analysis) | 실행 후 분석 |
🔥 4) 성능 측정 지표
- 처리량
- 응답시간
- 경과시간
- 자원사용량
🔥 5) 순환 복잡도
공식 :
V(G) = E - N + 2

2025 시나공 퀵이지 정보처리기사 실기 단기완성
(저자: 강윤석, 김용갑, 김우경, 김종일 | 출판사: 길벗)
※ 본 글은 위 교재를 참고하여 학습 목적으로 재정리한 내용입니다.
'Certifications > 정보처리기사 실기' 카테고리의 다른 글
| [시나공] SQL 기본 정리 (SELECT / WHERE / GROUP BY / 집계함수 / UNION) (0) | 2026.03.24 |
|---|---|
| [시나공] DDL · DCL · 트랜잭션 제어 정리 (CREATE / ALTER / DROP / GRANT / REVOKE / COMMIT / ROLLBACK) (0) | 2026.03.24 |
| [시나공] 개발 단계별 테스트 전략 총정리 (V-모델 기반) (0) | 2026.03.05 |
| [시나공] 테스트 유형 정리 (화이트박스·블랙박스 핵심 총정리) (0) | 2026.03.04 |
| [시나공] 화면 설계 도구 · 품질 특성 · HCI 정리 (0) | 2026.03.04 |