반응형

코드 커버리지

  • 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표중 하나다. 말 그대로 코드가 얼마나 커버되었는지, 소프트웨어 테스트를 진행했을 때 코드 자체가 얼마나 실행되었냐는 것을 의미한다.

 

메이븐 Jacoco 설정

 <build>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.7</version>
        <executions>
          <execution>
            <id>default-prepare-agent</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>report</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
          <!-- 커버리지 만족 못할 시, 빌드 실패 설정 -->
          <execution>
            <id>jacoco-check</id>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <rules>
                <rule>
                  <element>PACKAGE</element>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.50</minimum>
                    </limit>
                  </limits>
                </rule>
              </rules>
            </configuration>
          </execution>
          <!-- 커버리지 만족 못할 시, 빌드 실패 설정 끝 -->
        </executions>
      </plugin>
    </plugins>
  </build>

 

 

Jacoco report 예시

노란색 다이아몬드는 분기문 중 일부만 테스트 된 경우 표시가 된다. 완전하게 테스트 되려면 분기문의 참에 해당하는 조건과 거짓에 해당하는 조건 둘 다 확인되어야 한다.

붉은 영역은 실행이 되지 않은 영역이고 초록색 영역은 실행된 영역이다.

 

코드 커버리지 툴의 동작 원리?

우선, 바이트 코드를 읽어서 코드 커버리지를 측정해야 하는 것들의 갯수를 세어 놓는다.

그 후, 코드가 실행이 될 때 측정된 것들의 동작여부를 확인하면서 갯수를 세고 초기에 바이트 코드를 읽어 측정한 것과 실제 동작한 것들을 서로 비교를 해서 커버리지를 측정한다.


[참고자료]

더 자바, 코드를 조작하는 다양한 방법, 백기선

코드 커버리지

반응형

+ Recent posts