-
변이테스팅 (Mutation Testing)테스팅 관련/테스트 2020. 5. 28. 02:14
변이테스팅은,
테스트 세트의 적절함을 측정하는데 사용할 수 있는 하나의 방법이다.
솔루션 개발 - 테스트 케이스 생성 - 모두 통과
끝일까?
그 것만으로 충분하지 않다!
테스팅은
버그의 존재를 보는데 사용할 수 있지만,
버그가 존재하지 않다는 것을 증명하진 않는다.
적절함을 측정하려면 어떻게 해야할까?
→ 변이테스팅
변이테스팅에서는,
소프트웨어의 2번째 버전을 생성해야 한다.
<버전2>에 변이(mutation)를 생성한다.
변이는 오리지널 버전과 이론적으로 똑같이 행동하지 않음
변이를 테스트한다.
테스트 실패 → 변이 발견!
많은 변이들을 생성하고, 각각의 변이들은 발견되고 종료된다.
좋은 테스트 케이스 = 테스트를 실행하고 모든 변이들이 발견됨
변이는 어떻게 만들까?
오리지널 버전의 한 줄에서 한 부분을 변경시킨다.
- 연산자(Operators)
예. delta = newGuess - sqrt. → delta = newGuess + sqrt.
변이연산자(mutation operator)라고 한다. = mutagen, mutagenic operator
- Off by One
Off-by-one 오류를 잡기 위해 불연산자(Booleans)를 바꿀 수 있다
- 같은 타입의 변수 이름
구문상 오류(syntax error)를 일으키지 않는 변화들을 찾는다.
변이 적절도 점수 (Mutation Adequacy Score)
얼마나 많은 변이들을 종료시켰는지에 기반하여 점수 계산
변이 점수 (MS) % = 죽은 변이 수 / (변이 수 - 복제하는 변이 수) * 100
테스트가 쓸 만한지 어떻게 알 수 있을까?
1. 하나의 에러가 포함되있는 새로운 버전의 소프트웨어를 생성한다
2. 가지고 있던 테스트를 새로운 버전에 실행한다
3. 테스트 모두 통과 → 문제 있음!
'테스팅 관련 > 테스트' 카테고리의 다른 글
API 테스트 (0) 2020.09.10 불안정(Flakey) 테스트와 예방법 (0) 2020.08.20 JaCoCo로 적합성과 코드 커버리지 분석 평가 (0) 2020.08.14 리스크 기반 테스트 (0) 2020.06.22 구조기반(structural) 테스팅 (0) 2020.05.28