Skip to content

Latest commit

 

History

History
101 lines (75 loc) · 3.43 KB

22.03.01_코드커버리지.md

File metadata and controls

101 lines (75 loc) · 3.43 KB

22.03.01_코드커버리지

목차

01.코드커버리지

02.코드 커버리지는 어떤 기준으로 측정할까?

01.코드커버리지

  • SW의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표중 하나

  • 말 그대로 코드가 얼마나 커버되었는가

    • 소프트웨어 테스트를 진행했을 때 코드 자체가 얼마나 실행되었느냐는 것
  • 코드의 구조를 이루는 것은

    • Statement(구문)
    • Condition(조건)
    • Decison(결정)
  • 이러한 구조를 얼마나 커버했느냐에 따라 코드 커버리지의 측정기준은 나뉘게 됨

    • 구문 커버리지

      • 실행 코드라인이 한번 이상 실행되면 충족됨
      void statement (int x) {
          system.out("start line"); // 1번
          if (x > 0) { // 2번
              system.out("middle line"); // 3번
          }
          system.out("last line"); // 4번
      }
      • 위 코드를 테스트 할때
        • x == -1 이면 3번 코드는 실행 되지 않기 때문에
          • 4개중 3개만 실행 되서 3/4 * 100 = 75%임
    • 조건 커버리지

      • 각 내부 조건이 참 혹은 거짓을 가지면 충족
      void condition (int x, int y) {
          system.out("start line"); // 1번
          if (x > 0 && y < 0) { // 2번
              system.out("middle line"); // 3번
          }
          system.out("last line"); // 4번
      }
      • 조건 커버리지를 만족하는 케이스는
        • x=1, y=1, x=-1, y=-1
        • x>0 내부 조건에 대해 true/ false를 만족하고
        • y<0 내부 조건에 대해서는 false/ true를 만족
      • 단, 테스트케이스 if문은 조건에 대해 false만 반환
    • 결정 커버리지

      • Branch 커버리지라고 부르기도 함
      • 각 분기의 내부 조건자체가 아닌 이러한 조건으로 인해 전체 결과가 참 혹은 거짓이면 충족
      void Decison (int x, int y) {
          system.out("start line"); // 1번
          if (x > 0 && y < 0) { // 2번
              system.out("middle line"); // 3번
          }
          system.out("last line"); // 4번
      }
      • If문의 조건에 대해 true/false 모두 가질 수 있는 테스트 케이스로는
        • x = 1 , y = -1, x = -1, y = 1이 있음
        • 첫 번째 테스트 데이터는 x>0 과 y <0 모두 true이기 때문에
          • If문의 조건에 대해 true반환
        • 두 번째 테스트 데이터는 x<0 에서 이미 false이기 때문에
          • if문의 조건에 대해 fasle를 반환
      • 모든 조건식에 대해 true, false를 반환하므로 결정 커버리지를 충족
    • MC/DC 커버리지

      • 조건과 결정을 복합적으로 고려하는 것
  • 커버리지를 측정하는 법은 사람이 로그를 찍어가거나 디버거를 이용하여 볼수는 있으나 매우 힘든 과정

02.코드 커버리지는 어떤 기준으로 측정할까?

  • 블랙박스 테스트
    • 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사하는 방식
    • 올바른 입력과 올바르지 않는 입력을 해서 올바른 출력이 나오는지 테스트하는 기법
    • 사용자 관점의 테스트 방법
  • 화이트 박스 테스트
    • 응용프로그램의 내부 구조와 동작을 검사하는 테스트 방식
    • 소프트웨어 내부 소스 코드를 테스트하는 기법
    • 개발자 관점의 단위 테스트 방법