소프트웨어 테스팅 Decision Coverage
결정 커버리지에 대해 알아보겠습니다. 결정 커버리지는 T/F로 분기되는 결정문을 실행하고 결과에 따라 실행되는 코드를 테스트하는 것을 의미합니다. 구문 커버리지에서는 출력 값을 확인하기 위해 프로그램적으로 설계된 정상적인 값들을 입력해보며 테스트했었는데요. 결정 커버리지는 이와 좀 다릅니다. 코드로 살펴보겠습니다.
위 코드는 구문 커버리지 100% 달성한 코드입니다. 테스트 케이스로 y, 10, 9를 사용해서 구문 커버리지 100% 달성했었죠? 그런데 사실 위 코드에는 예외 상황이 있습니다. 구문 커버리지 100% 달성했지만 예외 상황이 있음에도 불구하고 발견하지 못했네요. 만약 사용자가 y를 Y로 입력하면 어떻게 될까요?
대문자 Y를 입력했더니 아무 결과도 안 나타납니다. y, Y 모두 같은 의미인데 사용자 입장에서는 혼란스럽겠죠? y대신 Y라는 결정을 통해 예외 상황을 찾았습니다. 이 문제를 해결하기 위해 lower() 메서드를 사용하여 어떠한 값을 입력하더라도 소문자로 변경시키겠습니다.
그런데 만약 사용자가 계속 진행하기 싫어서 n을 누른다면 어떻게 될까요? 마찬가지로 n을 눌렀을 때의 상황을 처리할 코드가 없기 때문에 콘솔 창엔 아무것도 나타나지 않습니다. 코드를 수정해보겠습니다.
elif와 else문을 추가하여 n인 경우와 y, n 둘 다 아닌 경우를 대비했습니다. True 조건뿐 아니라 그렇지 않은 상황에 대해서도 결정 커버리지로 보완했습니다.
이렇듯 화이트 박스 테스트에서는 구문 커버리지보다 결정 커버리지가 더 많이 활용됩니다. 실무 코드는 더욱 복잡하겠죠?
다음장에서 구문과 결정 커버리지를 정리하며 두 기법 간의 관계에 대해 알아보겠습니다.