5. 요약
if (A and B) {
1을 실행;
}
else {
2를 실행;
}
Dpoint(결정포인트) A B
0 1 0
1 1 1
결정
커버리지
Dpoint(결정포인트) A B
0 1 0
0 0 1
조건
커버리지
Dpoint(결정포인트) A B
0 0 0
1 1 1
조건/결정
커버리지
결정포인트
6. 조건 테스팅과 커버리지
v 결정 커버리지보다 강력
v 결정포인트 내에 있는 각 개별조건식이 참과 거짓의 모든
값을 갖게 되면 달성
(x,y)
조건식
(-3,-2) (0, 6)
x>=-2 F T
y<4 T F
x>=-2 and y<4 F F
if (x>=-2 and y<4)
then x=y-7, y=x+y-4 조건
커버리지
(개별조건식)
결정
커버리지
(전체조건식)
7. 조건과 결정 커버리지 관련 다른 커버리지들
v 다중조건커버리지 : 결정포인트 내의 개별 조건식에 대한 모
든 참,거짓 조합을 모두 수행
v 변경 조건/결정커버리지 : 결정포인트 내의 다른 개별조건식
의 결과와는 독립적으로 해당 개별조건식이 전체 조건식에
영향을 주는 것만 테스트 수행
v 조건/결정커버리지 : 전체 조건식의 참,거짓과 개별 조건식
의 참, 거짓에 대해 적어도 한번 수행
8. 조건/결정 커버리지
v 결정 커버리지와 조건 커버리지를 모두 만족시키는 커버리
지
v 앞의 예제에서 (2,1)을 추가할 경우
(x,y)
조건식
(-3,-2) (0, 6) (2,1)
x>=-2 F T T
y<4 T F T
x>=-2 and y<4 F F T
결정커버리지
조건
커버리지
9. 다중 조건 커버리지
v 결정 포인트 내에 있는 모든 개별 조건식의 모든 가능한 논
리적인 조합을 고려한 강력한 커버리지
– 테스트 케이스 양이 방대해지므로 출시 전에 반드시
100% 결함을 제거해야 하는 제품 테스트에서 주로 사용
v 다중 조건 커버리지의 결정 테이블 예(A && B)
결정포인트 A B
1 1 1
0 1 0
0 0 1
0 0 0
모든 조건
테스트
10. 변경 조건/결정 커버리지(MC/DC)
v 모든 결정포인트 내의 전체 조건식은 적어도 한 번 모든 결
과값(참, 거짓)을 가진다.
v 결정 포인트 내의 모든 개별 조건식은 적어도 한 번 모든 가
능한 결과값(참, 거짓)을 가진다.
v 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전
체 조건식의 결과에 독립적으로 영향을 줌
v 전체 조합을 테스트 하는 것은 현실적으로 불가능하므로 가
능한한 의미있게 조합의 수를 줄여 테스트하자는 것.
결정포인트 A B
1 1 1
0 1 0
0 0 1
0 0 0
MC/DC
에서는
제외
13. 경험기반테스팅
v 유사 소프트웨어나 기술의 경험, 직관, 테스터의 기술능력으
로부터 테스트 케이스를 추출하는 기법
v 공식적인 기법을 적용한 후에 경험기반기법을 적용
v 공식적인 기법이 찾기 어려운 결함 발견 가능
– 찾아낼 수 있는 결함의 종류가 제각기 다름
– 테스터의 경험에 따라 효과가 다름(일관성이 떨어져 관리
하기 어려움)
14. 경험기반테스팅의 종류
v 탐색적 테스팅
v 오류 추정
v 체크리스트
v 스크립트 기반 테스팅
v 분류 트리 기법 (공식적으로도 사용)
15. 탐색적 테스팅 접근법[1]
v 기법이 아니고 접근법임
v 정해진 임무와 목표, 결과물이 존재
– 테스트 목표를 포함한 테스트 차터를 기반으로
– 정해진 시간 내에 (60~120분)
– 테스트설계, 실행, 기록과 학습을 진행
v 테스트 케이스를 먼저 디자인하지 않고 테스트 대상 제품을
수행하면서 익숙해지는 것과 동시에 테스트 케이스를 작성
하고 테스트를 수행
v 명세가 거의 없고 시간이 부족한 경우, 공식적인 기법을 보
충할 경우, 가장 심각한 결함을 모두 발견했다는 것을 확인
하는 목적으로 사용
16. 탐색적 테스팅 접근법[2]
v 단순히 경험적으로 테스트하는 것과 탐색적 테스팅은 다름
– 탐색적 테스팅은 경험적 요소를 많이 반영하여 체계화된
테스팅 접근법
– 탐색적 테스팅의 컨셉을 반영하여 테스팅해야함
– 테스트 설계기법에 대한 이해는 기본
v 탐색적 테스팅은
– 매우 능숙한 상태에서 머릿속에서 테스트를 설계
– 테스트 케이스 작성에 드는 노력을 최소화
– 절약한 시간을 테스트에 집중
17. 탐색적 테스팅 접근법[3]
v 탐색적 테스팅 구성요소
– 제품 탐색
– 테스트 설계
– 테스트 실행
– 직관
– 검토 가능한 결과물
• 테스트한 제품에 대한 기록(노트)
• 발견된 결함과 장애에 대한 기록(노트)
• 어떻게 테스트 되었는지를 기술하는 요약 문석
18. 탐색적 테스팅 접근법[4]
v 탐색적 테스팅 절차
– 제품의 목적 식별
– 기능 식별
– 잠재적으로 불안정한 부분 식별
– 각각의 기능 테스트 및 문제점 기록
– 일관성 검증 테스트 설계 및 기록
19. 탐색적 테스팅 접근법[5]
v 테스트 차터
– 무엇을 어떻게 테스트할 것인지 제안한 내용으로 각 세
션당 수행할 임무 명시
– 시간제한 : 각 세션당 수행할 시간 명시
– 265쪽 양식 참조
v 테스트 노트와 요약보고
– 탐색적 테스팅의 산출물
– 머릿속으로 계획하고 설계한 테스트 케이스를 간단하게
작성 -> 테스트 노트
– 탐색적 테스팅의 한 세션 종료후 팀원끼리 요약보고
• 결함과 이슈사항, 테스팅 방법 등 공유
20. 탐색적 테스팅 접근법의 장점
v 경험적 테스팅을 체계화할 수 있다.
v 테스트 케이스를 작성하는 시간을 줄여 보다 많은 테스트를
실행할 수 있다.
v 테스터 또는 테스트 엔지니어의 역량을 월등히 향상시킬 수
있다.
v 적은 테스트 인력으로 많은 테스트를 수행할 수 있다.
v 명세가 거의 없고 시간이 부족한 경우 효과적/효율적으로
수행할 수 있다.
23. 고급기법[2]
v 경험기반기법
– 오류 추정
• 가능한 오류를 모두 나열하고 이를 공격할 수 있는 테
스트를 설계: 결점 공격
• 스펙 불충분한 경우, 시간압박 심한 경우, 다른 공식적
기법 보완할 때 유용
– 체크리스트
• 경험과 노하우를 정리하고 목록화
• 일반체크리스트, 기능 체크리스트, 시스템 요소 체크
리스트
• 175쪽 상단 박스 참조
24. 테스트 기법의 선택
v 시스템의 유형
v 강제적인 표준 또는 법적 기준의 존재 여부
v 고객 또는 계약상의 요구 사항
v 리스크 수준
v 리스크 유형
v 테스트 목표
v 문서의 존재 유무
v 테스터의 지식 수준
v 시간과 예산
v 테스트 레벨
v 개발 수명주기
v 유즈케이스, 상태 다이어그램 등 모델 존재 유무
v 발견된 결함 유형에 대한 이전의 경험
25. ISO/IEC 9126
v 기능성, 신뢰성, 효율성, 사용성, 이식성, 유지보수성
v 기능성: 적합성, 정확성, 상호운영성, 보안성, 준수성
v 신뢰성: 성숙성, 오류허용성, 회복성, 준수성
v 사용성: 이해성, 학습성, 운영성, 친밀성, 준수성
v 효율성: 시간반응성, 자원효율성, 준수성
v 유지보수성: 분석성, 변경성, 안정성, 시험성, 준수성
v 이식성: 적응성, 설치성, 대체성, 공존성, 준수성
v 176쪽~181쪽 참조