10. 테스트
테스트
시험할 소프트웨어에 테스트 케이스를 주어 실행시킨 후 시스템 의 동작이 예상한 대로 실행되는지 확인하는 것
검증과 확인
검증(verification) : “제품을 올바르게 구축하고 있는가?”
확인(validation) : “올바른 제품을 만들고 있는가?”
테스팅의 원리
테스팅은 오류를 발견하는 행위
테스트 작업 과정
테스트 단계
V모델을 기준으로 테스트 단계를 설정한다.
블랙박스 테스트
내부 경로에 대한 지식을 보지 않고 테스트 대상의 기능이나 성능을 테스트
- 요구 사항 및 명세에 기반
- 기능테스팅 (functional testing)
동치 클래스 분할 기법 : 동치 클래스내 대표값(들)만을 가지고 테스팅 -> 경계값 분석
경계값 분석 : 동치클래스의 경계에 있는 값을 테스트 입력으로 선택
하나의 입력 값 X에 대한 테스트 케이스 입력값 조건: min ≤ X ≤ max
-> 케이스: min-1, min, min+1, max-1, max, max+1
두개의 입력 값 X, Y에 대한 테스트 케이스
입력값 조건: Xmin ≤ X ≤ Xmax Ymin ≤ Y≤ Ymax
원인과 결과 테이블 : 입력 조건의 조합을 체계적으로 선택하는 테스트 기법
결정테이블 : 각각의 결과들에 대하여 조건의 조합을 나열
화이트박스 테스트
모듈의 논리적인 구조를 체계적으로 점검 – 구조적 테스트
원시 코드를 통해 애플리케이션의 구조를 이해 – 논리흐름도 (logic-flow diagram)
논리 흐름도 : 모듈 내의 제어 흐름을 간선으로 표시한 그래프
logic flow diagram
테스트 커버리지
모든 경로를 테스트 하는 것은 어렵기 때문에 여러가지 테스트 커버리지가 존재
* 테스트를 어느 정도 완벽히 수행할 것인가의 기준
- 노드 커버리지 : 논리 흐름 그래프의 각 노드가 테스트 케이스에 의하여 적어도 한 번씩 방문되어야 하는 검증기준 프로그램 문장 100% 커버
- 간선(분기) 커버리지 : 논리 흐름 그래프의 각 간선이 테스트 케이스에 의하여 적어도 한 번씩 방문되어야 하는 검증기준 -> 모든 분기점 테스트(Branch coverage)
- 기본경로 커버리지 : 모든 기본 경로가 적어도 한 번씩 방문되어야 하는 검증기준 -> 간선 커버리지의 50%
- 모든경로 커버리지 : 모든 가능한 경로를 적어도 한 번씩 테스트하는 검증기준 -> 현실적으로 불가능
기본 경로 테스팅
기본경로 : 시작 노드에서 종료 노드까지의 서로 다른 경로로 cycle은 한번만 허용
기본경로의 개수를 구하기 위한 방법 : 최소개수 = 싸이클로매틱 복잡도
싸이클로매틱 복잡도 : 원시코드의 복잡도를 정량적으로 평가하는 방법
구하는 방법
- Region 개수 +1 : 논리 흐름 그래프는 이차원 평면을 여러 영역으로 나누며, 이 중 폐쇄된 Region 개수에 1을 더한 값
아래 로직플로우에서 싸이클로매틱 복잡도는 3이다.
기본경로구하기
테스트 커버리지 총정리