4.3.1.5 유즈케이스 테스팅
▶ 유즈케이스 테스팅
- 액터와 액터 사이의 상호작용을 표현 --> 유저에게 결과값 전달.
- 시스템(SW)이 유즈케이스로 모델링 되었을 때, 유즈 케이스를 활용해 테스트 케이스를 도출하는 테스트 설계 기법.
>> 유즈케이스를 어떻게 작성하느냐에 따라 유즈 케이스의 테스트 용이성이 달라짐 --> 잘못 만들면 테스팅하기 어려울 수 있음
- 프로세스 흐름을 기술
>> 기본 흐름
>> 대체 흐름
- 유즈케이스 상세(description)
- 시나리오를 짬
- 프로세스 흐름 기술
- 유즈케이스를 통해 생성된 테스트 케이스를 통해 시스템이 실제 사용되는 프로세스 흐름에서 결함을 발견하는 데 유용.
- 고객이나 유저 그룹을 참여시키는 인수 테스트를 설계할 때 유용.
- 통합 테스트 단계에서 컴포넌트 사이의 통합 결함을 찾는데 도움.

▶ 테스트 순서
- 유즈케이스 상세를 문장별로 분석하여 테스트 케이스 도출 -- > 누락을 최소화하고 일정 수준의 보장성을 확보
- 어떤 흐름을 테스트 할지 고려하여 테스트 시나리오 구성
- 유즈케이스 상세에서 테스트에 필수적인 상황 선택
- 유즈케이스 상세 내용을 입력값, 출력값, 상황 처리 등으로 분류하여 테스팅에 관여하는 상황을 선택.
- 각각의 상황에 ID 부여
- 각각의 상황에 가능한 값을 결정
▶ 컴포넌트(단위) 레벨 유즈케이스 테스팅
- 유즈케이스 각각을 테스팅하는 방법
▶ 시스템 레벨 유즈케이스 테스팅
- 유즈케이스 상호 간의 활동을 테스트
- 상태관점에서 파악하고 활동의 흐름을 전이로 간주하여 상태 전이 테스팅 기법의 컨셉을 활용.
>> 활동 기반 커버리지 : 각각의 활동만을 테스팅
>> 전이 기반 커버리지 : 활동의 흐름을 테스팅
>> 경로 기반 커버리지 : 재귀적인 흐름도 고려한 테스팅
>> 활동 기반 ⊂ 전이 기반 ⊂ 경로 기반 --> 포함관계 존재
4.3.2 구조기반 기법(Structure -based)
▶ 화이트 박스 테스팅 --> 시스템의 구조를 중심으로 테스팅
- SW코드나 설계 등 구조를 표현하는 정보로부터 테스트 케이스 도출
- 작성한 테스트 케이스들로부터 커버리지를 측정할 수 있으며, 커버리지를 높이기 위해 테스트 케이스를 체계적으로 추가
>> 제어 흐름 테스트, 기본 경로 테스트, x커버리지 테스팅
테스트 레벨과 소프트웨어 구조와의 관계 | |
테스트 레벨 | 소프트웨어 구조 |
컴포넌트 레벨 | Statements(구문),Decisions(결정) 또는 Branches(분기)등 코드 구조 |
통합 레벨 | 콜 트리(모듈간의 호출 구조 다이어그램) 등 |
시스템 레벨 | 메뉴 구조, 비즈니스 프로세스 구조, 웹 페이지 구조 등 |
- 구문 커버리지 (statement coverage)
>> 테스트 스위트(테스트 케이스 모아둔 거)에 의해 실행된 구문이 몇 퍼센트(%)인지 측정(가장 약함)
- 결정 커버리지 (decision coverage)
>> 실행된 결정 포인트 내의 전체 조건식이 최소한 참이 한 번 그리고 거짓이 한 번씩 선택되었는지 측정하여 퍼센트로 표현
- 조건 커버리지
>> 전체조건식의 결과와 관계없이 각 개별 조건식이 참 한번, 거짓 한 번을 모두 갖도록 개별조건식을 조합 (결정 커버리지 보다 강력)
4.3.2.1 구문 테스팅과 커버리지
▶ 구문 커버리지
- 테스트 스위트에 의해 실행된 구문이 몇 퍼센트 인지 측정
>> 존재하는 가능한 경우를 모두 검증 못하는 보장성이 낮은 커버리지
- 구문 테스팅은 구문 커버리지를 늘리기 위해 특정 구문을 테스트하는 테스트 케이스 도출
>> 코드의 모든 구문을 실행할 수 있는 입력값이나 이벤트 등의 테스트 데이터를 제공해 주면 달성됨.
4.3.2.2 결정 테스팅과 커버리지
▶ 결정 커버리지
- 분기 테스팅과 관련
- 테스트 스위트(suite, 묶음)에 의해 실행된 조건문 분기 (if문의 참/거짓)가 전체 가능한 분기의 몇 퍼센트인지를 측정하고 평가
- 결정 포인트 내의 전체조건식이 참과 거짓의 모든 값을 갖게 되어 모든 분기로 흐르게 되면 달성
▶ 결정 테스팅
- 결정 커버리지를 늘리기 위해 특정 조건문의 분기를 테스트하는 테스트 케이스를 도출하는 것
- 제어 흐름 테스트
▶ 제어 흐름 테스트
- 구조 기반 테스트 --> 코드 레벨의 커버리지 개념 필요
- 프로그램 구조 테스트
- 공식적인 화이트 박스 테스트 -- > 단위 / 통합 테스트에서 사용
>> 테스트 깊이 레벨에 따라 강도 존재
>> 테스트 케이스를 선택된 흐름에 따라 연속적인 구문의 집합으로 기술
>> 테스트 깊이가 깊을수록 제품의 커버리지는 높아지는 반면 테스트 케이스가 기하급수적으로 많아져 비용, 시간, 리소스 많이 소요됨.
4.3.2.3 조건 테스팅과 커버리지
▶ 조건 커버리지
- 결정 포인트 내에 있는 개개의 개별 조건식이 참 / 거짓의 모든 값을 갖게 되면 달성
- 조건 커버리지(강력, 견고한 테스트) > 결정 커버리지
▶ 조건/ 결정 커버리지(응용버전)
- 항상 결정과 조건 커버리지를 모두 만족시키는 것보다 강력
- 결정과 조건 커버리지를 최소한 조합으로 달성하는 경우
>> 항상 모든 개별 조건식이 참이고 이에 따른 전체 조건식이 참인 경우
>> 모든 개별 조건식이 거짓이면서 이에 다른 전체 조건식이 거짓인 경우
▶ 커버리지 레벨(depth level) - 밑으로 갈수록 완화됨
- 다중 조건 커버리지(Multiple condition coverage) -- > 가장 강력
>> 결정 포인트 내의 개별 조건식 결과(참/거짓)에 대한 모든 가능한 논리적인 조합을 적어도 한 번 수행.
- 변형 조건/ 결정 커버리지(MC/DC)
>> 결정 포인트 내에 다른 개별 조건식의 결과와는 독립적으로 해당 개별 조건식이 전체 조건식의 결과에 영향을 줌.
- 조건/ 결정 커버리지 (COndition/ decision coverage)
>> 모든 개별 조건식이 전체 조건식 판단문의 결과값 확정에 관여하는 경우를 모두 고려함.
- 조건 커버리지(Condition coverage)
>> 프로그램 내에 있는 결정 포인트 내의 모든 각 개별 조건식에 대한 모든 가능한 결과(참/ 거짓)에 대해 적어도 한번 수행.
▶ 다중 조건 커버리지
- 결정 포인트 내에 있는 모든 개별 조건식의 모든 가능한 논리적인 조합을 고려하여 100% 커버리지를 보장
- 출시 전 모든 결함을 제거해야 하는 제품 테스트에서 주로 사용.
4.3.2.4 변형 조건/ 결정 커버리지(MC/ DC)
▶ 변형 조건 / 결정 커버리지(Modified Condition/ Decision)
- 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 함
- 조건/ 결정 커버리지를 향상 시킴
- 조건 커버리지나 결정 커버리지 보다 강력
>> 프로그램에 있는 모든 결정 포인트 내의 전체 조건식은 적어도 한 번 모든 가능한 결과값(참, 거짓)을 취한다.
>> 프로그램에 있는 결정 포인트 내의 모든 개별 조건식은 적어도 한번 모든 가능한 결과값(참,거짓)을 취한다.
>> 결정 포인트에 있는 각각의 개별 조건식은 다른 개별 조건식에 영향을 받지 않고 그 결정 포인트의 결과값에 독립적으로 영향을 준다.
- 가능한 의미 있게 조합의 수를 줄여 테스트 수행.

'ISTQB > ISTQB_SW테스팅' 카테고리의 다른 글
ISTQB/ SW 테스팅 ) 4장. 명세기반 기법 - 페어와이즈 조합 테스팅에 대해 알아보자. (0) | 2024.03.22 |
---|---|
ISTQB/ SW 테스팅 ) 4장. 경험 기반 기법, 명세 기반 기법 - 분류 트리 기법에 대해 알아보자. (0) | 2024.03.21 |
ISTQB/ SW 테스팅 ) 4장. 명세 기반 기법 - 상태 전이 테스팅 (0) | 2024.03.19 |
ISTQB/ SW 테스팅 ) 4장. 테스트 설계 및 구현 프로세스, 테스트 설계 기법의 종류, 명세 기반 기법 - 동등 분할, 경계값 분석, 결 (0) | 2024.03.18 |
ISTQB/ SW 테스팅 ) 3장 - 정적 기법 (0) | 2024.03.15 |