SlideShare una empresa de Scribd logo
1 de 17
버그 분류 체계 + 테스트 방법
APP 개발팀
박경일
목차
1. 버그 분류 체계
1-1. 요구사항 및 기능 버그
1-2. 구조적 버그
1-3. 데이터 버그
1-4. 코딩 버그
1-5. 인터페이스, 통합, 시스템 버그
1-6. 테스트 및 테스트 설계 버그
2. 테스트 방법
2-1. 동등 분할 테스트
2-2. 경계값 분석 테스트
2-3. 상태 전이 분석 테스트
3. 예외적인 버그
4. 참고 자료
1. 버그 분류 체계
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-4. 코딩 버그
(Coding Bugs)
소스 언어 변환기
- 어셈블러, 컴파일러, 인터프리터 에서 일부 감지
- 오타…
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. 테스트 방법
2-1. 동등 분할 테스트
(Equivalence Partitioning)
- 입/출력값 영역을 유한개의 상호 독립적인 집합으로 나누
어 수학적인 등가 집합을 만든 후, 각 등가집합의 원소 중
대푯값을 선택해 테스트를 진행
<예시>
2-2. 경계값 분석 테스트
(Boundary Analysis)
- 입/출력값 영역을 유한개의 상호 독립적인 집합으로 나누
어 수학적인 등가 집합을 만든 후, 각 등가집합의 원소 중
최댓값과 최소값을 그 영역의 경계값으로 삼아 테스트를
진행
<예시>
2-3. 상태전이 분석 테스트
(State Transition Analysis)
- 시스템의 현재 상황과 이전의 이력을 반영하는 상태 및 그
변화에 따라 다르게 동작함을 다이어그램을 통해 표현할
수 있다. 그 다이어그램을 통해 상태 사이의 관계, 상태간
의 전이, 상태를 변화 시키는 이벤트, 입력값, 상태 변화로
유발되는 동작 등을 파악
<예시>
3. 예외적인 버그
하이젠버그(Heisenbug)
보흐버그(Bohrbug)
만델버그(Mandelbug)
슈뢰딩버그(Schrodinbug)
달 주기 버그(Phase of the Moon bug)
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
-끝-

Más contenido relacionado

Similar a DDC 발표자료

Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Jongwon Lee
 
Chap1. 개발환경구성 3주차 20130329
Chap1. 개발환경구성 3주차 20130329Chap1. 개발환경구성 3주차 20130329
Chap1. 개발환경구성 3주차 20130329광명 우
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)중선 곽
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가Heo Seungwook
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
 

Similar a DDC 발표자료 (6)

Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015
 
Chap1. 개발환경구성 3주차 20130329
Chap1. 개발환경구성 3주차 20130329Chap1. 개발환경구성 3주차 20130329
Chap1. 개발환경구성 3주차 20130329
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 

DDC 발표자료

  • 1. 버그 분류 체계 + 테스트 방법 APP 개발팀 박경일
  • 2. 목차 1. 버그 분류 체계 1-1. 요구사항 및 기능 버그 1-2. 구조적 버그 1-3. 데이터 버그 1-4. 코딩 버그 1-5. 인터페이스, 통합, 시스템 버그 1-6. 테스트 및 테스트 설계 버그 2. 테스트 방법 2-1. 동등 분할 테스트 2-2. 경계값 분석 테스트 2-3. 상태 전이 분석 테스트 3. 예외적인 버그 4. 참고 자료
  • 4. 1-1. 요구사항 및 기능 버그 (Requirements and Feature Bugs) 요구사항과 명세(Requirements and Specifications) - 불완전하거나, 모호하거나, 자기모순적 - 잘못된 이해 or 이해 불가능 기능 버그(Feature Bugs) - 잘못되거나, 누락, 불필요 - 필수적이지 않은 기능(free한)은 변수가 될 수있음(긍정 or 부정) 기능 상호작용(Feature Interaction) - 기능간 그룹을 만들어 동작 - 그룹내 개별 기능은 정상이지만 상호작용시 예측 불가
  • 5. 1-2. 구조적 버그 (Structural Bugs) 제어 및 시퀀스 버그(Control and Sequence Bugs) - 빠트린 경로, 도달 불가능한 코드, 루프의 부적절한 사용, 프로세 스 미싱, 프로세스 중복, 불필요한 프로세스, GOTO의 부적절한 사 용, switch의 잘못된 사용…. - 언어선택, 코드 스타일로 부분적으로 예방 가능 프로세싱 버그(Processing Bugs) - 산술적, 수학적, 알고리즘 선택 등을 포함 로직 버그(Logic Bugs) - 케이스의 부적절한 사용, 잘못된 부정, 조건 조합의 오류 - 제어 및 시퀀스 버그 + 프로세싱 버그 초기화 버그(Initialization Bugs) - 부적절한, 불필요한(성능 영향) 초기화 데이터 흐름 버그와 아노말리(Data-Flow Bugs and Anomalies) - 데이터 선언, 초기화 타이밍 - 데이터 변경 후 저장 누락 - 대부분 실행을 해야 발견
  • 6. 1-3. 데이터 버그 (Data Bugs) 동적 vs 정적(Dynamic Versus Static) - 데이터의 생명 주기가 다름 정보 인자 제어(Information, Parameter, and Control) - 데이터는 세가지 역할을 복합적으로 수행 - 역할에 따른 적절한 검증이 필요 컨텐츠 구조 속성(Contents, Structure, and Attributes) - 데이터 명세의 구성
  • 7. 1-4. 코딩 버그 (Coding Bugs) 소스 언어 변환기 - 어셈블러, 컴파일러, 인터프리터 에서 일부 감지 - 오타…
  • 8. 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) - 메모리, 디스크 등
  • 9. 1-5. 인터페이스, 통합, 시스템 버그 (Interface, Integration, and System Bugs) 통합 버그(Integration Bugs) - 잘 동작하는 컴포넌트 간 통합관련 버그 시스템 버그(System Bugs) - 특정 컴포넌트들의 단순 상호작용 문제가 아닌 규모가 큰 버그 *위 버그들은 빈도가 높지 않으나 뒤늦게 발견되고 수정이 힘듬
  • 10. 1-6. 테스트와 테스트 설계버그 (Test and Test Design Bugs) - 테스터라고 버그에 면역이 있는게 아님 - 테스트 자체도 버그를 가질 수 있다.
  • 12. 2-1. 동등 분할 테스트 (Equivalence Partitioning) - 입/출력값 영역을 유한개의 상호 독립적인 집합으로 나누 어 수학적인 등가 집합을 만든 후, 각 등가집합의 원소 중 대푯값을 선택해 테스트를 진행 <예시>
  • 13. 2-2. 경계값 분석 테스트 (Boundary Analysis) - 입/출력값 영역을 유한개의 상호 독립적인 집합으로 나누 어 수학적인 등가 집합을 만든 후, 각 등가집합의 원소 중 최댓값과 최소값을 그 영역의 경계값으로 삼아 테스트를 진행 <예시>
  • 14. 2-3. 상태전이 분석 테스트 (State Transition Analysis) - 시스템의 현재 상황과 이전의 이력을 반영하는 상태 및 그 변화에 따라 다르게 동작함을 다이어그램을 통해 표현할 수 있다. 그 다이어그램을 통해 상태 사이의 관계, 상태간 의 전이, 상태를 변화 시키는 이벤트, 입력값, 상태 변화로 유발되는 동작 등을 파악 <예시>
  • 16. 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
  • 17. -끝-