다음은 동부여성발전센터에서 이현주 강사님과 함께한 SW테스트 전문가 과정 실무에서 나온 동등분할 실습 사례이다.
► '사용료 계산 기능' 개발 요구사항
- 신규 이용자 나이가 13살 이상이어야 함.
- 이용자 나이가 25세 이상이거나 일일 사용시간이 3시간 이상인 경우는 1만원의 사용료를 지불 해야 하며, 그렇지 않은 경우 5천원의 사용료를 지불해야함.
- 또한 구독기간이 2개월 미만이면 2천원 추가 지불을 해야함.
동등분할 기법을 이용해 테스트 케이스를 만들어본다.
우선 입력 영역과 출력 영역의 클래스를 작성해본다.
입력 클래스는 총 9개이다.
나이 A,B,C 그룹, 아이디 중복여부 네/아니오 그룹, 구독기간 2개월이상/미만 그룹, 사용료 3시간 이상/미만해서 총 9개이다.
출력 클래스:
N/A, 5,000원, 10,000원, 7,000원, 12,000원해서 5개 클래스가 구성된다.
처음에 나는 출력영역, 입력영역을 먼저 정의해놓지 않고, 요구사항을 일일히(?) 따져서 표로 만들었다.
<1차 실습 내용 : 테스트 케이스 테이블 >
보시다시피 모든 나이에 대해 테스트 케이스를 만들었고, 수형도 마냥 모든 경우의 수를 커버하려고 했다.
동등분할이란 개념은 이해했는데 테스트케이스를 만들때 각 대표값만 있으면 된다는 걸 몰랐나보다. 그러니까 12부터 -1일까지 나이값을 저렇게 주르륵 썼지...
동등분할은 특정 파티션에 있는 모든 변수의 값은 동일한 방식으로 처리되며 각 분할 값에서 최소 한 개의 값을 사용해야 한다.즉 대표값 하나로 테스트케이스를 도출한다.
또한 출력 클래스를 미리 정하지 않았다. 출력 클래스값을 정의하고 테스트케이스 테이블을 만들었다면 좀 더 효율적으로 TC 테이블을 만들 수 있었을 것이다.
<2차 실습내용 : 테스트 케이스 테이블>
강사님의 설명을 들으며 테스트케이스를 다시 도출했는데 강사님의 것과 내것이 많이 다르다...잉?
나는 "이용자 나이가 25세 이상이거나 일일 사용시간이 3시간 이상인 경우는 1만원의 사용료를 지불 해야 하며, 그렇지 않은 경우 5천원의 사용료를 지불해야함." 이 요구사항에서 나이가 25세이상이고 사용시간이 3시간이면 20,000원이 부과된다고 해석했다. 하지만 다시 분석해보니 "AND"가 아니라 "OR"이다.
25세 이상이면 10,000원 내는 거고, 사용시간이 3시간이면 10,000원이다. 쨋든 20,000원이 부과되지는 않는 다는 소리?...(바보라 사실 아직도 좀 애매하다)
그리하여 테스트케이스는 다음과 같이 결론지어진다.
<실습3 : 테스트 케이스 테이블>
모든 입력 파티션이 커버되었다.
⍰ 여기서 드는 의문 ....
여기서 각 사용료는 출력 동등분할 클래스이다. 이게 여기서는 기대결과값인가?
입력 파티션을 모두 커버해야 하는 것처럼 출력 파티션도 모두 커버해야하는 게 맞는 걸까?
테스트케이스 수는 출력 동등분할 클래스 수와 동일해야 하나?
비유효값은 여기서 아이디 중복값과 가입나이제한(13세미만안됨)뿐일까? 그거말곤 여기선 전부 유효한 동등분할 클래스 인거 같은데 더이상의 비유효한 클래스는 없나...?(있는데 안한 거겠지...?)
사용료에 대해서는 각 한개씩만의 테스트케이스가 나와야 하는 것일까?
각 테스트케이스는 의미있는 데이터인가?
내일 강사님에게 여쭈어봐야겠다...
끝