MC/DC대신에 MCC를 쓰자?
[ ]이번 스튜어트 박사가 9월29일에 개최된 『자동차 SW테스트 세미나』 에서 와서 파격적인 내용을 들고 왔습니다.
MC/DC보다 MCC를 쓰라…
※ 만일 MC/DC(Modified Condition/Decision Coverage)와 MCC(Multiful Condition Coverage)의 차이를 모르겠다면 Google신의 도움을 받기를 바랍니다.
그가 MCC를 쓰라는 주장에는 전제 조건이 있습니다
- 고객이 ISO26262에서 언급된 MC/DC unit test 를 굳이 원하지 않을 때.
- 그 외에 MC/DC를 굳이 쓸 이유가 없다고 판단될 때…
스튜어트 박사가 MCC를 쓸 때 이익이라는 이유를 내가 이해한 바로는 다음과 같습니다.
- MC/DC는 일단 적용하는데 어렵다. 기법 자체가 도출하기 복잡하다. 반면에 MCC는 그냥 각 조건(Condition)들의 전체 조합만 구하므로 쉽다.
- short-circuit을 통해 MCC의 갯수도 상당량 줄일 수 있다. 이러면 MC/DC와 MCC의 큰 차이점인 테스트 케이스 수의 차이를 상당히 줄일 수 있다.
- MCC는 MC/DC보다 더 많은 범위를 테스트 하므로 오류를 더 많이 잡을 가능성이 크다.
첫번 째 이유인 적용하기 어렵다 는 MC/DC를 직접 해 본 사람들은 잘 알것이라 생각합니다. 두번 째 이유는 short-circuit을 들었는데 이에 대하여 간단히 설명을 하면
IF (A and B) 라는 조건절에서 나올 수 있는 테스트 케이스 수는
1) A : B = T : T –> T
2) A : B = T : F –> F
3) A : B = F : T –> F
4) A : B = F : F –> F
A가 F일 경우에는 B는 어떤 것이 와도 결과는 마찬가지.. 그러므로 3,4번째 중 1개는 short-circuit으로 케이스에 포함을 안 시킬 수 있다.
입니다.
MC/DC의 Case수와 MCC의 Case수를 비교 한 자료를 보겠습니다.
N이 파라메터(컨디션) 수라고 하면, MC/DC를 통해 나오는 테스트 케이스의 숫자는 N+1 개 입니다. (그래프중 제일 아래 선) MCC를 Full로 적용할 때(short-circuit미적용) 발생할 수 있는 케이스 수는 2^N개 입니다. (가파르게 올라가는 곡선) 하지만 연구를 통해 Short-circuit를 적용하면, MC/DC의 케이스 보다 1.35배 ~ 2배 정도로 차이가 좁아지는 것으로 나타났다고 합니다. (가운데 분홍 및 주황 말풍선 부분)
이 그래프가 말하는 것은 에러 도출 가능성에서도 MC/DC와 MCC는 6% 밖에 차이가 나지 않는다고 합니다. MC/DC가 6%더 높다는 것입니다.
이제 이 주장에 대한 저의 생각을 적어 보도록 하겠습니다.
short-circuit을 찾는 것도 일이다.
간단한 조건절에서는 short-circuit을 찾는 게 어렵지 않습니다만, 조건절이 복잡할 때 + 다수의 조건절의 조합 이면 MC/DC를 구하는 것만큼 리소스가 들어갑니다. 그리고 요즘에는 MC/DC를 자동으로 구해주는 도구가 많이 나와 있어 MC/DC를 사용하려는 어려움은 많이 없어졌다고 생각됩니다.
MCC로 더 많은 케이스를 수행한다고 해서 과연 효과적인 테스트가 될 수 있을 까?
스튜어트 박사의 이야기를 들어보면 MCC로 추가되어 수행되는 35%추가 수행을 통해 예기치 못한 오류를 찾을 수 있다고 합니다. 하지만 저는 여기에 동의 안합니다. 35%를 추가적으로 했는데 오류 발견을 더 할 거라는 보장도 없고 실제 필드에서 추가 발생가능성이 있는 오류를 잡으려면 이런 기법적인 접근 보다는 좀 더 다른 접근(오류 발생 가능성 분석 등을 통한 접근)으로 강화하는 게 맞다고 생각하기 때문입니다.
제 생각으론 그동안 스튜어트 박사는 MC/DC를 실무에서 활용하는 것을 어려워 한다고 생각하여 이런 주장을 하시는 것 같습니다. 이전 강의 에서는 경계값 분석이 오히려 더 효과적이라는 주장도 폈었죠. 하지만 이번 주장에서 제가 든 생각은 스튜어트 박사님이 short-circuit을 실무에서 큰 사이징으로 해보지 않았을 것 같다는 것입니다.
저는 MC/DC를 실무에서 어려워 하기 때문에 MC/DC를 피하는 것이 아니라 쉽게 하도록 하는 연구를 조금 하여 이를 위한 도구도 만들어 제 컨설팅 활동에 활용 중 입니다. 저 뿐만 아니라 다른 테스트 도구 연구자들도 비슷한 도구를 많이 만들었기 때문에 제가 잡는 방향도 어느 정도 맞다고 자부하고 있습니다.
하지만 MC/DC 를 굳이 원하지 않는 환경이고 도구를 쓸 수 없는 환경이라면 MCC를 도입해 보는 것도 나쁘지는 않을 것 같습니다.