✅ 문제 요약
소프트웨어 시험에 대해 시험 통과 기준, 시험 환경 구성, 테스트 생명주기 단계별 활동, 시험 전략, 오류 발생 시 해결 과정 및 시험 문서화 방안을 설명하시오.
✅ 1. 개념
● 소프트웨어 시험(Software Testing)
소프트웨어의 품질을 보증하기 위해 요구사항에 부합하는지 검증하고 결함을 식별하는 활동.
✅ 2. 시험 통과 기준 (Test Exit Criteria)
| 항목 | 설명 |
|---|
| 기능 테스트 통과율 | 전체 기능 중 요구 기능이 95% 이상 통과 |
| 결함 밀도 | KLOC(1,000라인당 결함 수)가 기준 이하 (ex. 0.5 이하) |
| 심각한 결함 없음 | Critical 또는 Blocker 레벨의 결함이 없어야 함 |
| 테스트 커버리지 | 명세 기반 테스트 커버리지가 90% 이상 |
| 리스크 커버리지 | 고위험 기능 테스트 완료 및 결함 없음 확인 |
✅ 3. 시험 환경 구성 (Test Environment Configuration)
| 항목 | 설명 |
|---|
| 하드웨어 구성 | 실제 운영 환경을 모사한 서버, 클라이언트 구성 |
| 소프트웨어 구성 | OS, 미들웨어, DBMS, 테스트 대상 소프트웨어 버전 등 |
| 테스트 도구 | 자동화 도구 (예: Selenium, JUnit), 결함 추적 도구 (예: JIRA) |
| 네트워크 구성 | 실제 운영 환경과 동일한 네트워크 세팅 |
| 가상화/컨테이너 활용 | Docker 등으로 테스트 환경 일관성 확보 |
✅ 4. 소프트웨어 시험 생명주기 (Software Test Lifecycle)
| 단계 | 주요 활동 |
|---|
| ① 테스트 계획 수립 (Test Planning) | 목표, 범위, 일정, 인력, 리스크 식별 및 계획 수립 |
| ② 테스트 분석 (Test Analysis) | 요구사항 기반 테스트 조건 도출 |
| ③ 테스트 설계 (Test Design) | 테스트 케이스/시나리오 설계 및 테스트 데이터 정의 |
| ④ 테스트 구현 (Test Implementation) | 테스트 케이스 구현, 스크립트 작성, 테스트 환경 구축 |
| ⑤ 테스트 실행 (Test Execution) | 테스트 수행, 결함 발견 시 보고 및 추적 |
| ⑥ 결함 추적 및 재시험 (Defect Tracking & Retest) | 결함 수정 후 재시험 수행 |
| ⑦ 테스트 종료 (Test Closure) | 테스트 종료 기준 만족 여부 확인, 테스트 요약 보고서 작성 |
✅ 5. 시험 전략 (Test Strategy)
| 전략 유형 | 설명 |
|---|
| 빅뱅 테스트(Big Bang) | 모든 모듈을 통합한 후 일괄 테스트 수행 |
| 하향식 통합 테스트 | 상위 모듈부터 점진적으로 하위 모듈 통합 |
| 상향식 통합 테스트 | 하위 모듈부터 상위로 통합 테스트 |
| 리스크 기반 테스트 | 중요 기능, 고위험 기능 우선 테스트 |
| 테스트 자동화 전략 | 반복 테스트 자동화로 효율성 확보 |
| 정적 테스트 전략 | 코드 실행 없이 리뷰, 정적 분석 등으로 오류 사전 탐지 |
✅ 6. 시험 중 오류 발생 시 해결 과정
| 단계 | 활동 |
|---|
| ① 오류 식별 | 로그 분석, 스택 트레이스 확인 등으로 오류 위치 파악 |
| ② 오류 분류 | 오류의 심각도(Critical, Major, Minor) 판단 |
| ③ 오류 보고 | 결함 추적 도구에 상세 내용 등록 (재현 절차 포함) |
| ④ 오류 수정 | 개발팀에서 원인 분석 후 수정 |
| ⑤ 재시험 수행 | 동일 테스트 케이스로 오류 수정 여부 확인 |
| ⑥ 회귀 테스트 | 주변 기능에 영향 없는지 확인 위한 재검증 |
✅ 7. 시험 문서화(Test Documentation)
| 문서 종류 | 설명 |
|---|
| 시험 계획서 (Test Plan) | 목표, 범위, 방법, 자원, 일정 등 포함된 전략 문서 |
| 시험 케이스 (Test Case) | 테스트 입력, 절차, 기대 결과 명시 |
| 시험 시나리오 (Test Scenario) | 사용자 시나리오 기반의 테스트 흐름 정리 |
| 결함 보고서 (Bug Report) | 발생 결함의 상세 정보 문서화 |
| 테스트 요약 보고서 (Test Summary Report) | 수행 내역, 결함 통계, 통과율 등 최종 요약 |
✅ 핵심 용어 정리
| 용어 | 의미 |
|---|
| 테스트 케이스(Test Case) | 입력값, 절차, 기대 결과 포함한 개별 테스트 단위 |
| 결함(Bug, Defect) | 요구사항과 실제 결과가 불일치하는 상태 |
| 테스트 커버리지(Test Coverage) | 테스트가 소프트웨어 요구사항을 얼마나 다루는지 측정 |
| 정적 테스트(Static Testing) | 실행 없이 문서, 코드 검토로 오류 탐지 |
| 동적 테스트(Dynamic Testing) | 소프트웨어 실행 후 결과 확인하는 테스트 방식 |
✅ 어린이 버전 요약
소프트웨어가 잘 작동하는지 시험하는 거예요. 시험하려면 계획을 세우고, 컴퓨터 환경을 준비하고, 하나씩 기능을 점검해요. 문제가 생기면 고치고 다시 확인해요. 마지막으로 무엇을 시험했고, 어떤 문제가 있었는지 기록해요. 시험에 통과하려면 모든 기능이 잘 돌아가야 하고, 중요한 문제는 없어야 해요!
✅ 마무리 요약
소프트웨어 시험은 품질을 확보하고 사용자 요구사항에 맞게 개발되었는지를 검증하는 핵심 활동입니다. 시험 통과 기준, 환경 구성, 생명주기별 활동, 전략적 접근, 오류 대응 및 문서화 체계를 통해 효과적으로 결함을 식별하고 개선할 수 있습니다.