Code Coverage - Decision Coverage
Decision Coverage는 Code Coverage 분석의 7가지 척도 중 하나로써, 각 조건문이 True 혹은 False가 되는 조건이 모두 테스트되는 정도를 측정하는 척도입니다.
참조 : Code Coverage, Statement Coverage
예를 들어 다음과 같은 코드가 있을 경우,
package codecoverage; public class DecisionCoverageTest { public int method(int param){ if(param > 0){ System.out.println("param is greater than 0"); } else{ System.out.println("param is equal or less than 0"); } return param; } }
이 소스 코드를 테스트하기 위한 Test Case를 다음과 같이 작성하였을 경우,
package codecoverage; import junit.framework.TestCase; public class DecisionCoverageTestCase extends TestCase { public void testMethod1(){ DecisionCoverageTest decisionCoverageTest = new DecisionCoverageTest(); assertEquals(decisionCoverageTest.method(5), 5); } }
이 Test Case를 수행하는 경우, DecisionCoverageTest.method 내의 if 문 조건 중, True인 조건만을 만족하기 때문에, Decision Coverage 기준에 의한 Coverage가 100%를 만족하지 못합니다.
다음 결과를 보시면,
위와 같이, TestCase에서 method에 대한 Test Case 작성 시, 파라미터 값이 5에 대한 Test Case만을 작성하는 경우, if 내의 참인 조건 만 Test가 수행되게 됩니다. 그 결과로써, Decision Coverage는 다음과 같습니다.
이 분석 결과를 100%로 하기 위해서는 다음과 같이 Test Case를 추가할 수 있습니다.
package codecoverage; import junit.framework.TestCase; public class DecisionCoverageTestCase extends TestCase { public void testMethod1(){ DecisionCoverageTest decisionCoverageTest = new DecisionCoverageTest(); assertEquals(decisionCoverageTest.method(5), 5); } public void testMethod2(){ DecisionCoverageTest decisionCoverageTest = new DecisionCoverageTest(); assertEquals(decisionCoverageTest.method(0), 0); } }
이 경우, 두 개의 Test Case에 의해, if 내의 조건의 True인 경우와 False인 경우가 모두 테스트되기 때문에, Decision Coverage를 100%를 달성할 수 있습니다. 결과를 보시면,
위와 같이 Decision Coverage에 따른 Code Coverage가 100%가 됨을 알 수 있습니다.
이와 같이, Decision Coverage의 경우, Statement Coverage 보다는 좀 더, 상세한 Test Case가 필요하며, 소프트웨어가 실행될 때의 각 상태에 따른 수행 경로를 좀 더 상세하게 테스트할 수 있습니다.
[ 참고 ]
1. Coverage 분석 Tool : Code Cover for Eclipse ( http://codecover.org )
'시즌1 > Java Tips' 카테고리의 다른 글
[Java Tips] Java Primitive Type을 Hex String으로 변환하는 Utility (3) | 2009.09.08 |
---|---|
소프트웨어 테스팅 : 자바 코드 커버리지 툴(Java Code Coverage Tool) (0) | 2009.08.20 |
소프트웨어 테스팅 : Code Coverage 분석 Tool - CodeCover 리뷰 (2) | 2009.08.19 |
소프트웨어 테스팅 : Code Coverage - Statement Coverage (1) | 2009.08.17 |
코드 커버리지(Code Coverage) (1) | 2009.08.17 |