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 테스트 프로세스 ⑩ 테스트 도구 |
0개 댓글