본문 바로가기

6. SW 테스트 기법 (2)


▣ 구조기반 기법

코드와 개발 설계 등의 SW 구현 정보를 기반으로 테스트 케이스를 설계하는 기법이다.



구문 테스팅(Statement Testing)

프로그램 내의 모든 문장들을 한번 이상 수행하도록 테스트 케이스를 설계하는 기법이다.


[예제]

다음과 같은 제어 흐름도를 커버하는 구문 테스팅 테스트 케이스를 설계하기 위해서는 제어 흐름도의 모든 문장들을 통과하는 1개의 테스트 케이스가 필요하다.


【그림 II-17. 구문 테스팅 예제】


결정 테스팅(Decision Testing)

프로그램 내의 각 분기들을 한번 이상 수행하도록 테스트 케이스를 설계하는 기법이다.


[예제]

다음과 같은 제어 흐름도를 커버하는 결정 테스팅 테스트 케이스를 설계하기 위해서는 제어 흐름도의 모든 분기들을 통과하는 2개의 테스트 케이스가 필요하다.


【그림 II-18. 결정 테스팅 예제】


조건 테스팅(Condition Testing)

프로그램 내의 각 조건들을 보장하기 위해 조건들이 참이 되는 경우와 거짓이 되는 경우를 모두 수행하도록 테스트 케이스를 설계하는 기법이다.


[예제]

다음과 같은 조건을 커버하는 조건 테스팅 테스트 케이스를 설계하기 위해서는 3개의 테스트 케이스가 필요하다.

if(A>1 AND B<=0){
  A=B+4;
}


【표 II-17. 조건 테스팅 예제】
  A=2, B=-2 A=0, B=-2 A=0, B=2
A>1 true false false
B<=0 true true false
A>1 AND B<=0 true false false


데이터 흐름 테스팅(Data Flow Testing)

프로그램 내에서 변수들이 값을 할당 받은 지점이나 사용된 지점에 따라, 프로그램의 테스트 경로들을 선택하는 방법이다.


【표 II-18. 데이터 흐름 테스팅 예제】
 
구분 내용
all-node 프로그램의 모든 node(statement)가 포함되도록 선정한다.
all-edge 프로그램의 모든 edge(statement의 흐름 또는 decision에 의한 branch등)가 포함되도록 선정한다.
all-defs 한 노드에서 정의된(assigned) 특정 변수가 그 값이 변하기 전에 적어도 한번은 활용될 수 있도록 path를 선정하고, 이에 따른 테스트 케이스를 추출한다. 노드는 프로그램 전체로 확장한다.
all-p-use
(all-predicate-use)
한 노드에서 정의된 특정 변수가 그로부터 존재하는 모든 dpu의 원소(값이 바뀌지 않고 predicate use로 사용된 노드들)까지의 path가 존재하도록 선정한다. 노드는 프로그램 전체로 확장한다.
all-c-use
(all-computation-use)
한 노드에서 정의된 특정 변수가 그로부터 존재하는 모든 dcu의 원소(값이 바뀌지 않고 computational use로 사용된 노드들)까지의 path가 존재하도록 선정한다. 노드는 프로그램 전체로 확장한다.
all-c-use/
some-p-use
All-c-use를 적용시키되, c-use가 존재하지 않는 variable에 대해서는 p-use를 적용시키는데 이때는 all이 아닌 some으로 적용시킨다.
all-p-use/
some-c-use
All-p-use를 적용시키되, p-use가 존재하지 않는 variable에 대해서는 c-use를 적용시키는데 이때는 all이 아닌 some으로 적용시킨다.
all-uses 한 노드에서의 variable에 대해 dcu, dpu를 만족시키는 path를 모두 고려하도록 테스트 케이스를 정한다.
app-paths 프로그램의 모든 path를 포함시켜서 테스트 케이스를 선정한다.



[연재 차례]

① SW 테스트 이해
② SW 테스트 필요성
③ SW 프로세스
④ SW 프로세스와 테스트
⑤ SW 테스트 프로세스
⑥ SW 테스트 기법
⑦ 공개SW 프로세스
⑧ 공개SW 테스트
⑨ 공개SW 테스트 프로세스
⑩ 테스트 도구
맨 위로
맨 위로