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가지 원칙

  1. 결함 존재 증명이지, 무결함 증명은 아님
  2. 완벽한 테스트는 불가능
  3. 초기에 테스트할수록 좋다 (조기 테스트)
  4. 결함 집중 원칙 (결함은 일부 모듈에 집중됨)
  5. 살충제 패러독스 (같은 테스트만 반복하면 효과 없음)
  6. 테스트는 상황에 따라 달라진다
  7. 오류 부재의 궤변 (기능이 틀리면 오류가 없어도 소용 없음)

📝 요약 정리

구분 내용
테스트 종류 단위 / 통합 / 시스템 / 인수
테스트 기법 블랙박스 vs 화이트박스
절차 계획 → 설계 → 실행 → 수정 → 보고
도구 자동화 도구(JUnit 등)
7원칙 결함 집중, 조기 테스트, 살충제 패러독스 등
 

마지막 한마디

"테스트는 프로젝트의 마침표가 아닌, 출발선이에요!"
완벽한 코드는 없지만, 더 나은 코드를 위한 노력은 할 수 있어요.
테스트를 잘하는 개발자는 신뢰받는 개발자랍니다!