결함을 발견하는 것만큼이나 체계적으로 관리하는 것이 중요합니다! 결함 관리 프로세스, 우선순위 결정 방법, 코드 인스펙션을 통한 결함 제거, 형상 관리를 통한 버전 관리 등을 이해하고 실무에 적용할 수 있어야 합니다.
1. 결함 관리 
💡 전문가의 조언: 결함 관리는 단순히 버그를 찾는 것이 아니라, 발견된 결함을 기록하고 원인을 분석하여 해결한 후 재발을 방지하는 전체 프로세스입니다. 결함 상태와 관리 도구를 명확히 이해해야 합니다.
결함(Fault)의 정의
결함은 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것을 의미합니다.
결함의 특징
- 소프트웨어 개발자가 의도한 것과 다르게 동작하거나 다른 결과 발생
- 오류 발생, 작동 실패 등이 결함에 해당
- 기능 명세서와의 불일치를 통해 판단
일반적인 결함 판단 기준
| 판단 기준 | 설명 |
|---|---|
| 기능 미수행 | 기능 명세서의 기능이 제대로 수행되지 않는 경우 |
| 묵시적 기능 미수행 | 명세되어 있지는 않지만 묵시적으로 필요한 기능이 수행되지 않는 경우 |
| 테스트 관점 문제 | 테스트 시각에서 보았을 때 문제라고 판단하는 경우 |
결함 관리 프로세스
1. 결함 관리 계획
↓
2. 결함 기록
↓
3. 결함 검토
↓
4. 결함 수정
↓
5. 결함 재확인
↓
6. 결함 상태 추적 및 모니터링
↓
7. 최종 결함 분석 및 보고서 작성
결함 관리 프로세스 상세
| 단계 | 주요 활동 | 담당자 |
|---|---|---|
| 1. 결함 관리 계획 | 전체 프로세스에 대한 일정, 인력, 업무 프로세스 확보 및 계획 수립 | 프로젝트 관리자 |
| 2. 결함 기록 | 발견된 결함을 결함 관리 DB에 등록 | 테스터 |
| 3. 결함 검토 | 등록된 결함 검토 및 개발자 배정 | 테스터, 프로그램 리더, QA 담당자 |
| 4. 결함 수정 | 전달받은 결함 수정 | 개발자 |
| 5. 결함 재확인 | 수정 내용 확인 및 재테스트 수행 | 테스터 |
| 6. 결함 상태 추적 | 결함 유형 발생률 등을 대시보드/게시판으로 제공 | QA 담당자 |
| 7. 최종 분석 및 보고 | 결함 정보와 이해관계자 의견이 반영된 보고서 작성 | QA 담당자, 프로젝트 관리자 |
결함 상태 추적
결함 관리 측정 지표
| 구분 | 설명 |
|---|---|
| 결함 분포 | 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정 |
| 결함 추세 | 테스트 진행 시간에 따른 결함 수의 추이 분석 |
| 결함 에이징 | 특정 결함 상태로 지속되는 시간 측정 |
결함 상태 (Defect Status)
| 결함 상태 | 내용 |
|---|---|
| Open | 결함이 보고만 되고 분석되지 않은 상태 |
| Assigned | 결함의 영향 분석 및 수정을 위해 개발자에게 전달된 상태 |
| Fixed | 개발자에 의해 결함 수정이 완료된 상태 |
| Closed | 수정된 결함에 대해 재테스트 시 결함이 발견되지 않은 상태 |
| Deferred | 결함 수정이 연기된 상태 |
| Classified | 보고된 결함이 결함이 아니라고 확인된 상태 |
결함 추적 순서
Open (결함 등록)
↓
Reviewed (결함 검토)
↓
Assigned (결함 할당)
↓
Resolved (결함 수정)
↓ (필요시)
Deferred (결함 조치 보류)
↓
Closed (결함 종료)
또는
Clarified (결함 해제)
결함 추적 단계별 설명
| 단계 | 설명 | 상태 |
|---|---|---|
| 결함 등록 | 테스터와 QA 담당자에 의해 발견된 결함 등록 | Open |
| 결함 검토 | 테스터, QA 담당자, 프로그램 리더, 담당 모듈 개발자에 의해 검토 | Reviewed |
| 결함 할당 | 결함 수정을 위해 개발자와 문제 해결 담당자에게 할당 | Assigned |
| 결함 수정 | 개발자가 결함 수정 완료 | Resolved |
| 결함 조치 보류 | 결함 수정 불가능으로 연기, 우선순위와 일정에 따라 재조율 준비 | Deferred |
| 결함 종료 | 결함이 해결되어 테스터와 QA 담당자가 종료 승인 | Closed |
| 결함 해제 | 검토 결과 결함이 아니라고 판명 | Clarified |
결함 분류
| 결함 유형 | 설명 | 주요 원인 |
|---|---|---|
| 시스템 결함 | • 시스템 다운, 애플리케이션 작동 정지/종료 • 응답 시간 지연, 데이터베이스 오류 |
애플리케이션 환경이나 데이터베이스 처리 |
| 기능 결함 | • 사용자 요구사항의 잘못된 구현 • 비즈니스 프로세스, 스크립트 오류, 계산 오류 |
기획, 설계, 업무 시나리오 단계에서 유입 |
| GUI 결함 | • UI 비일관성, 데이터 타입 표시 오류 • 부정확한 커서/메시지 오류 |
사용자 화면 표시 관련 |
| 문서 결함 | • 요구사항과 기능 요구사항의 불일치 • 온라인/오프라인 매뉴얼의 불일치 |
기획자, 사용자, 개발자 간 의사소통 부족 |
결함 관리 도구
| 도구 | 특징 |
|---|---|
| Mantis | • 결함 및 이슈 관리 도구 • 소프트웨어 설계 시 단위별 작업 내용 기록 • 결함 추적 가능 |
| Trac | • 결함 추적 • 결함 통합 관리 가능 |
| Redmine | • 프로젝트 관리 • 결함 추적 기능 제공 |
| Bugzilla | • 결함 신고, 확인, 처리 등 지속적 관리 • 결함 심각도와 우선순위 지정 가능 |
💡 팁: 결함 관리 도구는 프로젝트 규모와 팀 특성에 맞게 선택해야 합니다. 오픈소스 도구들은 대부분 무료로 사용할 수 있어 소규모 프로젝트에 적합합니다.
2. 결함 조치 우선순위
결함 조치 우선순위의 개요
결함 조치의 우선순위는 발견된 결함 처리에 대한 신속성을 나타내는 척도로, 단위 업무의 가중치와 결함 심각도 등에 따라 결정됩니다.
우선순위 결정 기준
- 우선순위 등급: 긴급, 보통, 낮음
- 우선순위에 따라 인력 투입 순서를 결정하고 일정 조정
- 일반적으로 결함 심각도가 높으면 우선순위도 높음
- 단위 업무의 중요도나 특성에 따라 예외 가능
💡 참고: 결함 심각도(Severity)와 우선순위(Priority)는 다른 개념입니다. 심각도는 기술적 영향도이고, 우선순위는 비즈니스적 중요도를 반영합니다.
가중치 (Weight)
가중치는 애플리케이션의 평가 항목이나 각 단위 업무가 차지하는 중요도를 의미합니다.
평가 항목의 가중치
- 단위 업무에 대한 애플리케이션의 영향을 평가할 수 있는 항목 선정
- 각 항목별 중요도에 따라 비율 설정
단위 업무의 가중치 산정 방법
- 단위 업무별로 각 평가 항목에 대해 1~5점의 등급 산정
- 등급에 평가 항목의 가중치 비율 적용
- 모든 항목의 값을 합산하여 산출
가중치 산정 예시
| 단위 업무 | 평가 등급(1~5) | 가중치 | |||
|---|---|---|---|---|---|
| 업무/서비스 (30%) |
시스템 의존도 (20%) |
사용자 범위 (30%) |
월 이용자 수 (20%) |
||
| 도서관리 | 5 | 3 | 5 | 4 | 4.4 |
| 회원관리 | 3 | 4 | 5 | 2 | 3.1 |
도서관리 가중치 계산:
5 × 0.3 + 3 × 0.2 + 5 × 0.3 + 4 × 0.2
= 1.5 + 0.6 + 1.5 + 0.8
= 4.4
결함 심각도 (Severity)
| 심각도 | 설명 | 표시 | 가중치 측정 구간 |
|---|---|---|---|
| High | • 단위 업무 프로세스가 비정상적으로 수행 • 다른 단위 기능 및 시스템 전체에 영향 |
H | 4 이상 |
| Medium | • 일반 사용자 환경에서 정상적으로 수행되지 않음 | M | 3 이상 ~ 4 미만 |
| Low | • 일반 사용자 환경에서는 정상 수행 • 특정 사용자에게만 제한적으로 영향 |
L | 3 미만 |
결함 조치 우선순위의 결정 순서
1단계: 테스트 결함 목록과 개선 방안 확인
↓
2단계: 테스트별 결함 원인 분류
↓
3단계: 결함의 개선 범위, 개선 효과 정의
↓
4단계: 업무별 중요도 파악을 위한 가중치 부여
↓
5단계: 가중치와 결함 업무를 연결하여 심각도 계산
↓
6단계: 정량적·정성적 평가를 통한 우선순위 결정
우선순위 결정 시 고려사항
| 고려사항 | 설명 |
|---|---|
| 정량적 평가 | 가중치 기반으로 계산된 결함 심각도 활용 |
| 정성적 평가 | 업무별 담당자와 팀별 회의를 통한 종합적 판단 |
| 비즈니스 영향도 | 업무의 중요도, 사용 빈도, 사용자 범위 고려 |
| 기술적 난이도 | 수정 복잡도, 소요 시간, 파급 효과 고려 |
3. 결함 조치 관리 
💡 전문가의 조언: 결함 조치 관리는 단순히 버그를 고치는 것이 아니라, 코드 인스펙션을 통해 체계적으로 결함을 제거하고, 형상 관리를 통해 변경 이력을 관리하는 전체 프로세스입니다.
결함 조치 관리의 개요
결함 조치 관리는 결함이 발생한 코드에서 결함을 제거하고 변경된 코드의 버전과 이력을 관리하는 것을 의미합니다.
결함 조치 관리의 구성
- 결함 제거: 코드 인스펙션을 통해 수행
- 버전 및 이력 관리: 형상 관리를 통해 수행
코드 인스펙션 (Code Inspection)
코드 인스펙션은 코드의 결함을 파악하고 제거하기 위해 개발 가이드의 준수 여부를 확인하는 것입니다.
코드 인스펙션의 특징
- 기능으로 이상이 없는 코드를 대상으로 수행
- 적절히 수행할 경우 코드에 포함된 에러의 90%까지 발견 가능
- 프로젝트 수행 단계 전체에 걸친 리스크 절감 및 비용 감소
- 품질 향상 기대
- 다른 개발자의 기술 습득 및 학습 기회 제공
- 재공학(Re-Engineering) 가능 영역 식별에 도움
코드 인스펙션 방법
| 방법 | 설명 | 적용 시점 |
|---|---|---|
| 자동 인스펙션 | • 애플리케이션에 적합한 코드 인스펙션 도구 활용 • 자동화된 검토 수행 |
기본적으로 모든 코드에 적용 |
| 수동 인스펙션 | • 코드를 추출하여 직접 검토 • 전문가의 경험과 판단 활용 |
• 자동 인스펙션 결과 에러가 많은 경우 • 복잡한 처리 로직이 있는 경우 • 신규 개발자의 코드 |
코드 인스펙션의 수행 절차
| 단계 | 주요 활동 |
|---|---|
|
1. 용량 계획 (Capacity Plan) |
인스펙션할 코드의 선정 기준과 범위 결정 |
|
2. 시작 (Overview) |
자동 인스펙션 또는 수동 인스펙션 수행 |
|
3. 준비 (Preparation) |
• 계획서 및 체크리스트 작성 • 관련자에게 일정 공지 • 산출물 준비 |
|
4. 인스펙션 회의 (Inspection Meeting) |
• 사전 검토 실시 • 회의 진행 • 결과 보고서 작성 |
|
5. 재작업 (Rework) |
• 코드 작성자가 직접 시정 조치 • 인스펙션 진행자가 결과 확인 |
|
6. 후속 처리 (Follow-up) |
• 결과 분석서 작성 • 보고 |
코드 인스펙션 vs 워크스루
| 구분 | 코드 인스펙션 (Code Inspection) |
워크스루 (Walkthrough) |
|---|---|---|
| 수행 목적 | 결함 파악 및 제거 | 산출물 평가 및 개선 |
| 수행 조건 | 완성도가 기준 이상일 때 | 팀이나 관리자 필요 시 |
| 결함 수정 여부 | 모든 결함을 제거 | 코드 작성자가 결함 수정 여부 결정 |
| 참여자 | 동료 | 기술 전문가 및 동료 |
| 발표자 | 검토 대상에 대한 의존도가 높은 사람 (주 사용자) |
코드 작성자 |
| 체크리스트 | 사용 | 사용하지 않음 |
💡 팁: 코드 인스펙션은 공식적이고 체계적인 검토 방법이며, 워크스루는 비공식적이고 유연한 검토 방법입니다. 프로젝트 상황에 맞게 선택하여 활용하세요.
형상 관리 (Configuration Management)
형상 관리는 소프트웨어 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동입니다.
형상 관리의 목적
- 소프트웨어 변경의 원인을 알아내고 제어
- 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보
- 소프트웨어 개발의 전체 비용 절감
- 개발 과정의 여러 방해 요인 최소화
형상 관리의 적용 범위
- 소프트웨어 개발의 전 단계에 적용
- 유지보수 단계에서도 수행
소프트웨어 형상 항목 (SCI: Software Configuration Item)
형상 관리의 대상이 되는 항목들을 개발 단계별로 정리하면 다음과 같습니다.
| 개발 단계 | 형상 항목 |
|---|---|
| 계획 단계 | • 시스템 명세서 • 개발 계획서 • 품질평가 계획서 • 개발 표준 및 매뉴얼 |
| 요구 분석 단계 | • 자료 흐름도(DFD) • 자료 사전(Data Dictionary) |
| 설계 단계 | • 입출력 명세서 • 화면 설계서 • 초기 사용자 매뉴얼 • 시스템 구조도 |
| 구현 단계 | • 원시 코드 • 목적 코드 • 실행 코드 • 단위 시험 보고서 |
| 시스템 통합 및 시험 단계 | • 통합 시험 보고서 • 기능 시험 보고서 • 성능 시험 보고서 • 과부하 시험 보고서 |
| 설치 및 운영 단계 | • 목적 코드 • 실행 코드 • 운영자 매뉴얼 • 사용자 매뉴얼 |
형상 관리의 기능
| 기능 | 설명 | 주요 활동 |
|---|---|---|
| 형상 식별 | 형상 관리 대상에 이름과 관리 번호 부여 | • 계층 구조로 구분 • 수정 및 추적 용이하도록 식별자 부여 |
|
버전 제어 (버전 관리) |
소프트웨어 변경 과정에서 생성된 다른 버전 관리 | • 특정 절차와 도구 결합 • 버전 관리 수행 |
|
형상 통제 (변경 관리) |
식별된 형상 항목에 대한 변경 요구 검토 | • 현재 기준선(Base Line) 갱신 또는 보류 • 변경 요청 승인, 일정, 결함 과정 관리 |
| 형상 감사 | 기준선의 무결성 평가 | • 확인, 검증, 검열 과정 • 공식적 승인 |
|
형상 기록 (상태 보고) |
형상 작업 결과를 기록·관리 | • 보고서 작성 • 이력 관리 |
💡 기준선(Base Line): 소프트웨어 개발 과정에서 공식적으로 검토되고 승인된 명세서나 제품으로, 추가 개발의 기준이 되며 공식 절차에 의해서만 변경 가능합니다.
핵심 요약 정리
결함 상태 추적 흐름
Open (등록) → Reviewed (검토) → Assigned (할당)
↓
Clarified (해제) ← Closed (종료) ← Resolved (수정)
↓
Deferred (보류)
결함 심각도 vs 우선순위
| 구분 | 의미 | 결정 기준 |
|---|---|---|
| 심각도(Severity) | 기술적 영향도 | 시스템에 미치는 영향 |
| 우선순위(Priority) | 비즈니스 중요도 | 업무 가중치 + 심각도 |
코드 인스펙션 vs 워크스루
코드 인스펙션: 결함 파악 및 제거 (공식적, 체크리스트 O)
워크스루: 산출물 평가 및 개선 (비공식적, 체크리스트 X)
형상 관리 5대 기능
- 형상 식별: 이름과 번호 부여
- 버전 제어: 버전 관리
- 형상 통제: 변경 관리
- 형상 감사: 무결성 평가
- 형상 기록: 상태 보고
주요 결함 관리 도구
- Mantis: 결함 추적 + 작업 내용 기록
- Trac: 결함 통합 관리
- Redmine: 프로젝트 관리 + 결함 추적
- Bugzilla: 심각도·우선순위 지정 가능
💡 전문가의 조언: 결함 관리는 단순히 버그를 찾아 고치는 것이 아니라, 체계적인 프로세스를 통해 관리하고, 우선순위에 따라 처리하며, 형상 관리를 통해 변경 이력을 추적하는 전체 과정입니다. 결함 상태, 심각도, 관리 도구의 특징을 명확히 이해하면 시험에서 좋은 점수를 받을 수 있습니다!