brunch

You can make anything
by writing

C.S.Lewis

by 이지원 Oct 01. 2022

24화 화이트 박스 테스팅 기법

소프트웨어 테스팅 Condition Coverage

지금까지 구문 커버리지와 결정 커버리지에 대해 알아보았습니다. 결정 커버리지에 구문 커버리지가 포함된다고 했었죠? 그런데 결정 커버리지로도 발견할 수 없는 유형의 버그가 있습니다. 이를 찾아내기 위해 등장한 조건 커버리지 기법에 대해 알아보겠습니다.

num1이 0이거나 num2가 0보다 크면 num2는 num2를 num1로 나눈 값과 동일하도록 코드를 작성했습니다. 이 코드에는 결정 커버리지 100%여도 발견 못하는 에러가 있는데요. 바로 ZeroDivisionError: division by zero입니다. 왜 결정 커버리지로는 발견하지 못할까요?

위 테스트 케이스는 결정 커버리지 100% 상태입니다. 참, 거짓 모두 한 번씩 검증했기 때문이죠. 결과도 문제가 없네요. 이렇듯 결정 커버리지는 전체 조건식을 기준으로 참, 거짓이 한 번씩 수행되도록 검증하기 때문에 개별 조건식에서 발생할 수 있는 오류는 찾아내지 못합니다.

if의 첫 번째 조건인 num1 == 0에서 num1이 0인 경우를 테스트했더니 ZeroDivisionError: division by zero 발생했습니다. 해당 전체 조건은 or 조건이기 때문에 num1이 0이 아니더라도 num2 조건만 True이면 코드가 실행되었어서 발견하지 못했던 에러입니다. 조건 커버리지는 개별 조건식의 T/F를 커버하면 조건 커버리지는 100% 달성하게 됩니다.



그런데 만약 조건이 너무 많아서 모든 조건을 검증하기 힘들 경우가 있을 텐데요. 어떤 값(조건)을 사용해서 테스트하는 것이 효과적일까요? 이때 등장한 것이 바로 변형 조건/결정 커버리지(MC/DC)입니다. 다음장에서 MC/DC에 대해서 살펴보겠습니다.

매거진의 이전글 23화 SC와 DC 커버리지 정리
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari