Thief of Wealth

테스트 효과성을 검증하기 위한 방법은 여러가지 방법이 있습니다!

크게 3가지로 나눠 볼 수 있는데요.

TC기반 / 결함기반 / 커버리지 기반

요렇게 3개로 나눌 수 있습니다.

  1. 테스트 케이스 기반

    • 테스트 케이스 실패율로 판단하기

    ⇒ 결함을 검출한 테스트 케이스의 비율이 높으면 효과적인 테스트라고 판단

    ⇒ 그럼 결함 검출한 테스트 케이스의 비율이 높으면, 비효율적인 테스트라고 판단하게된다.

    근데 이미 SW품질이 높거나 예외 테스트케이스가 없어서 실패율이 낮을 수도 있고, 특정 테스트만 편중해서 실패율이 높게 나올 수도 있다..

    • 테스트 케이스 효율성으로 판단하기

    ⇒하나의 결함을 검출하기 위해 사용된 TC개수로 판단

    ⇒ 하나의 결함을 검출하는데, 많은 수의 TC가 사용되면 효율이 낮은 것.

    ⇒ 왜냐하면 여러 테스트 케이스들이 유사/동일한 오류를 검출했기 때문이다. 최대한 적인 TC로 많은 결함을 잡아내는 것을 목표로 한다.

    그럼 중복을 막기위해 TC를 다른 TC와 최대한 독립적으로 구성하게 되는데, 이 과정에서 찾을 수 있는 결함이 누락될 수 있다.

    또는 애초에 테스트 대상이 적은 결함이어서 중복이 많이 들어갔을 수도 있다.

  2. 결함 기반 (간단히 설명만하고 넘어갈게용)

  • 검출 결함 수
    검출된 결함 수로 테스트 효율성 판단
  • 결함 검출 밀도
    테스트 대상의 크기 당 검출된 결함의 수로 판단
  • 결함 검출 비율
    존재하는 모든 결함 중, 검출된 결함의 비율로 판단
  • 해당 단계 결함 검출 비율
    개발 단계에서 생성된 결함을 해당 단계에서 검출하는 비율로 판단
  1. 커버리지 기반
  • 요구사항 커버리지

    ⇒ 요구사항이 테스트된 비율로 판단

  • 설계 커버리지

    ⇒ 설계가 테스트된 비율로 판단

  • 코드 커버리지

    ⇒ 소스코드가 테스트된 비율로 판단

코드 커버리지

  1. 문장 커버리지
    ⇒ 프로그램 내 모든 문장을 적어도 한번이상 실행하는 것을 기준으로 측정

  2. 분기 커버리지 (결정 커버리지)
    ⇒ 각 분기가 (if가) 참/거짓을 한번 이상 실행하는 것을 기준으로 측정
    (실행된 분기가 몇%인가?)

  3. 조건 커버리지
    ⇒ 전체 조건식의 결과와 관계없이, 모든 기본 조건식의 결과 값이 참/거짓을 적어도 한 번이상 실행시키는 것을 기준으로 측정
    (조건 커버리지 100%를 달성했다고, 분기 커버리지가 100%만족되는것이 아님, vice versa)

요기 까지는 잘 설명된 글이 있어서, 타 블로그로 구체적인 설명을 대체합니당

https://woowacourse.github.io/javable/post/2020-10-24-code-coverage/

  1. 조건/분기 커버리지
    ⇒ 각 기본 조건식 및 전체 조건식의 결과 값이 참/거짓을 적어도 한번이상 실행시키는 것을 기준으로 측정
    즉, 분기커버리지 + 조건 커버리지입니다.

  2. MD/DC 커버리지
    개별 조건식이 다른 조건식의 영향을 받지 않고, 전체 조건식의 결과에 독립적으로 영향을 주도록 TC를 짜서 측정

여기 까지도 잘 설명된 글이 있어서, 타 블로그로 구체적인 설명을 대체합니당

https://m.blog.naver.com/shiftspace/220561755364


  1. 다중 조건 커버리지
    ⇒ 각 조건문 내의 기본 조건식이 가능한 논리적인 조합이 적어도 한 번 테스트 되도록 TC를 짜서 측정

그냥 코드에 있는 기본 조건식이 가질 수 있는 모든 조합으로 테스트한다 생각하시면 됩니다 >_<

'개발 > QA' 카테고리의 다른 글

4. White box testing  (0) 2020.09.15
3. BlackBox Testing  (0) 2020.09.15
2. testing 기초  (0) 2020.09.15
1. SW는 무엇이고 testing이란 무엇인가  (0) 2020.09.14
칸반과 스크럼이란?  (0) 2020.09.12
profile on loading

Loading...