PROGRAM: FIELD-COUNT
Dowhile not EOF
read record
if FIELD_COUNTER > 7 then
increment COUNTER_7 by 1
else
if FIELD_COUNTER > 3 then
increment COUNTER_3 by 1
else
increment COUNTER_1 by 1
endif
endif
End_While
End
[파일에서 레코드를 읽어 조건 비교를 통해 카운터를 세는 프로그램 예제]
저자는 이 예제에 대한 상태 변이 테이블을 작성해 테스트하는 답을 게재해 놓았다.
Initial State |
Test Case (Transition) |
Final State |
COUNTER_7 = X1 |
1. EOF |
COUNTER_7 = X1 |
COUNTER_3 = X2 |
COUNTER_3 = X2 | |
COUNTER_1 = X3 |
COUNTER_1 = X3 | |
Exit Program | ||
COUNTER_7 = X1 |
2. Next Record with FIELD_COUNTER > 7 |
COUNTER_7 = (X1+1) |
COUNTER_3 = X2 |
COUNTER_3 = X2 | |
COUNTER_1 = X3 |
COUNTER_1 = X3 | |
Successful | ||
COUNTER_7 = X1 |
3. Next Record with FIELD_COUNTER < = 7 and FIELD_COUNTER >3 |
COUNTER_7 = X1 |
COUNTER_3 = X2 |
COUNTER_3 = (X2+1) | |
COUNTER_1 = X3 |
COUNTER_1 = X3 | |
Successful | ||
COUNTER_7 = X1 |
4. Next Record with FIELD_COUNTER < = 3 |
COUNTER_7 = X1 |
COUNTER_3 = X2 |
COUNTER_3 = X2 | |
COUNTER_1 = X3 |
COUNTER_1 = (X3+1) | |
Successful |
아울러, 입력인 파일의 구조는 다음과 같을 것이다.
결국, 다음과 같은 표에 의해서 나올 수 있는 모든 조합을 산출할 수 있다.
레코드가 아무리 많더라도 인접해 있고 순차적으로 읽어들이기 때문에, IF 조건은 3개가 존재하지만 단 두개 레코드의 조합으로 설명할 수 있다. (!)그렇다! 레코드 단 두개의 고유한 조합만 가지고 있다면 입력 파일의 개수는 (다시 말하면 테스트 케이스의 개수는) 상관이 없다는 말이다.
77, 73, 71, 7EOF
37, 33, 31, 3EOF
17, 13, 11, 1EOF
EOF
2) 각각을 연결이 가능한 대로 묶어 본다. (두개의 조합은 해치지 않으면서 겹치기 시도)
77, 73 => 773
71, 17 => 717
33, 31 => 331
37, 13 => 137
31, 11 => 311
331, 311 => 3311
3311, 137 => 331137
331137, 717 => 33113717
33113717, 773 => 3311371773
4) 전체 테스트 케이스를 도출한다.
TC1) 3311371773EOF (3EOF 포함됨) ER: COUNTER1은 3의 값. COUNTER3은 4의 값. COUNTER7은 3의 값을 가지고 종료함.
TC2) 331137177EOF (7EOF 포함됨) ER: COUNTER1은 3의 값. COUNTER3은 3의 값. COUNTER7은 3의 값을 가지고 종료함.
TC3) 3311371EOF (1EOF 포함됨) ER: COUNTER1은 3의 값. COUNTER3은 3의 값. COUNTER7은 1의 값을 가지고 종료함.
TC4) EOF 만으로 구성된 레코드 ER: COUNTER1, 3, 7 모두 0의 값을 가지고 종료함.
이렇게 총 4개의 테스트 케이스 (입력 파일)이 생성되었다! 앞의 13개와 비교하면 어떤가? ^^
또 이렇게 산출된 것은 또 앞의 13개에 비해서 장점이 존재한다.
1) 단 하나의 체크되는 레코드만 가진 파일이 아닌 조금은 더 긴 연속적인 레코드를 사용한다.
2) 케이스의 개수가 적다. (당연!)
3) 13개의 각각의 조건만 체크하는 테스트 케이스에 비해서 각각의 조건에 모두 걸리게 하거나 해서 누적 카운터 값이 조건마다 다르게 해서 누적 계산 (+1)에 대한 테스트도 함께 한다.
자, 이제 상태 변이에 대한 얘기를 하지 않았는데 위의 테스트 조건들을 상태 변이 다이어그램으로 그리면 다음과 같을 것이다. (상태 변이 다이어그램을 그리고 나서 테스트 케이스를 작성하는 것이 아닌, 좀 거꾸로 된 느낌은 있다. ^^)
댓글 영역