IT recording...
[SoftwareV&V] 12. Structural Testing 본문
[원문링크]
[2021 - 1학기 수강한 Software V&V 강의 정리본입니다.]
(Software Verification & Validation)
Structural Testing
1. Structural Testing
- CFG/DFG로 바꿔서 이것을 얼마나 cover하는가
- White-box testingCode-based testing
- Structural testing(모든 path를 다 스캔)은 Functional testing(spec에서 빠진거 찾는데 유리)을 보완한다.
- But, no Guarnatee(I,Env가 정확하지 않을 수 있음)
- -모든 path를 지나간다고 해서 에러를 100% 찾았다는 보장은 할 수 없다.
- 그럼에도?(테스팅의 thoroughness를 증가시켜준다.)
- ex. FT는 100%통과했지만 ST해본 결과 coveragrk 70%다. > 30%는 에러가 있을 수 있다.
- → Increases confidence in thoroughness of testing
- Functional test suite을 만들어서 테스트한다.
- 그 테스트가 얼마나 많은 structural coverage를 이루는지 확인한다.
- (e - n + 2) for a CFG
- 보통 15 미만으로 설정하게 하는 것이 좋음 (40개 이상이면 unit test 불가)
- 3학년 학생들 코드를 모듈별로 cyclomatic number계산 > 평균 > refactoring 요청하기
- : 소스코드가 얼마나 복잡한지를 측정하는 것
- ** system testing case에 대해서 coverage를 계산하는 사례를 Stati analysis도구(pmd, checkstyle,findbugs 등)에서 찾아 내서 이게 어떻게 계산 됐는지를 설명하기
- 1) 특징
- Glass-box testing
2. Structural Testing Techniques
1) Statement Testing
- statement를 얼마나 지났는지
- (number of executed statements) / (number of statements)
- coverage는 test suite의 cardinality에 영향을 주지 않는다.Test suite cardinality
- 단점) 모든 block을 지나는 건 굉장히 좋지만, 블록 하나를 실수로 구현하지 않았을 때 그 블록을 테스트 할 수 없기 때문에 제대로 테스팅 불가
- ⇒ 모든 '흐름'자체를 테스팅할 수 있는 branch testing 등장
2) Branch Testing (=Decision Testing)
- 블록이 없어지더라도 브랜치 기반으로 흐름 자체를 테스트할 수 있다.
- (number of executed branches) / (number of branches)
- 단점) 모든 branch들을 다 지나간다고 해도, 조건문 등에서 두 개 이상의 조건이 존재할 때 특정 조건만을 이용해서 테스트할 수 있음
- ⇒ 각 조건들에 대해 별도로 테스팅을 모두 실행하는 condition testing 등장
3) Condition Testing
- 각 조건에 대한 모든 T/F를 모두 살펴봄
- Basic Condition
- Compounded (Branch & Condition , Compound condition adequacy)
- But, 경우의 수가 너무 많음 ⇒ MC/DC
- MC/DC: T → F 로 바꿨을 때 결과가 바뀌는 애들만 봄
- : 중요한거 빼고 다 지우기.
4) Path Testing
- pat에 존재하는 combination들에 집중한다. (path > branch)
- (number of executed paths / number of paths)
- But, path가 무한히 많기 때문에 제약 조건을 설정한다. (number of traversals of loops등)
- → static analysis에서 주로 사용한다. (pmd를 얼마나 세게할 것인지에 따라 traversal 넘버가 변함)
3. Procedure Call Testing
- Procedure entry and exit testing
- Call coverage
: integration testing 용으로 call graph를 그린다.
'V&V' 카테고리의 다른 글
[SoftwareV&V] 14. Model-Based Testing (0) | 2022.02.17 |
---|---|
[SoftwareV&V] 13. Data Flow Testing (0) | 2022.02.17 |
[SoftwareV&V] 11. Combinational Testing (0) | 2022.02.17 |
[SoftwareV&V] 10. Functional Testing (0) | 2022.02.17 |
[SoftwareV&V] 09. Test Case Selection and Adequacy (0) | 2022.02.17 |
Comments