switch-case 구문에서의 분기 커버리지를 만족하기 위해 알아야할 특징들

수정일 월, 25 8월 시간: 12:00 PM

설명 : 

switch-case 구문도 분기문에 해당합니다.

하지만 다른 분기들과는 다르게, 아래의 특징들을 가지고 있습니다.


"커버된 영역 표시하기"에서 마커가 표시되지 않음.

다른 분기들은 "커버된 영역 표시하기"에서 마커로 분기 커버리지를 확인할 수 있지만, switch-case 구문은 마커가 표시되지 않습니다.

 


분기 커버리지 분모 조건이 홀수가 될 수 있음.

다른 분기들은, 괄호 안의 결정이 true/false 로만 결정됩니다. 따라서 분기커버리지의 조건이 항상 분기문 개수에 2를 곱한 값이 되므로, 분기 커버리지 분모조건이 항상 짝수 입니다. 하지만 switch-case 구문에서는 각 case: 와 default: 개수를 모두 더한 값이 분기 커버리지의 조건이므로 분기 커버리지 분모조건이 홀수가 될 수 있습니다.


 

default: 구문이 없어도, 분모 조건에 항상 포함됨. 

switch-case 구문 내에 case: 구문만 존재하고, default: 구문은 존재하지 않더라도 default: 구문이 항상 분모 조건에 포함됩니다. 따라서, switch-case 구문 내에 case: 구문만 존재하고, default: 구문은 존재하지 않는 경우 해당 분기에서의 분기 커버리지 분모조건은 case: 개수 더하기 1 이라고 볼 수 있습니다.



break; 구문 없이 다음 case: 혹은 default: 구문으로 진입 되는 경우에는 분기 커버리지가 만족 되지 않음.

상위 case: 구문 안에 break; 구문이 없다면, 다음 case: 혹은 default: 구문으로 이어져 실행됩니다. 하지만 이 경우, 위 case: 구문에 이어서 실행된 case: 혹은 default: 구문들은 분기 커버리지가 만족되지 않습니다.

 


switch() 의 결정에 따라, 특정 case: 혹은 default: 구문으로 바로 진입하는 케이스가 있어야만, 아래와 같이 분기 커버리지가 만족됩니다. 



코드에 default: 구문이 없어도 분기 커버리지는 만족할 수 있음.

소스코드의 switch-case 구문 안에 default: 구문이 존재하지 않더라도 default: 에 해당되는(상위 case: 들에 포함되지 않는) 테스트 케이스들을 만들고 실행해주면 default: 에 해당되는 분기 커버리지를 만족할 수 있습니다.

 

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.