ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 변이테스팅 (Mutation Testing)
    테스팅 관련/테스트 2020. 5. 28. 02:14

    https://www.codeaffine.com/wp-content/uploads/2015/09/mutations.png

     

    변이테스팅은,

    테스트 세트의 적절함을 측정하는데 사용할 수 있는 하나의 방법이다.

     

     

    솔루션 개발 - 테스트 케이스 생성 - 모두 통과

    끝일까?

    그 것만으로 충분하지 않다!

     

     

    테스팅은

    버그의 존재를 보는데 사용할 수 있지만,

    버그가 존재하지 않다는 것을 증명하진 않는다.

     


     

    적절함을 측정하려면 어떻게 해야할까?

    → 변이테스팅

     

    변이테스팅에서는,

    소프트웨어의 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. 테스트 모두 통과 → 문제 있음!

     

     

     

     

     

Designed by Tistory.