1.2 오류, 결함, 장애
- 개념
- 결함 유형
- 개발 단계별 결함
- 테스팅, 디버깅, 재테스팅
1.2.1 개념
소프트웨어를 개발할 때 기대, 약속된 소프트웨어의 동작에 대한 기준을 요구사항이라고 함
ex) USB가 삽입되었을 때 오디오가 재생되어야 한다 -> 라는 동작을 요구함
장애(Failure)
프로그램의 실행 결과와 요구사항에 명시된 결과에 차이가 있음을 의미
ex) USB가 삽입되었는데 오디오가 재생되지 않음
결함(Defect)
소프트웨어 내에 장애를 유발할 수 있는 문제를 말함
오류(Error)
결함이 생기게 한 개발자의 행위
1.2.2 결함 유형

누락(Omission)
요구 명세에 명세된 요구사항이 시스템의 구현에 반영되지 않은 결함
ex) 재생 버튼 터치 시 오디오 재생 -> 버튼 터치해도 오디오 재생되지 않음
기능적인 것뿐만 아니라 성능, 보안, 안전, 신뢰도 등 품질 요소에 관한 누락 포함
부정확한(Incorrect) 구현
요구 명세에 명시된 요구사항이 소프트웨어에 부정확하게 반영된 결함
ex) 재생 버튼 터치 시 오디오 재생 -> 버튼 터치했을 때 비디오가 재생됨
기능적인 것뿐만 아니라 성능, 보안, 안전, 신뢰도 등 품질 요소에 관한 누락 포함
비관련(Extraneous) 결함
요구 명세와 관련되지 않은 구현
당장 직접적인 장애를 유발하지 않을 수도 있음
But 시스템의 기능 및 품질에 기여하지 않는 무의미한 코드가 존재한다면 불필요한 관리를 유발해 결국에는 다른 결함을 초래할 수 있음
ex) 재생 버튼 터치 시 오디오 재생 -> 현재 위치 파악하는 코드가 삽입되어 있음 -> 장애를 발생하진 않지만 불필요한 코드
1.2.3 개발 단계별 결함
결함은 소스 코드를 포함해 모든 개발 산출물에서 존재할 수 있음
개발자는 개발하는 각 단계에서 오류를 범할 수 있으므로 각 단계의 산출물에는 결함 존재 가능
ex) 요구사항에는 +1 -> 설계서에서 +2로 오표기 -> 소스 코드 +2로 개발되었을 경우 설계서 작성 단계에서 결함 발생
결함이 발생한 단계에서 제거하지 않고 이후 개발 단계에 전달되면 이 결함을 제거하기 위하여 더 많은 비용이 소요됨
ex) 요구분석 단계 결함 제거 0.1-0.2 일 때, 코딩에서 결함 제거할 경우 1 소요
So 결함 해결에 소요되는 비용을 최소화하기 위해 각 개발 단계의 결과물을 테스트하여 최대한 빨리 검출하고 제거할 필요 있음
1.2.4 테스트, 디버깅, 재테스팅
테스팅
요구사항과 소프트웨어의 실제 동작과의 차이를 확인
동적 테스트는 결함의 존재 여부를 알 수 없는 상황에서 결함의 발견을 목적으로 프로그램을 실행
예상 결과와 다른 결과를 보일 때, 결함이 존재한다고 추측
테스트 환경과 테스트 케이스
어떤 환경에서 어떤 입력값을 사용했을 때 예상되는 결과와 실제 출력 결과 등만을 기록하고 어떤 모듈에서 발생했고 어떻게 수정해야 되는지는 관여하지 않음
디버깅
테스팅을 통하여 결함의 존재를 확인한 후에 수행되며 결함의 위치를 파악하고 제거
재태스팅(Re-testing)
디버깅에서 수정하고 난 후에 실제로 결함이 제거되었는지 확인
초기에 결함을 검출한 테스트 케이스를 이용하여 테스팅을 다시 수행
'도서 및 강의 > 소프트웨어 테스트 전문가(CSTS) 가이드' 카테고리의 다른 글
| 1장 테스트 개요 - 1.5 테스트 기본 용어 (0) | 2025.11.24 |
|---|---|
| 1장 테스트 개요 - 1.4 테스트와 품질 (0) | 2025.11.24 |
| 1장 테스트 개요 - 1.3 테스트의 현실/실제 (0) | 2025.11.23 |
| 1장 테스트 개요 - 1.1 테스트 목적 (0) | 2025.11.08 |
| 소프트웨어 테스트 전문가(CSTS) 가이드 목차-일반등급 출제 기준 (0) | 2025.11.08 |