🍚전공이 밥 먹여준다믄/📕 소프트웨어공학
Chapter 09. 테스트
code.with.siyeon
2025. 5. 15. 18:55
소프트웨어 공학 수업 9장 요약
by 박시연
🧪 테스트란?
**테스트(Test)**란?
소프트웨어가 "제대로 동작하는지" 확인하는 과정이에요.
테스트는 단순히 오류를 찾는 게 아니라, **"기능이 요구대로 잘 동작하는지 검증"**하는 단계예요!
1. ✔️ 테스트의 목적
- 정확성 검증: 올바른 결과를 내는지 확인
- 신뢰성 확보: 시스템이 얼마나 안정적으로 작동하는지 확인
- 오류 발견: 코드 속 숨어있는 버그를 미리 제거
- 유지보수 용이성: 향후 수정해도 기존 기능이 잘 유지되도록!
2. 🔎 테스트 종류
테스트 구분 | 설명 |
단위 테스트(Unit Test) | 하나의 모듈 또는 함수 단위로 테스트 |
통합 테스트(Integration Test) | 여러 모듈이 잘 연결되는지 확인 |
시스템 테스트(System Test) | 전체 시스템을 대상으로 수행 |
인수 테스트(Acceptance Test) | 사용자가 요구한 기능을 충족하는지 최종 확인 |
3. 🧩 테스트 기법
1) 블랙박스 테스트
“내부 구조 모름, 기능만 확인!”
- 사용자의 관점에서 테스트
- 입력값 → 예상 출력값 비교
- 장점: 설계자/개발자가 아닌 사람도 가능
- 예시: 로그인 기능에 올바른 계정 넣었을 때 정상 로그인 되는지?
2) 화이트박스 테스트
“코드 안을 들여다보며 테스트”
- 내부 로직, 분기, 조건 등 코드를 분석하면서 테스트
- 조건 커버리지 / 경로 커버리지 등
- 예시: if, for 조건문이 전부 실행되는지 확인
4. ✅ 테스트 절차
1️⃣ 테스트 계획 수립
2️⃣ 테스트 케이스 설계
3️⃣ 테스트 수행 및 기록
4️⃣ 오류 분석 및 수정
5️⃣ 테스트 완료 보고
5. 🛠 테스트 자동화
사람이 직접 일일이 검사하기 너무 힘들잖아?
- 자동화 도구 사용 (예: JUnit, PyTest 등)
- 테스트 케이스를 미리 정의해두고 코드가 바뀔 때마다 자동 확인!
장점
- 반복되는 테스트 자동 실행
- 빠른 피드백
- 오류 누락 방지!
6. 🧠 테스트의 7가지 원칙
- 결함 존재 증명이지, 무결함 증명은 아님
- 완벽한 테스트는 불가능
- 초기에 테스트할수록 좋다 (조기 테스트)
- 결함 집중 원칙 (결함은 일부 모듈에 집중됨)
- 살충제 패러독스 (같은 테스트만 반복하면 효과 없음)
- 테스트는 상황에 따라 달라진다
- 오류 부재의 궤변 (기능이 틀리면 오류가 없어도 소용 없음)
📝 요약 정리
구분 | 내용 |
테스트 종류 | 단위 / 통합 / 시스템 / 인수 |
테스트 기법 | 블랙박스 vs 화이트박스 |
절차 | 계획 → 설계 → 실행 → 수정 → 보고 |
도구 | 자동화 도구(JUnit 등) |
7원칙 | 결함 집중, 조기 테스트, 살충제 패러독스 등 |
마지막 한마디
"테스트는 프로젝트의 마침표가 아닌, 출발선이에요!"
완벽한 코드는 없지만, 더 나은 코드를 위한 노력은 할 수 있어요.
테스트를 잘하는 개발자는 신뢰받는 개발자랍니다!