Test Methods
Non-execution-based test (Static test)
- Rely on human: Review
- Rely on tool: Static anaylsis
Execution-based test (Dynamic test)
▶ Black-box test
▶ White-box test (--> structure based)
- Code-coverage based test
- Data-flow based test
- Mutation test
White-box Test
White-box test (structural test, path test)
: SW code의 구조에 기반하여 테스트한다.
--> 테스트 기법 (test coverage matric):
▶ Code-coverage based test
: 코드가 얼마만큼 실행되었는가?
- All-path
- Statement coverage (all-node)
- Branch coverage (all-edge) (= Decision coverage)
- Condition coverage
- Multiple condition coverage
- Decision/Condition coverage --> MC/DC(Modified Condition/Decision Coverage)
▶ Data-flow based test
▶ Mutation test
Code-coverage based test
1) All-path
2) All-node (statement coverage, node coverage)
3) Branch coverage (decision coverage, edge coverage)
: 모든 조건문의 결과(decision)에 대한 coverage
4) Condition coverage
: 모든 조건문의 세부 항목(condition)에 대한 coverage
5) Multiple-Condition coverage
: 모든 condition에 대한 coverage
--> 조건문 1에 대해: T/T, T/F, F/T, F/F
--> 조건문 2에 대해: T/T, T/F, F/T, F/F
- 모든 condition에 대해 커버하기는 하지만, 조건문1과 조건문2를 어떻게 조합하여 4개의 테스트 케이스를 만드느냐에 따라, 모든 실행경로를 포함하지 않을 수 있다.
6) Condition/Decision coverage --> MC/DC (Modified Condition/Decision coverage)
: 조건문의 모든 decision과 그 안의 모든 condition에 대해 T/F가 모두 수행되도록 하는 테스트
--> Decision, Condition 모두에 대해 보장함
▶ MC/DC: Decision/Condition coverage의 방법!
- AND: 어떤 하나가 T이면, 나머지 하나가 결과값을 결정한다.
- OR: 어떤 하나가 F이면, 나머지 하나가 결과값을 결정한다.
Logic Coverage Summary
▷ Condition 개수 1개: Decision T/F는 Condition T/F에 의해 결정된다.
- Decision coverage: 모든 decision에 대해 T/F
▷ Condition 개수 2 or 3개: Decision T/F는 Condition T/F의 조합에 의해 결정된다.
- Multiple-Condition coverage: 모든 condition에 대해 T/F (모든 경로에 대한 검증을 보장하지 않음)
- Condition/Decision coverage: 모든 condition에 대해 T/F, 모든 decision에 대해 T/F
▷ Condition 개수 그 이상: Decision의 T/F를 결정짓는 Condition의 조건이 너무 복잡해진다.
- MC/DC: Major condition이 decision에 영향을 주도록 하여, 모든 decision에 대해 T/F
출처: 이화여자대학교 박지현교수님 소프트웨어공학