QA Outsourcing & Consulting

[ISTQB] FL 8 <Statement coverage, Branch coverage> 본문

IT Trend/ISTQB FL

[ISTQB] FL 8 <Statement coverage, Branch coverage>

인프라웨어테크놀러지(IT) 2019. 1. 17. 10:25


Q. Given the following code, which is true about the minimum number of test cases required for full statement and branch coverage?


Read P

Read Q

IF P+Q > 100 THEN

Print “Large”

ENDIF

If P > 50 THEN

Print “P Large”

ENDIF


A) 1 test for statement coverage, 3 for branch coverage

B) 1 test for statement coverage, 2 for branch coverage

C) 1 test for statement coverage, 1 for branch coverage

D) 2 tests for statement coverage, 3 for branch coverage

E) 2 tests for statement coverage, 2 for branch coverage


<해설>

FL 시험을 치루면 높은 확률로 이런 계산 문제는 1~2문제씩 나옵니다.

하지만 실라버스에는 무슨무슨 커버리지에 대한 적용처나 특징만 기술되어 있고, 실제 문제를 푸는 방법은 전혀 설명되어 있지 않습니다.


따라서 별도로 공부해두지 않으면 점수도 높은 이런 유형의 문제는 틀리게 되어 있으며,

반대로 푸는 방법만 알면 쉽게 맞출 수 있습니다.


문제를 다 읽을 필요 없이 코드가 있고 statement coverage랑 branch coverage단어가 있다면, 이 두 개의 갯수를 찾으라는 겁니다.


먼저, statement coverage를 계산하려면 먼저 어떻게 하면 주어진 코드를 다 지나갈 수 있는지 그 경로를 생각해야 합니다.

머리 속으로만 생각하는 건 어려우니 위 코드를 흐름도로 그려 이해하는 것이 빠릅니다.




흐름도는 위와 같이 됩니다. 숫자는 코드, 알파벳은 경로가 됩니다.

코드가 한 번씩은 다 지나가게 하려면 1A-2C-3D-E-4G-5H 이렇게 지나가면 된다는 것을 알 수 있습니다.


즉, statement coverage는 한 번의 경로만으로 1,2,3,4,5 노드를 모두 다 지나갈 수 있어 statement coverage는 이 케이스에서는 1입니다.


자 그럼 branch coverage는 어떻게 되는가…

알파벳으로 쓴 경로, 원래 영어에서는 이 경우 엣지라고 하는데 (경로path와 구분하기 위해) 이 엣지를 어떻게 하면 다 커버 가능한지 최소 개수를 구해서 쓰면 됩니다.


위에서 우선 하나 경로를 찾았습니다.


1A-2C-3D-E-4G-5H


그런데 이 경로에서 커버하지 못하는 엣지가 있습니다.

B, F는 아직 커버하지 못했죠.

그래서 이 B, F를 커버하려면 다시 하나 더 경로를 만들어야 합니다.

그럼 어떻게 경로를 만들면 되는가?

1A-2B-E-4F 이렇게 하면 되겠네요.


따라서 statement coverage는 1, branch coverage 2가 됩니다.


A. B



Comments