명세기반 기법(Specification-based technique)

- 주어진 명세(일반적으로 개발 설계 모델 형태)를 바탕으로 테스트 케이스를 도출, 테스트 케이스를 실행해 중대한 결함이 없음을 보장

- 요구사항 분석서, 설계(기준)서 등의 명세는 구현하고자 하는 소프트웨어를 최대한 이해하기 쉽게 표현함

- 표현 방식(모델)로는 UML(Unified Modeling Language)를 많이 사용함

명세 기반 기법 종류

  • 동등 분할(Equivalence partitioning)
  • 경계값 분석(Boundary value analysis)
  • 결정 테이블 테스팅(Decision table testing)
  • 상태 전이 테스팅(State transition testing)
  • 유즈케이스 테스팅(Use case testing)


명세 기반 기법 적용시 고려 사항

  • 시스템이 상태다이어 그램, 유즈케이스 등의 모델로 표현되어 있지 않을 경우

- 명세 기반 기법을 적용하기 위해서 테스트 전문가가 요구사항 분석서와 설계(기준)서를 먼저 작성한 후 테스트 케이스 작성하는 것을 고려

  • 조기 테스트 설계에 활용

- 소프트웨어가 없어도 명세만 있다면 명세 기반 기법으로 테스트 케이스 도출이 가능

- 개발 초기에 테스팅이 진행될 수 있음을 의미

- 테스트 케이스를 도출하는 과정에서 개발자/분석가/아키텍트가 발견하기 어려운 결함을 효과적으로 발견할 수 있음


동등 분할(Equivalence partitioning)

- 같은 특성을 가지면서 같은 방식으로 처리된다고 판단하는 모든 등가 집합에서 대표 입력값을 적어도 하나씩 테스트 했다는 것을 보장


1. 동등 분할 기법 적용 절차

1) 소프트웨어나 시스템이 특정 범위의 입력값에 의해 결과값이 동일하다면 입력값의 범위를 하나의 그룹(클래스)으로 구분

(특정 범위 내의 입력값은 내부적으로 같은 방식으로 처리된다고 가정)

2) 입력값/출력값 영역(Input/Output Space)을 유한개의 상호 독립적인 집합으로 나누어 수학적인 등가집합으로 만듦 

3) 각 등가 집합의 원소중 대표값을 선택해 테스트 케이스를 도출함


2. 동등 분할에 적용할 수 있는 항목

- 입/출력값 등을 활용하기 때문에 명세기반 테스트 기법으로 분류

- 구조 기반 기법, 경험 기반 기법에서 입/출력 데이터가 필요한 경우에도 해당 기법을 사용할 수 있음

1) 입력값

2) 출력값

3) 내부값

4) 시간 관련 값(이벤트 이전과 이후)

5) 통합 테스팅에서 다루는 모듈간 인터페이스 파라미터


3. 동등 분할이 적용 가능한 경우

1) 사람에 의한 입력

2) 인터페이스를 통한 시스템 입력

3) 통합 테스팅에서 인터페이스 파라미터 등 테스트를 설계할 때 테스트 조건에 등가의 집합으로 표현되는 부분이 있을 경우


4. 동등 분할 테스트의 커버리지

- 동등 분할 테스트는 입력과 출력 커버리지를 달성함

- 추가적으로 필요에 따라 각 등가 집합에서 하나 이상의 값을 선정하여 테스트 케이스를 작성하는 경우, 하나의 대표값을 선정하여 테스팅 하는 것보다 더 많은 결함을 발견할 수는 있지만 동등 분할 커버리지는 동일


5. 모든 테스트 레벨에서 사용 가능, 모든 테스트 유형에 적용 가능

1) 컴포넌트(단위) 테스팅, 통합 테스팅, 시스템 테스팅, 인수 테스팅 각각에서 테스트를 위해 입력값, 출력값, 내부값, 시간 관련 값 등에 동등 분할 기법을 활용 가능

2) 기능성 테스팅, 비기능성 테스팅, 구조적 테스팅, 확인/리그레션 테스팅에서 사용 가능


6. 예제 - 휴대폰 배터리 잔량 표시 기능


7. 동등 분할 테스팅 종류

- 테스트가 보장하는 범위가 각각 다르므로 요구되는 테스트 수준과 깊이를 고려하여 적용


1) 약한 동등 분할 테스팅(Weak equivalence partitioning testing)

- 등가 집합을 세분화할 수 있는 경우, 테스트 시 등가 집합에서 각각 대표값만을 선정


2) 강한 동등 분할 테스팅(Strong equivalence partitioning testing)

- 등가 집합을 세분화할 수 있는 경우, 세분화된 등가 집합간의 조합을 모두 고려


경계값 분석(Boundary value analysis)

