본문 바로가기

IT/ISTQB FL

실라버스 제 4 장. 테스트 기법

4.1 테스트 기법의 종류

 

* 테스트 기법의 목적 : 테스트 컨디션, TC, 테스트 데이터 식별을 지원하는 것

 

* 테스트 기법 선택의 요소 기반
 - 컴포넌트 or 시스템의 복잡도
 - 규제 기준
 - 고객 or 계약 요구사항
 - 리스크 수준과 유형
 - 사용 가능한 문서
 - 테스터의 지식과 역량
 - 사용 가능한 도구
 - 시간과 예산
 - SW 개발 수명주기 모델
 - 컴포넌트 or 시스템에서 예상되는 결함 유형

 

4.1.1 테스트 기법의 종류와 특성 (K2)


* 블랙박스 테스트 기법(= 행위 기법 or 행위 기반 기법)
 - 적절한 테스트 베이시스에 대한 분석 기반
  (예 : 공식 요구사항 문서, 명세서, 유스케이스, 사용자 스토리, 비즈니스 프로세스)
 - 기능, 비기능 테스팅 모두 적용 가능
 - 테스트 대상의 입력과 출력에 집중함
 - 일반적인 특징
  · 테스트 컨디션, TC, 테스트 데이터의 도출
   : SW 요구사항, 명세서, 유스케이스, 사용자 스토리 (테스트 베이시스)
  · TC 사용 : 요구사항과 요구사항 구현 결과물 간 차이와 편차를 식별하는 데 사용
  · 커버리지 측정 : 테스트 베이시스에서 테스트된 항목과 테스트 베이시스에 적용한 기법 기반

* 화이트박스 테스트 기법(=구조 기법 or 구조 기반 기법)
 - 아키텍처, 세부 설계, 내부 구조, 테스트 대상의 코드에 대한 분석을 기반으로 함
 - 테스트 대상의 내부 구조와 처리에 집중함
 - 일반적인 특징 
  · 
테스트 컨디션, TC, 테스트 데이터의 도출
   : 코드, SW 아키텍처, 상세 설계 or SW 구조와 관련된 기타 정보 (테스트 베이시스)
  ·  커버리지 측정 : 선택한 구조(예 : 코드 or 인터페이스) 내에서 테스트한 항목, 테스트 베이시스에 적용된 기법 기준

* 경험 기반 테스트기법
 - 개발자, 테스터, 사용자의 경험을 활용 -> 테스트를 설계, 구현, 실행
 - 블랙박스 + 화이트박스 테스트 기법과 결합해서 사용하는 경우가 많음
 - 일반적인 특징
  · 테스트 컨디션, TC, 테스트 데이터의 도출
   : 테스터, 개발자, 사용자, 기타 이해 관계자의 지식과 경험
   (SW의 예상 동작과 사용 환경, 발생 가능성이 있는 결함과 분포 등) (테스트 베이시스)


4.2 블랙박스 테스트 기법

 

4.2.1 동등 분할 (Equivalence Partioning) (K3)

* 동등 분할
 - 특정 파티션의 모든 변수는 동일한 방식으로 처리된다는 가정으로 파티션(=동등 클래스)에 데이터를 분할
 - 유효한 값과 非유효한 값 모두에 대해 동등 분할을 구성할 수 있음
  ① 유효한 값
   - 컴포넌트 or 시스템에 입력되는 값
   - 유효 동등 분할 : 유효한 값을 포함하는 동등 파티션
  ② 非유효한 값
   - 컴포넌트 or 시스템이 거부하는 값
   - 非비유효 동등 분할 : 유효하지 않은 값을 포함하는 동등한 파티션
  ③ 분할
   - 입/출력값, 내부값,
   시간관련값(예 : 이벤트 전 or 후), 인터페이스 매개변수(예 : 통합 테스팅에서 테스트하는 통합 컴포넌트)를
   포함하여 테스트 대상과 관련된 모든 데이터 요소에 대해 식별할 수 있음
   - 필요한 경우 모든 파티션은 하위 파티션으로 나눌 수 있음
   - 모든 값은 동등 분할에 포함되어야 함. 하나의 값은 하나의 동등 분할에만 속해야 함
   - 非유효 동등 분할을 TC로 만들 때는 장애가 마스크(masked) = 가려지는 것을 방지하기 위해 개별적으로 테스트,    다른 非유효 동등 분할과 조합하지 않아야 함
   & 여러 장애가 발생할 때?
   겉으로 드러나는 하나의 장애 때문에 나머지가 인식되지 않아 장애가 가려지는 경우가 발생함

  - 100% 커버리지를 달성하기 위해서?
  식별한 모든 분할(+ 非 유효 분할)의 각 분할에서 최소 1개의 값을 사용해 TC를 작성해야 함
  - 커버리지 : 일반적으로 백분율로 표기, 테스트한 동등 분할 수 / 식별한 모 든 동등 분할의 수
  - 모든 테스트 레벨에서 적용할 수 있음


