밍경송의 E.B

<9> VV and Test (White-box test) 본문

CSE/소프트웨어공학

<9> VV and Test (White-box test)

m_gyxxmi 2023. 12. 10. 23:52

이 글은 기말고사가 16시간 남은 학부생이 기말고사 암기를 위해 작성한 내용입니다... 내용은 지현박교수님의 강의자료를 참고하였음을 밝힙니다......🎄☃️

 

 

☃️ White-box test ☃️

= Structural test = Path test

- SW code의 구조에 기반하여 test

 

🎄code-coverage based test

 

1) All-path : 모든 경로를 실행하는 test (불가능)

 

2) All-node(statement coverage, node coverage)

: 프로그램 문장을 적어도 한 번 실행하는 테스트 (가장 단순)

*coverage는 100프로를 만족해도, 결함을 찾지 못할 수 있음.

 

3) All-edge(branch coverage, decision coverage)

:  프로그램의 모든 분기 조건들을 적어도 1번 수행되게 하는 테스트

 

*조건문의 decision의 T,F가 모두 수행되도록 하는 테스트

ex) if ((a!=2) && (b==0) || (c>10)  <- if문 전체가 참 또는 전체가 거짓이 되는 TC 생성

 

*Branch coverage는 Statement coverage를 포함함

 

4) Condition coverage

: 조건문의 decision을 구성하는 각 항목(condition)의 T,F가 수행되도록 하는 테스트

4 항목이 T인 경우, 4 항목이 F인 경우 / 이외의 조합으로도 TC 생성 가능

 

*Condition coverage와 branch coverage는 포함관계가 없다

 

5) Decision/Condition coverage

: 조건문의 decision과 condition의 T,F가 모두 수행되도록 하는 테스트

*조건문 전체와 각 항목(조건) 둘 다

 

6) MC/DC coverage

: 전체 decision에 영향을주는 condition만을 가지고 테스트

 

7) Multiple-condition coverage

: 조건문의 모든 condition의 조합의 T,F가 모두 수행되도록 하는 테스트

 

*Decision, Condition, Decision/Condition coverage를 포함

*모든 실행 경로를 포함하진 않음

 


 

🎄Data-flow based test

: 실행 경로와 함께 변수들의 데이터 흐름을 참고하는 기법

 

1) C-use : 변수에 값이 정의된 후 그 변수값을 조건문을 제외한 프로그램 문장에서 사용되도록 하는 프로그램 경로가 적어도 한 번은 실행되게 하는 테스트

 

2) P-use :  변수에 값이 정의된 후 그 변수 값을 조건문 문장에서 사용되도록 하는 프로그램 경로가 적어도 한 번은 실행되게 하는 테스트

 

3) All-use :  C + P

 


 

🎄Mutation test (Fault injection)

뮤턴트 : 테스트 대상 프로그램 P에 fault가 삽입된 프로그램 (M)

- P와 M의 결과값을 다르게 하는 입력을 T data로 선정 -> M(d) != P(d) 면 M kill 함 (동일한 결과가 나오면 Kill하지 않음)

 

Coupling effect : 단순한 오류를 발견할 수 있도록 하는 T data는 더 복잡한 실제 오류를 발견할 수 있게 해줌

 

EX)

P의 A B D를 각각 다르게 / 더 만들 수 있음

 

⚠️Mutant score 구하기 

 

뮤턴트 중에 killed 된 뮤턴트(p와 다른 결과를 낸 뮤턴트)의 비율을 구하는 것이군...