01.코드커버리지
02.코드 커버리지는 어떤 기준으로 측정할까?
-
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%임
- x == -1 이면 3번 코드는 실행 되지 않기 때문에
-
조건 커버리지
- 각 내부 조건이 참 혹은 거짓을 가지면 충족
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 커버리지
- 조건과 결정을 복합적으로 고려하는 것
-
-
커버리지를 측정하는 법은 사람이 로그를 찍어가거나 디버거를 이용하여 볼수는 있으나 매우 힘든 과정
- 블랙박스 테스트
- 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사하는 방식
- 올바른 입력과 올바르지 않는 입력을 해서 올바른 출력이 나오는지 테스트하는 기법
- 사용자 관점의 테스트 방법
- 화이트 박스 테스트
- 응용프로그램의 내부 구조와 동작을 검사하는 테스트 방식
- 소프트웨어 내부 소스 코드를 테스트하는 기법
- 개발자 관점의 단위 테스트 방법