정의 및 원리
테스트 아이템의 입력 또는 출력이 여러 영역(Partition)으로 구분되는 경우에 적용
동일한 영역 내에서는 어떠한 값을 선택해도 항상 같은 결과를 기대할 수 있다는 것을 전제로함(테스팅이 가정 하에 실행됨)
실무에서는 잘 활용되지 않는다(테스트 강도가 약함)
예제를 통해 알아 보겠습니다.
-
시스템명 : 교과목 학점 평가 시스템
-
요구사항
-
시험점수(75%) + 과제 점수(25%) = 총점으로 학점 계산(A, B, C, D)
-
시험 점수 입력 : 0 ~ 75점
-
과제 점수 입력 : 0 ~ 25 점
-
"정수"만 입력 가능
-
범위를 벗어나거나 잘못된 입력은 "경고 메시지"출력
-
총 점 |
학점 |
70 <= ~ |
A 학점 |
50 <= ~ < 70 |
B 학점 |
30 <= ~ < 50 |
C 학점 |
~ < 30 |
D 학점 |
절차
-
TD1 : 기능 셋 식별
-
교과목 학점 평가 시스템
-
- TD2 : 테스트 컨디션 도출
- 유효한 입력 파티션 (Input Valid Partition)
- TCOND1 : 0 <= 시험 점수 <=75
- TCOND2 : 0 <= 과제 점수 <=25
- 비 유효한 입력 파티션(Input Invalid Partition)
- TCOND3 : 시험 점수 < 0
- TCOND4 : 시험 점수 > 75
- TCOND5 : 과제 점수 < 0
- TCOND6 : 과제 점수 > 25
- 비 유효한 입력 파티션 (Input Invalid Partition)
- TCOND7 : 시험 점수 = 실수 값(소수점 포함)
- TCOND8 : 시험 점수 = 영문자
- TCOND9 : 시험 점수 = 특수 문자
- TCOND10 : 과제 점수 = 실수 값(소수점 포함)
- TCOND11 : 과제 점수 = 영문자
- TCOND12 : 과제 점수 = 특수 문자
- 유효한 입력 파티션(Input Valid Partition)
- TCOND13 : 70 <= 총 점 <= 100, 'A'
- TCOND14 : 50 <= 총 점 < 70, 'B'
- TCOND15 : 30 <= 총 점 < 50, 'C'
- TCOND16 : 0 <= 총 점 < 30, 'D'
- TCOND17 : 총 점 > 100, '경고 메세지' 출력
- TCOND18 : 총 점 < 0, '경고 메세지' 출력
- TCOND19 : 총 점 = 정수 이외의 값, '경고 메세지'출력
- 비 유효한 입력 파티션 (Input Invalid Partition)
- TCOND20 : 결과 = 'E'
- TCOND21 : 결과 = 'A'
- TCOND22 : 결과 = "null"
- 유효한 입력 파티션 (Input Valid Partition)
- TD3 : 테스트 커버리지 아이템 도출
- 테스트 커버리지 아이템 = 식별 된 파티션 = 테스트 컨디션
- TD4 : 테스트 케이스 도출
- Option A : One to One (테스트 케이스 = 하나의 테스트 커버리지 아이템 커버)
테스트 케이스 | 입력(시험 점수) | 입력(과제 점수) | 총 점 | 테스트 커버리지 아이템 | 기대 결과 |
1 | 60 | 15 | 75 | 1 | A |
2 | -10 | 15 | 5 | 3 | 경고 메세지 출력 |
3 | 93 | 15 | 108 | 4 | 경고 메세지 출력 |
4 | 40 | 20 | 60 | 2 | B |
5 | 40 | -15 | 25 | 5 | 경고 메세지 출력 |
6 | 40 | 47 | 87 | 6 | 경고 메세지 출력 |
7 | 60.5 | 15 | 75.5 | 7 | 경고 메세지 출력 |
8 | q | 15 | 15 | 8 | 경고 메세지 출력 |
9 | $ | 15 | 15 | 9 | 경고 메세지 출력 |
10 | 40 | 20.23 | 60.23 | 10 | 경고 메세지 출력 |
11 | 40 | g | 40 | 11 | 경고 메세지 출력 |
12 | 40 | @ | 40 | 12 | 경고 메세지 출력 |
13 | 60 | 20 | 80 | 13 | A |
14 | 44 | 22 | 66 | 14 | B |
15 | 32 | 13 | 45 | 15 | C |
16 | 12 | 5 | 17 | 16 | D |
17 | 80 | 60 | 140 | 17 | 경고 메세지 출력 |
18 | -10 | -10 | -20 | 18 | 경고 메세지 출력 |
19 | 47.3 | @ | 47.3 | 19 | 경고 메세지 출력 |
20 | -10 | 0 | -10 | 20 | 경고 메세지 출력 |
21 | 100 | 10 | 110 | 21 | 경고 메세지 출력 |
22 | null | null | null | 22 | 경고 메세지 출력 |
- TD4 : 테스트 케이스 도출
- Option A : Minimized (테스트 케이스 = 여러 테스트 커버리지 아이템을 동시에 커버)
테스트 케이스 | 입력(시험 점수) | 입력(과제 점수) | 총 점 | 테스트 커버리지 아이템 | 기대 결과 |
1 | 60 | 20 | 80 | 1, 2, 13 | A |
2 | 50 | 16 | 66 | 1, 2, 14 | B |
3 | 35 | 10 | 45 | 1, 2, 15 | C |
4 | 19 | 8 | 27 | 1, 2, 16 | D |
5 | -10 | -15 | -25 | 3, 5, 18, 20 | 경고 메세지 출력 |
6 | 93 | 47 | 140 | 4, 6, 17, 21 | 경고 메세지 출력 |
7 | 60.5 | 20.23 | 80.73 | 7, 10, 13, 19 | 경고 메세지 출력 |
8 | q | g | - | 8, 11, 19 | 경고 메세지 출력 |
9 | $ | @ | - | 9, 12, 19 | 경고 메세지 출력 |
10 | -10 | 5 | -5 | 3, 2, 18, 20 | 경고 메세지 출력 |
11 | 100 | 10 | 110 | 4, 2, 17, 21 | 경고 메세지 출력 |
12 | null | null | null | 19, 22 | 경고 메세지 출력 |
- TD5 : 테스트 셋 구성(경고 메세지가 출력 되는 케이스는 수작업 테스트)
- Option A : One to One
- TS1 : 수작업 테스트 - Test Case 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, 21
- TS2 : 자동 테스트 - Test Case 1, 4, 13, 14, 15, 16
- Option B : Minimized
- TS3 : 수작업 테스트 - Test Case 5, 6, 7, 8, 9, 10, 11, 12
- TS4 : 자동 테스트 - Test Case 1, 2, 3, 4
- Option A : One to One
- TD6 : 테스트 프로시저 도출
- Option A : One to One
- TP1 : 수작업 테스트 - TS1과 동일
- TP2 : 자동 테스트 - TS2와 동일
- Option B : Minimized
- TP3 : 수작업 테스트 - TS3과 동일
- TP4 : 자동 테스트 - TS4와 동일
- Option A : One to One
커버리지 = (커버 된 파티션 / 전체 파티션) * 100%
테스트 컨디션은 4가지 방법으로 생성
INVALID는 경험이나, 개발자에게 따로 문의
|
VALID | INVALID |
INPUT | TEST BASED ON SPECIFIED INPUTS | TEST BASED ON NON-SPECIFIED INPUTS |
OUTPUT | TEST BASED ON SPECIFIED OUTPUTS | TEST BASED ON NON-SPECIFIED OUTPUTS |
[기술적 관점]
시험 점수와 과제 점수는 정수 - 컴퓨터 메모리에서 어떻게 다뤄지는가?
선언된 변수의 처리는 CPU와 언어에 따라 다름
시험 점수와 과제 점수가 정수라면 추가 파티션 도출 가능
예를 들어 16비트 정수라면 아래와 같은 범위를 확인 할 수있음
동등 분할은 특정 결함 유형을 대상으로 하지 않음
테스트 대상에 대하여 기대 결과와 다른 결과를 테스트 케이스가 커버할 수 있도록 설계하는 것이 결함 발견에 도움이 됨
파티션을 동일한 특성의 클래스로 제대로 분할하지 않은 경우에 주의해야 함
동등 분할은 유효하지 않은 파티션에 대한 아이디어 도출을 강제함 > 테스트 대상이 잘못된 입력을 제대로 처리하지 못하는 결함 발견에 도움이 됨
일반적으로 입력 값과 그에 따라 변환되는 출력 값으로 기능적 결함을 발견
모든 테스트 유형과 테스트 레벨에 적용 가능
동일한 방식으로 처리될 것으로 기대하나 상호 작용하지 않는 데이터 세트에 적합
경계값 분석과 함께 사용될 때 가장 강력한 기법
'SW_이론 > SW 테스트 설계 향상 교육' 카테고리의 다른 글
결정테이블 테스팅(Cause-Effect Graph, Decision Table Testing) (0) | 2019.08.16 |
---|---|
상태전이 테스팅(State Transistion Testing) (0) | 2019.08.15 |
Pairwise Testing 도구 (0) | 2019.08.15 |
조합 테스팅(Combinatorial Testing) (0) | 2019.08.15 |
경계값 분석(Boundary Value Analysis) (3) | 2019.08.14 |