테스트 설계 기법 중에 Basis Path Testing 이라는 기법이 있습니다.
이 기법의 이론적인 배경을 이루고 있는 것이 Cyclomatic Complexity 라는 것입니다.
Cyclomatic Complexity 는 코드의 복잡도를 측정하는 정랑적 지표로 대표적인 매트릭 중 하나입니다.
Cyclomatic Complexity 에 대한 자세한 내용은 위키피디아에서 확인하실 수 있습니다.
결론적으로 Cyclomatic Complexity는 “분기문 개수 + 1″ 로 쉽게 계산할 수 있습니다.
이 복잡도의 의미는 바로 실행 경로의 개수를 말합니다.
즉, 이것은 최소한 테스트를 수행해야 하는 경로의 개수이고, 이것이 높다는 것은 필요한 테스트케이스의 수가 그만큼 많아지게 되는 것이기 때문에 오류를 모두 확인하지 못하고 출시될 수 있다는 것을 말합니다.
일반적으로 Cyclomatic Complexity 는 10을 기준으로 해서 더 높아지지 않는 것을 권장합니다. 대략 3~7 정도면 잘 구조화된 코드로 봅니다.
이 Cyclomatic Complexity 는 사람이 직접 계산할 수도 있지만 복잡한 코드를 control flow graph 로 작성하고 계산하는 과정은 일종의 리소스 낭비나 다름없기 때문에 이러한 복잡도를 계산해 주는 도구가 있습니다.
가장 대표적인 것이 McCabe 사의 McCabe IQ 입니다.
그런데 대부분의 Cyclomatic Complexity 를 구하는 도구들의 가격은 일반적인 회사에서 구매하기에 절대 만만치 않은 금액들이 많습니다.
하지만 궁하면 통한다고 했던가요?
다른 방법으로 코드의 복잡도를 구해주는 몇몇 오픈소스 도구들이 있습니다.
그 중 사용방법이 쉬우면서 다양한 언어를 지원하고 기능이 충실한 프로그램 중 하나로 SourceMonitor 라는 도구가 있습니다.
이 오픈소스 도구는 Cyclomatic Complexity 를 구해주는 도구는 아니지만 기본적으로 코드의 복잡도를 구해주는 도구로 유용하게 사용할만한 도구입니다. (솔직히 이 도구가 구해주는 복잡도가 정확히 어떤 것들을 참고로 해서 어떤 로직으로 구해지는 잘 모르겠습니다. 혹시 아시는 분 계신가요? Cyclomatic Complexity 를 구해주지 못한다고 해도 복잡도라는 것을 직관적으로 보여주기 때문에 유용한 도구임에는 틀림없습니다.)
SourceMonitor 의 가장 큰 장점으로는 CruiseControl.Net에 붙여서 자동화할 수 있다는 것입니다.
위 도구의 자세한 사용법은 아래 블로그를 한번 살펴보시면 도움이 되실 것입니다. 해당 블로그를 작성하신 분께서 수정된 CruiseControl.Net 의 스타일 쉬트 파일도 공유중이십니다.
이러한 매트릭을 측정하기 위해서 꼭 비싼 도구만을 사용해야 하는 것은 아니기 때문에 괜찮다면 한번 사용해 보시는 것도 좋을 것 같습니다.
이 기법의 이론적인 배경을 이루고 있는 것이 Cyclomatic Complexity 라는 것입니다.
Cyclomatic Complexity 는 코드의 복잡도를 측정하는 정랑적 지표로 대표적인 매트릭 중 하나입니다.
Cyclomatic Complexity 에 대한 자세한 내용은 위키피디아에서 확인하실 수 있습니다.
Cyclomatic complexity (or conditional complexity) is a software metric ( measurement). It was developed by Thomas J. McCabe Sr. in 1976 and is used to ...
결론적으로 Cyclomatic Complexity는 “분기문 개수 + 1″ 로 쉽게 계산할 수 있습니다.
이 복잡도의 의미는 바로 실행 경로의 개수를 말합니다.
즉, 이것은 최소한 테스트를 수행해야 하는 경로의 개수이고, 이것이 높다는 것은 필요한 테스트케이스의 수가 그만큼 많아지게 되는 것이기 때문에 오류를 모두 확인하지 못하고 출시될 수 있다는 것을 말합니다.
일반적으로 Cyclomatic Complexity 는 10을 기준으로 해서 더 높아지지 않는 것을 권장합니다. 대략 3~7 정도면 잘 구조화된 코드로 봅니다.
이 Cyclomatic Complexity 는 사람이 직접 계산할 수도 있지만 복잡한 코드를 control flow graph 로 작성하고 계산하는 과정은 일종의 리소스 낭비나 다름없기 때문에 이러한 복잡도를 계산해 주는 도구가 있습니다.
가장 대표적인 것이 McCabe 사의 McCabe IQ 입니다.
그런데 대부분의 Cyclomatic Complexity 를 구하는 도구들의 가격은 일반적인 회사에서 구매하기에 절대 만만치 않은 금액들이 많습니다.
하지만 궁하면 통한다고 했던가요?
다른 방법으로 코드의 복잡도를 구해주는 몇몇 오픈소스 도구들이 있습니다.
그 중 사용방법이 쉬우면서 다양한 언어를 지원하고 기능이 충실한 프로그램 중 하나로 SourceMonitor 라는 도구가 있습니다.
이 오픈소스 도구는 Cyclomatic Complexity 를 구해주는 도구는 아니지만 기본적으로 코드의 복잡도를 구해주는 도구로 유용하게 사용할만한 도구입니다. (솔직히 이 도구가 구해주는 복잡도가 정확히 어떤 것들을 참고로 해서 어떤 로직으로 구해지는 잘 모르겠습니다. 혹시 아시는 분 계신가요? Cyclomatic Complexity 를 구해주지 못한다고 해도 복잡도라는 것을 직관적으로 보여주기 때문에 유용한 도구임에는 틀림없습니다.)
SourceMonitor 의 가장 큰 장점으로는 CruiseControl.Net에 붙여서 자동화할 수 있다는 것입니다.
위 도구의 자세한 사용법은 아래 블로그를 한번 살펴보시면 도움이 되실 것입니다. 해당 블로그를 작성하신 분께서 수정된 CruiseControl.Net 의 스타일 쉬트 파일도 공유중이십니다.
- birdkr's home :: Source Monitor - 소스 복잡도 측정 도구: http://mypage.sarang.net/tt/280
이러한 매트릭을 측정하기 위해서 꼭 비싼 도구만을 사용해야 하는 것은 아니기 때문에 괜찮다면 한번 사용해 보시는 것도 좋을 것 같습니다.
비밀 댓글 입니다.
답글삭제