Statement Coverage
Statement Coverage는 Code Coverage 분석의 7 가지 분석 척도 중 하나로써, 각 Statement 가 테스트되는 수준을 정의하는 척도입니다. 이 Statement Coverage 분석을 통해, 개발된 소프트웨어가 어느 정도 테스트가 수행되었는지를 파악할 수 있습니다.
참조 : Code Coverage
예를 들어 다음과 같은 소스 코드가 있을 경우,
package codecoverage; public class StatementCoverageTest { public void method1(int param){ for(int i = 0 ; i < param ; i++){ System.out.println(i); } } }
이 소스 코드를 테스트 하기 위한 Test Case를 다음과 같이 작성하였을 경우,
package codecoverage; import junit.framework.TestCase; public class StatementCoverageTestCase extends TestCase { public void testMethod1(){ StatementCoverageTest statementCoverageTest = new StatementCoverageTest(); statementCoverageTest.method1(0); } }
이 Test Case 를 수행할 경우, method1 내의 for loop 내로 진입을 하지 못하여, System.out.println(i); 구문이 테스트되지 못하기 때문에, 다음과 같은 분석 결과를 얻을 수 있습니다.
위 그림과 같이, Test Case 수행 시, 수행되지 않은 코드는 빨갛게 표현된 부분이며, 이에 따른 Statement Coverage는 다음과 같이 0%가 되게 됩니다.
이 분석 결과를 100%에 맞추기 위하여, 다음과 같이 Test Case를 추가합니다.
package codecoverage; import junit.framework.TestCase; public class StatementCoverageTestCase extends TestCase { public void testMethod1(){ StatementCoverageTest statementCoverageTest = new StatementCoverageTest(); statementCoverageTest.method1(0); } public void testMethod2(){ StatementCoverageTest statementCoverageTest = new StatementCoverageTest(); statementCoverageTest.method1(10); } }
위와 같이 Test Case를 추가할 경우, testMethod2 Test Case에 의해, For loop 구문 내로 진입할 수 있으며, For loop 내의 Statement가 테스트될 수 있습니다. 그 결과는 다음과 같습니다.
위과 같이, For loop 내의 Statement가 녹색으로 테스트 되었음을 확인할 수 있으며, Statement Coverage 결과는 다음과 같습니다.
이와 같이, 테스트 대상이 되는 소스 코드가 Statement 단위로 100% 수행되도록 Test Case를 작성하여, 테스트 결과를 분석하는 기준이 Code Coverage 중, Statement Coverage에 해당합니다.
이 분석의 목적은, 소스 코드를 100% 테스트하기 위함이며, 어떠한 Test Case를 작성하더라도 수행될 수 없는 Dead Code를 찾아내는 것이 그 목적입니다.
Dead Code : 개발된 소프트웨어 내에서 단 한번도 수행되지 않는 Code를 의미함 |
물론, TDD(Test Driven Development) 기반으로 프로젝트를 진행하지 않더라도, Test Case를 작성하여, 분석을 수행하고, 그 정도가 100%에 가깝도록 Test Case를 작성하여, 소프트웨어가 오작동(BUG)을 일으킬 가능성을 낮출 수 있도록 하는 것이 Code Coverage 분석입니다.
[ 참고 ]
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 - Decision Coverage (4) | 2009.08.17 |
코드 커버리지(Code Coverage) (1) | 2009.08.17 |