- 동등 분할의 경계에서 결함이 발견될 확률이 높기 때문에 결함을 예방하기 위해 경계값까지 포함하여 테스트하는 기법

- 경계값 테스트에서 결함이 없었다는 것을 보장

- 경계값 분석 기법은 경계값을 자세하게 명시한 명세서가 있을 경우 적용하기 쉬움


1. 경계값의 종류

1) 영역 경계값: 분할 영역의 최대값, 최소값

2) 유효 경계값: 유효한 분할 영역의 경계값

3) 비유효 경계값: 비유효한 분할 영역의 경계값


2. 모든 테스트 레벨, 모든 테스트 유형에 적용 가능

- 결함 발견율이 높고 적용하기 쉬워 가장 많이 사용되는 테스트 기법중 하나


3. 경계값 분석 기번의 테스트 커버리지

- 동등 분할의 확장으로 여겨지며, 동등 분할과 동일한 방식으로 커버리지를 보장


4. 예제 - 휴대폰 배터리 잔량 표시 기능



5. 동등 분할과 경계값 분석 기법의 한계점

- 일련의 동작에 대한 조합 테스트에는 적합하지 않음

- 입력 범위를 동등 분할하여 제한하더라도 입력값의 조합이 테스트 가능한 수를 넘어서는 경우가 많음

- 입력 조합이 상호간에 독립적(의존성이 없는)이라는 가정에서만 적합한 기법

- 출력이 입력 조건이나 변수들 사이의 관계에 따라 달라지는 경우, 입력 조건을 동등 분할하는 것이 매우 어려울 수 있음


결정 테이블 테스팅(Decision table testing)

- 결정 테이블 기법은 소프트웨어의 동작이 여러 가지 논리적 조건에 의존적인 모든 경우에 적용이 가능


1. 결정테이블

- 논리적인 조건이나 상황을 구현하는 시스템에서 요구 사항을 도출하거나 내부 시스템 설계를 문서화함

- 시스템이 구현해야 할 비즈니스 규칙을 문서화하는데 사용

- 명세를 분석, 시스템의 조건과 동작을 식별함

- 결정 테이블에서 입력조건과 기대결과는 참(True)과 거짓(False)으로 표현

- 동작을 유발시키는 조건 또는 상황(Triggering conditions - 주로 모든 입력 조건에 대한 참과 거짓의 조합), 각 해당 조합의 예상 결과까지 포함

- 결정 테이블의 각 컬럼당 적어도 하나의 테스트 케이스를 생성


2. 결정 테이블 테스팅의 장,단점 비교

 장점

 단점

- 논리적으로 의존적인 가능한 모든 조건들의 조합을 생성함

- 요구사항 등 테스트 베이시스의 문제점을 발견하는데 효과적인 테스트 테이스 생성 가능

  • 테스트 베이시스의 불완전성과 모호함 발견 가능
  • 테스트 케이스를 만들면서 명세의 결함을 발견하는 것이 가능

- 작성에 많은 노력과 시간이 소요 될 수 있음

(특히 테스트를 위해 결정 테이블을 만들어야 할 경우 작성 후 개발팀의 검토가 필요함)

- 복잡한 시스템은 표현하기 어려울 수 있으며 작성 시 논리적 실수 가능성 있음 


3. 원인-결과 그래프

- 결정 테이블에 논리적인 주석을 추가하여 도식화 시킨 것


상태 전이 테스팅(State transition testing)

- 시스템은 현재 상황과 이전의 이력을 반영하는 상태 및 그 변화에따라 동작 가능

- 상태 전이 다이어그램(State transition diagram)으로 표현 가능


1. 상태 전이 다이어그램, 상태 테이블

1) 상태 전이 다이어그램

- 소프트웨어 또는 시스템을 상태 사이의 관계(상태간의 전이), 상태를 변화시키는 이벤트와 입력값, 상태의 변화로 유발되는 동작등으로 파악

- 테스트 대상 시스템이나 객체의 상태는 개별적으로 식별 가능하고 유한한 개수로 표현


2) 상태 테이블(상태-이벤트 테이블)

- 상태 전이 다이어그램을 테이블 형태로 전환

- 상태와 이벤트 간의 관계를 보여주고, 개연성은 있지만 요구사항과 맞지 않는 전이를 찾아냄


2. 상태 전이 테스팅 설계 방법

1) 전형적인 상태의 순서를 커버하는 방식

2) 모든 상태를 커버하는 방식

3) 모든 상태 전이를 실행하는 방식

4) 특정한 상태 전이 순서를 실행하는 방식

5) 불가능한 상태 전이를 테스트하는 방식


3. 상태 전이 테스팅 적용


(...) 여기서 부터 정리할 차례인데... 미완성.. (...) 일단 한데까지 공개