| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 데이터베이스 #try #이중
- &연산
- ZOOM
- 전역변수
- 컴포넌튼
- 클론코딩
- 타입스크립트
- TS
- 1px border
- es6
- 당근마켓
- font-size
- Props
- 10px
- angular
- jwt
- github
- ES5
- Websocket
- 문서번호
- 서버리스 #
- entity
- 0.25px border
- TypeScript
- 0.5px border
- 으
- npm
- 0.75px border
- literal
- Strict
Archives
- Today
- Total
복잡한뇌구조마냥
[CS] 테스트 오라클(Test Oracle) 정리 본문
📘 1. 테스트 오라클(Test Oracle)이란?
**테스트 오라클(Test Oracle)**이란
테스트 결과가 **정상인지(=올바른 동작인지)**를 판단할 기준(기준 장치) 을 의미한다.
즉, 테스트의 기댓값(Expected Result) 역할을 하는 것 👇
🗣️ “입력값을 넣었을 때 결과가 맞는지 틀린지를 판단할 수 있게 해주는 기준이 오라클이다.”
🧩 2. 테스트 오라클의 필요성
- 테스트 자동화에서는 프로그램이 스스로 올바른 결과를 판단해야 함
- 단순히 실행만으로는 “정상 동작” 여부를 판단할 수 없으므로,
→ 비교 기준이 되는 오라클(Oracle) 이 필요함
📍 예시
int result = add(2, 3);
assertEquals(5, result); // ← 5가 바로 오라클(기준)
🧱 3. 테스트 오라클의 종류
| 이름 | 설명 | 예시 |
| 참(True) 오라클 | 모든 입력값에 대해 정확한 기대 결과를 알려줌 | 수학 공식, 이미 검증된 프로그램 등 |
| 샘플(샘플링) 오라클 (Sampling Oracle) |
일부 선택된 입력값에 대해서만 올바른 결과를 제공 | 예: 특정 테스트 케이스만 수동 검증 |
| 휴리스틱(Heuristic) 오라클 (추정 오라클) |
모든 입력에 대해 근사값 혹은 추정값을 사용하여 판단 | 예: 결과 범위가 적절한지만 확인 |
| 일관성 검사(Consistent) 오라클 | 프로그램 수정 전후의 출력 일관성을 기준으로 판단 | 예: 리팩토링 전후 결과가 같으면 OK |
🧠 4. 각 오라클의 특징 요약
| 오라클 유형 | 정확도 | 적용 범위 | 구현 난이도 | 대표 상황 |
| True Oracle | ★★★★★ | 모든 입력 | ★★★★★ | 수학 계산, 표준 알고리즘 검증 |
| Sampling Oracle | ★★★☆☆ | 일부 입력 | ★★☆☆☆ | 테스트 케이스 일부만 수동 확인 |
| Heuristic Oracle | ★★☆☆☆ | 광범위 | ★★☆☆☆ | 결과 범위 추정, 근사값 검증 |
| Consistent Oracle | ★★★★☆ | 변경된 버전 | ★★★☆☆ | 회귀 테스트(Regression Test) |
💬 5. 테스트 오라클 vs 테스트 오라클 문제(Test Oracle Problem)
| 구분 | 설명 |
| 테스트 오라클 | 결과의 옳고 그름을 판단하는 기준 |
| 테스트 오라클 문제 (Oracle Problem) | "무엇을 기준으로 옳고 그름을 판단할 것인가?"에 대한 어려움 → 특히 비정형 문제(예: AI, UI, 추천 시스템 등)에서 자주 발생 |
예를 들어,
"AI가 생성한 답변이 ‘좋다’는 걸 어떻게 정의하지?"
이럴 때가 바로 오라클 문제.
⚙️ 6. 오라클의 구현 예시
✅ 단위 테스트에서의 오라클
@Test
void addTest() {
int result = calculator.add(2, 3);
assertEquals(5, result); // True Oracle
}
✅ 회귀 테스트에서의 오라클
# 기존 버전과 새 버전의 결과 비교
diff old_output.txt new_output.txt
✅ 휴리스틱 오라클 예시
assert 0 <= temperature <= 100 # 허용 범위 내면 통과
🧾 7. 정리 요약
| 항목 | 내용 |
| 정의 | 테스트 결과의 옳고 그름을 판단하는 기준 |
| 목적 | 자동화된 테스트에서 신뢰성 있는 검증 수행 |
| 종류 | True / Sampling / Heuristic / Consistent |
| 오라클 문제 | 명확한 정답 기준이 존재하지 않는 상황 |
💡 요약:
- 테스트 오라클은 **'정답'**을 판별하는 **'기준'**이다.
- 오라클이 없으면 테스트는 무의미하다. (결과가 맞는지 알 수 없으므로)
- 실제 현업에서는 휴리스틱 오라클과 일관성 오라클이 가장 많이 활용되며, 참 오라클은 이상적이지만 비현실적이다.
LIST
'공통 > CS' 카테고리의 다른 글
| [CS] 응집도(Cohesion)와 결합도(Coupling) 정리 (0) | 2025.10.31 |
|---|---|
| [CS] 소프트웨어 아키텍처 4+1 뷰 모델 정리 (0) | 2025.10.31 |
| [CS] UML 정리 (다이어그램 종류, 관계, 표기법 등) (0) | 2025.10.30 |
| [CS] 테스트 커버리지(Test Coverage) 정리 (0) | 2025.10.30 |
| [CS] EAI (Enterprise Application Integration) 정리 (0) | 2025.10.30 |