4.2.2 경계값 분석 (Boundary Value Analysis) (K3)

 

* 경계값 분석
 - 동등 분할의 확장 형태, 각 파티션이 순서화되어 있고, 숫자 or 연속 데이터로 구성된 경우에만 적용할 수 있음
 - 분할의 최소값과 최대값(or 첫번째값과 마지막값)은 해당 분할의 경계값이 됨
 - 동등 분할의 경계에서 동작이 잘못될 확률이 동등 분할 중간의 값에서 잘못될 확률에 비해 높음
 - 명시된 경계값과 구현한 경계값 모두 의도했던 값보다 높거나 낮게 설정되거나,
 모두 생략하거나 의도하지 않았던 경계값이 추가되었을 수 있다는 사실을 기억하는 것이 중요함
 - SW가 경계값이 원래 속한 분할의 동작이 아닌 다른 분할의 동작을 수행하는 것과 같은 종류의 결함 대부분을 식별할 수 있음
 - 커버리지 : 보통 백분율로 표기, 테스트한 경계값의 수 / 식별한 모든 경계값의 수
 - 모든 테스트 레벨에서 적용할 수 있음
 - 일반적으로 숫자의 범위(날짜, 시간)와 연관된 요구사항을 테스트하는 데 적용


4.2.3 결정 테이블 테스팅 (Decision Table Testing) (K3)

* 결정 테이블 테스팅
 - 결정 테이블
  · 조건:
   - Y, 조건이 참이라는 것을 의미 (T or 1로 표기할 수 있음)
   - N, 조건이 거짓이라는 것을 의미 (F or 0으로도 표기할 수 있음)
   - ㅡ, 조건의 값이 중요하지 않다는 것을 의미 (N/A 로 표기할 수 있음)

  ·  기대 결과:
   -  X, 행동이 일어난다는 것을 의미 (Y, T, 1 로 표기할 수 있음)
   - 공백(blank), 해동이 일어나지 않음을 의미 (ㅡ, N, F, 0 으로 표기할 수 있음)

 - 일반적인 최소 커버리지 기준? 테이블의 결정 규칙당 최소 1개의 TC를 작성(일반적으로 모든 조건 조합을 포함)
 - 커버리지 : 일반적으로 백분유로 표기, 최소 1개의 TC로 테스트한 결정 규칙의 수 / 식별한 모든 결정 규칙의 수
 - 장점?
   · 중요한 모든 조건 조합을 식별하는 데 ㄷ도움이 됨
   · 요구사항의 누락된 부분을 찾는 데 도움이 됨 -> SW의 동작이 조건 조합에 영향을 받는 모든 상황에 적용 가능
 - 모든 테스트 레벨에 적용


4.2.4 상태 전이 테스팅 (State Transition Testing) (K3)


* 상태 전이 테스팅
 - SW의 가능한 상태 + SW가 상태 간에 어떻게 진입하고 빠져나오는지에 대한 전이 방법을 보여줌

 - 전이 : 이벤트에 의해 시작(예 : 사용자가 입력 필드에 값을 입력)
 - 이벤트 : 전이라는 결과를 가져옴
 - 하나의 이벤트에 의해 동일한 상태로부터 2개 이상의 다른 전이가 발생할 수 있음
 - 상태 변화로 SW가 특정 행동을 할 수도 있음(예 : 연산 결과 or 오류 메시지 출력)

 - 일반적으로 유효한 전이만 보여주며, 非유효 전이는 표시하지 않음
 - 커버리지 : 일반적으로 백분율료 표기, 식별한 상태나 전이 중 테스트된 수 / 식별한 모든 상태나 전이의 수

 

4.2.5 유스케이스 테스팅 (Use Case Testing) (K2)

* 유스케이스 테스팅
 - 유스케이스에서 테스트 도출, SW 항목 간의 상호작용을 설계하는 특정 방법
 - 유스케이스
  · SW 기능에 대한 요구사항을 통합함
  · 액터(사용자, 외부 HW, 기타 컴포넌트 or 시스템)와 대상(유스케이스를 적용하는 컴포넌트 or 시스템) 간의 관계
  · 예외 동작 및 오류 처리(시스템 응답과 프로그래밍, 애플리케이션 및 통신 오류로부터의 복구(예 : 오류 메시지 발생))를 포함한 기본 동작의 가능한 변형이 포함
 - 테스트는 정의한 동작(기본, 예외 or 대안, 오류 처리)을 실행하도록 설계
 - 커버리지 : 일반적으로 숫자로 표기, 테스트한 유스케이스 동작 수 / 모든 유스케이스 동작 수

 

