목차
1. 버그 분류 체계
1-1. 요구사항 및 기능 버그
1-2. 구조적 버그
1-3. 데이터 버그
1-4. 코딩 버그
1-5. 인터페이스, 통합, 시스템 버그
1-6. 테스트 및 테스트 설계 버그
2. 테스트 방법
2-1. 동등 분할 테스트
2-2. 경계값 분석 테스트
2-3. 상태 전이 분석 테스트
3. 예외적인 버그
4. 참고 자료
1-1. 요구사항 및 기능 버그
(Requirements and Feature Bugs)
요구사항과 명세(Requirements and Specifications)
- 불완전하거나, 모호하거나, 자기모순적
- 잘못된 이해 or 이해 불가능
기능 버그(Feature Bugs)
- 잘못되거나, 누락, 불필요
- 필수적이지 않은 기능(free한)은 변수가 될 수있음(긍정 or 부정)
기능 상호작용(Feature Interaction)
- 기능간 그룹을 만들어 동작
- 그룹내 개별 기능은 정상이지만 상호작용시 예측 불가
1-2. 구조적 버그
(Structural Bugs)
제어 및 시퀀스 버그(Control and Sequence Bugs)
- 빠트린 경로, 도달 불가능한 코드, 루프의 부적절한 사용, 프로세
스 미싱, 프로세스 중복, 불필요한 프로세스, GOTO의 부적절한 사
용, switch의 잘못된 사용….
- 언어선택, 코드 스타일로 부분적으로 예방 가능
프로세싱 버그(Processing Bugs)
- 산술적, 수학적, 알고리즘 선택 등을 포함
로직 버그(Logic Bugs)
- 케이스의 부적절한 사용, 잘못된 부정, 조건 조합의 오류
- 제어 및 시퀀스 버그 + 프로세싱 버그
초기화 버그(Initialization Bugs)
- 부적절한, 불필요한(성능 영향) 초기화
데이터 흐름 버그와 아노말리(Data-Flow Bugs and
Anomalies)
- 데이터 선언, 초기화 타이밍
- 데이터 변경 후 저장 누락
- 대부분 실행을 해야 발견
1-3. 데이터 버그
(Data Bugs)
동적 vs 정적(Dynamic Versus Static)
- 데이터의 생명 주기가 다름
정보 인자 제어(Information, Parameter, and Control)
- 데이터는 세가지 역할을 복합적으로 수행
- 역할에 따른 적절한 검증이 필요
컨텐츠 구조 속성(Contents, Structure, and Attributes)
- 데이터 명세의 구성
1-5. 인터페이스, 통합, 시스템 버그
(Interface, Integration, and System Bugs)
외부 인터페이스(External Interfaces)
- 유저와 머신이 의사소통하는데 사용되는 수단, 변경이 힘듬
내부 인터페이스(Internal Interfaces)
- 원칙적으로 외부 인터페이스와 동일하지만 더 통제적, 타협이
가능
하드웨어 아키텍쳐(Hardware Architecture)
- 실제 디바이스와 시뮬레이터 사이의 간극
운영체제(Operating System)
- 운영체제에 대한 잘못된 이해 or 운영체제 자체의 문제
소프트웨어 아키텍쳐(Software Architecture)
- 대부분 부하(load)에 의존, 루틴에는 문제가 없음
제어 및 시퀀스 버그(Control and Sequence Bugs)
리소스 관리 문제(Resource Management Problems)
- 메모리, 디스크 등
1-5. 인터페이스, 통합, 시스템 버그
(Interface, Integration, and System Bugs)
통합 버그(Integration Bugs)
- 잘 동작하는 컴포넌트 간 통합관련 버그
시스템 버그(System Bugs)
- 특정 컴포넌트들의 단순 상호작용 문제가 아닌 규모가 큰 버그
*위 버그들은 빈도가 높지 않으나 뒤늦게 발견되고 수정이 힘듬
1-6. 테스트와 테스트 설계버그
(Test and Test Design Bugs)
- 테스터라고 버그에 면역이 있는게 아님
- 테스트 자체도 버그를 가질 수 있다.
2-1. 동등 분할 테스트
(Equivalence Partitioning)
- 입/출력값 영역을 유한개의 상호 독립적인 집합으로 나누
어 수학적인 등가 집합을 만든 후, 각 등가집합의 원소 중
대푯값을 선택해 테스트를 진행
<예시>
2-2. 경계값 분석 테스트
(Boundary Analysis)
- 입/출력값 영역을 유한개의 상호 독립적인 집합으로 나누
어 수학적인 등가 집합을 만든 후, 각 등가집합의 원소 중
최댓값과 최소값을 그 영역의 경계값으로 삼아 테스트를
진행
<예시>
2-3. 상태전이 분석 테스트
(State Transition Analysis)
- 시스템의 현재 상황과 이전의 이력을 반영하는 상태 및 그
변화에 따라 다르게 동작함을 다이어그램을 통해 표현할
수 있다. 그 다이어그램을 통해 상태 사이의 관계, 상태간
의 전이, 상태를 변화 시키는 이벤트, 입력값, 상태 변화로
유발되는 동작 등을 파악
<예시>
4. 참고자료
Testing IT : An Off-the-Shelf Software Testing Process by John Watkins
Software Testing Technques by Boris Bizer
ISTQB: www.istqb.org
ISO: www.iso.org
소프트웨어 테스팅 노트: grapevine9700.tistory.com