PITest - 변형이 단위 테스트에 어떻게 도움이 되는지.

5207 단어
PITest는 적용 범위가 올바른지 확인하기 위해 JUnit 테스트에서 변형을 실행하는 Java 라이브러리입니다.


돌연변이 검사란 무엇입니까?



돌연변이 테스트는 코드의 일부 요소를 수정하여 테스트가 올바른 것을 확인하고 있는지 확인하는 테스트 프로세스입니다. 최소한 테스트가 돌연변이로 인해 실패하면 돌연변이가 죽습니다. 그렇지 않으면 살아 있습니다.

목표는 모든 돌연변이 테스트를 죽이는 것입니다.

예를 들어 메서드에 조건이 있는 경우 하나의 뮤테이터가 조건을 true로 변경합니다. 따라서 호출되는 메서드나 반환해야 하는 값을 확인하지 않으면 돌연변이가 유지됩니다.


그것을 구성하는 방법?



pom에서 라이브러리를 가져오고 빌드 섹션에서 선언하기만 하면 됩니다.

<project>
    ...
    <build>
        <plugins>
            <plugin>
                <groupId>org.pitest</groupId>
                <artifactId>pitest-maven</artifactId>
                <version>1.6.2</version>
                <executions>
                    <execution>
                        <id>pitest</id>
                        <phase>test</phase>
                        <goals>
                            <goal>mutationCoverage</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.pitest</groupId>
                        <artifactId>pitest-junit5-plugin</artifactId>
                        <version>0.12</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <timestampedReports>false</timestampedReports>
                    <mutationThreshold>100</mutationThreshold>
                    <coverageThreshold>80</coverageThreshold>
                </configuration>
            </plugin>
        </plugins>
    </build>
    ...
</project>


이 섹션에서는 다음과 같은 돌연변이 테스트의 모든 구성을 갖게 됩니다.

  • mutationThreshold: 성공하려면 작동해야 하는 돌연변이의 백분율

  • coverageThreshold: 빌드를 성공하기 위한 코드 적용 범위의 백분율

  • excludeClasses: PITest에서 무시해야 하는 클래스입니다.

  • mutators: 프로젝트에서 실행할 돌연변이 연산자
  • ...

  • Link to the PITest Configuration documentation


    그것을 실행하는 방법?



    단독으로 실행하려면 다음 명령을 사용할 수 있습니다.

    mvn org.pitest:pitest-maven:mutationCoverage



    그렇지 않으면 다음을 사용할 수 있습니다.

    mvn verify



    명령에 일부 옵션을 제공할 수 있습니다.

    mvn org.pitest:pitest-maven:scmMutationCoverage -DmutationThreshold=85



    사용 가능한 다른 옵션에 대한 세부 정보
  • http://pitest.org/quickstart/commandline/
  • http://pitest.org/quickstart/maven/



  • 결과



    돌연변이 임계값을 얻지 못하면 빌드가 실패하고 문제가 무엇인지 신속하게 알려줍니다.

    문제가 어디에 있는지 제대로 확인하기 위해 모든 빌드에서 PITest는 target/pit-reports/YYYYMMDDHHMI에 대한 HTML 보고서를 생성합니다! 이 요소를 사용하면 각 클래스에 대한 코드 및 변이 적용 ​​범위를 빠르게 확인할 수 있습니다.


    그리고 클래스 세부 정보로 이동하면 오류 및 해당 세부 정보가 표시됩니다.




    문서 링크:


  • Official Website
  • Tutorial with PITest
  • GitHub Project



  • 그것이 당신을 도울 수 있기를 바랍니다!

    좋은 웹페이지 즐겨찾기