4.3 화이트박스 테스트 기법

 

4.3.1 구문 테스팅과 커버리지 (K2)

 

* 구문 테스팅
 - 코드의 잠재적으로 실행 가능한 구문을 실행
 - 커버리지 : 일반적으로 백분율로 표기, 테스트 대상의 모든 실행 가능한 구문의 수 / 테스트로 실행한 구문의 수

 

4.3.2. 결정 테스팅과 커버리지 (K2)

 

* 결정 테스팅
 - 코드에 존재하는 결정문을 실행, 결정문의 결과에 따라 실행되는 코드를 테스트
 - TC는 결정문에서 시작되는 제어 흐름에 따라 실행됨
 (예 : IF 문에서 결과가 참인 경우과 거짓인 경우
   CASE 문에서 기본 결과를 포함한 가능한 모든 결과를 필요로 하는 TC)
 - 커버리지 : 일반적으로 백분율로 표기,
      테스트 대상의 가능한 모든 결정문 결과의 수 / 테스트로 실행된 결정문 결과의 수

 

4.3.3 구문 및 결정 테스팅의 가치 (K2)

 

* 100% 구문 커버리지를 달성?
 - 코드에 존재하는 모든 실행 가능한 구문을 최소한 1번씩은 테스트했다는 것을 의미
 - 모든 결정 로직을 테스트했다는 것을 보장하지는 않음
 - 커버리지 : 구문 테스팅 < 결정 테스팅

* 100% 결정 커버리지를 달성?
 - 명확한 거짓 구문이 명시되지 않은 경우(예 : IF 문에 else 문이 없는 경우)에도
 결과가 참인 경우과 거짓인 경우를 포함한 모든 결정 결과가 실행되었다는 것을 의미

* 결론
 - 구문 커버리지는 다른 테스트에 의해 실행되지 않은 코드의 결함을 찾는 데 도움이 됨
 - 결정 커버리지는 다른 테스트가 참과 거짓 결과 모두를 테스트하지 않은 코드의 결함을 찾는 데 도움이 됨
 - 100% 결정 커버리지는 100% 구문 커버리지를 보장하지만, 반대의 경우는 성립하지 않음


4.4 경험 기반 테스트 기법


* 경험 기반 테스트 기법
 - TC 도출 : 기술 역략과 직관, 유사한 애플리케이션과 기술에 대한 경험을 기반으로 도출함
 - 체계적인 다른 기법으로는 쉽게 찾아내기 어려운 테스트를 식별하는 데 도움이 됨
 - 커버리지를 평가하기 어려울 수 있으며 측정이 불가능할 수도 있음

 

4.4.1 오류 추정 (K2)


* 오류 추정
 - 다음을 포함한 테스터의 지식을 기반으로 오류, 결함 및 장애 발생을 예측하는 데 적용하는 기술
 - 포함하는 것들
  · 애플리케이션의 과거 동작
  · 발생하기 쉬운 오류의 유형
  · 다른 애플리케이션에서 발생한 장애
 - 체계적인 접근법 : 발생 가능한 오류, 결함, 장애 목록을 작성하고 -> 결함을 노출하는 테스트를 설계

 

4.4.2 탐색적 테스팅 (K2)

 

* 탐색적 테스팅
 - 비공식(사전에 정의되지 않은) 테스트를 테스트 실행 중에 동적으로 설계, 실행, 기록하고 평가
 - 테스트 결과는 컴포넌트 or 시스템에 대해 더 많이 학습하고,
 더 많은 테스트가 필요한 영역에 대한 테스트를 작성하는 데 활용됨
 - 때로 세션 기반 테스팅을 사용하여 활동을 구성
  · 탐색적 테스팅을 정해진 시한(time-box)동안 수행
  · 테스터는 테스트 목적이 포함된 테스트 차터를 활용해 테스팅 방향을 설정,
  테스트 세션 시트에 수행 단계와 발견 사항을 기록
 - 유용한 경우
  · 명세가 충분하지 않거나 적은 경우(명세가 없는 경우 (X)) or 시간적 압박
  · 공식적인 테스팅 기법을 보완
- 반응적 테스트 전략(5.2.2절)과 밀접하게 관련
- 다른 블랙박스, 화이트박스, 경험 기반 기법과 통합하여 사용할 수도 있음

 

4.4.3 체크리스트 기반 테스팅 (K2)

 

