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
'IT > ISTQB FL' 카테고리의 다른 글
실라버스 제 6 장. 테스트 지원 도구 (0) | 2024.01.07 |
---|---|
실라버스 제 5 장. 테스트 관리 (0) | 2024.01.07 |
실라버스 제 3 장. 정적 테스팅 (0) | 2024.01.01 |
실라버스 제 2 장. 소프트웨어 개발 수명주기와 테스팅 (0) | 2023.12.31 |
실라버스 제 1 장. 테스팅의 기초 (2) | 2023.12.07 |