* 체크리스트 기반 테스팅
 - 체크리스트에 기록된 테스트 컨디션을 커버하기 위해 테스터가 테스트를 설계, 구현, 실행함
 - 테스터는 새로운 체크리스트 작성 or 기존 체크리스트를 확장 or 기존 체크리스트를 수정하지 않고
 그대로 사용하는 경우도 있음
 - 사용자에게 무엇이 중요한지에 대한 지식 or SW가 실패하는 이유와 방법에 대한 이해를 기반으로 작성할 수 있음
 - 기능, 非기능 테스팅 포함 + 다양한 테스트 유형을 지원하기 위해 작성할 수 있음
 - 구체적인 TC 가 없는 경우, 대략적인 지침과 일관성을 제공할 수 있음
  -> 상위 수준으로 작성되기 때문에 실제 테스팅에서 어느 정도 가변성 있음
  -> 커버리지는 늘어날 수 있지만 재현 가능성은 줄어들 수 있음

 

더보기
No 용어 설명 유의어 연관 항목
1 블랙박스 테스트 기법
(black-box test technique)
컴포넌트나 시스템의 내부 구조가 아닌 기능/비기능 명세를 분석해서 테스트 케이스를 도출하
고 선정하는 절차
· 블랙박스 기법
(black-box technique), 
· 명세 기반 기법
(specification-based
technique), 
· 명세 기반 테스트 기법
(specification-based test technique)
 
2 경계값 분석
(boundary value analysis)
경계값을 기반으로 테스트 케이스를 설계하는 블랙박스 테스트 기법    
3 체크리스트 기반 테스팅
(checklist-based testing)
경험, 점검, 기억에 의한 목록 또는 제품 검증 기준 및 규칙을 상위 수준으로 나열한 목록을
숙련된 테스터가 사용하는 경험 기반 테스트 기법
   
4 커버리지
(coverage)
커버리지 항목이 식별되거나 테스트 스위트(test suite)에 의해 수행된 정도를 백분율로 표시한 것 테스트 커버리지
(test coverage)
 
5 결정 커버리지
(decision coverage)
결정 결과값에 대한 커버리지 원인-결과 결정 테이블
(cause-effect decision table)
 
6 결정 테이블 테스팅
(decision table testing)
조건과 그로 인해 발생하는 행동 집합을 나열한 표    
7 오류 추정
(error guessing)
과거 장애(failures)에 대한 테스터의 지식이나 장애 형태에 대한 일반적인 지식에 기초하여
테스트 케이스를 도출하는 테스트 기법
   
8 동등 분할
(equivalence partioning)
명세에 기반하여 동일한 결과를 갖는 것으로 예상되는 테스트 대상 관련 데이터 요소 중 데이
터값 도메인 영역의 모든 값에 대한 기대 결과가 동일하다고 추정
동등 클래스
(equivalence class)
 
9 경험 기반 테스트 기법
(experience-based test technique)
테스터의 경험, 지식, 직관을 기반으로 테스트 케이스를 도출 및 선정하는 절차 경험 기반 기법
(experience-based technique)
 
10 탐색적 테스팅
(exploratory testing)
테스터가 자신의 지식, 테스트 항목에 대한 탐색, 이전 테스트 결과를 기반으로 하여 테스트
를 동적으로 설계하고 실행하는 테스팅 접근법
   
11 상태 전이 테스팅
(state transition testing)
상태 전이 다이어그램이나 상태 테이블을 사용해 테스트 케이스를 도출하고, 테스트 항목이
유효한 전이는 실행하고 비유효 전이는 성공적으로 차단하는지 확인하는 블랙박스 테스트 기법
유한 상태 테스팅
(finite state testing)
N-스위치 테스팅
(N-switch testing)
12 구문 커버리지
(statement coverage)
테스트 스위트(suite)가 수행한 실행문의 백분율    
13 테스트 기법
(test technique)
테스트 케이스를 도출하고 설계하는 데 사용하는 절차 · 테스트 케이스 설계 기법
(test case design technique), 
· 테스트 명세 기법
(test
specification technique), 
· 테스트 기법
(test technique), 
· 테스트 설계 기법
(test
design technique)
 
14 유스케이스
(use case testing)
액터(actor)와 컴포넌트 또는 시스템 사이에 실제 결과를 가진 일련의 상호작용. 여기서 액터
는 사용자 또는 시스템과 정보 교환이 가능한 어떤 것이든 될 수 있음
   
15 화이트박스 테스트 기법
(white-box test technique)
컴포넌트나 시스템의 내부 구조 분석에 기반하여 테스트 케이스를 선택 그리고/또는 도출하는
절차
· 구조적 테스트 기법
(structural test technique), 
· 구조 기반 테스트 기법
(structurebased
test technique), 
· 구조 기반 기법
(structure-based technique), 
· 화이트박스
기법
(white-box technique)
 

 

더보기

Sample A


Sample B


Sample C