Получите покрытие кода функционального тестирования jmeter

Я пытаюсь извлечь отчет о покрытии кода при выполнении функционального теста jmeter с помощью плагина maven. Я попытался использовать плагин jacoco, чтобы настроить его для создания отчета о покрытии кода, но, похоже, он настраивается только с помощью модульного и интеграционного тестирования, которые находятся в формате классов java, например. * IT.java или * Test.java. Но в моем случае выполнение функционального теста происходит с файлом Jmeter .jmx с использованием плагина jmeter. Я знаю, что редко можно получить покрытие кода для функциональных тестов, но если кто-то работал над подобной вещью, поделитесь некоторыми подробностями. Ниже показан плагин, который я использую для выполнения теста Jmeter.

<plugin>
               <groupId>com.lazerycode.jmeter</groupId>
                   <artifactId>jmeter-maven-plugin</artifactId>
                   <version>2.1.0</version> 
                   <executions>
                     <execution>
                              <id>jmeter-tests</id>
                              <phase>verify</phase>
                              <goals>
                                <goal>jmeter</goal>
                              </goals>
                         </execution>
                  </executions> 
                  <configuration>
                    <ignoreResultFailures>true</ignoreResultFailures>
                    <resultsDirectory>${jmeter-testresults}</resultsDirectory>
                        <propertiesUser> 
                              <hostname>${jmeter-testhost}</hostname>
                              <hostport>${jmeter-testport}</hostport>
                              <testresults>${jmeter-testresults}</testresults>
                    </propertiesUser> 
                       <propertiesJMeter>
                              <jmeter.save.saveservice.url>true</jmeter.save.saveservice.url>
                              <jmeter.save.saveservice.samplerData>true</jmeter.save.saveservice.samplerData>
                       </propertiesJMeter> 
              </configuration>
            </plugin>

person Sikandar    schedule 12.10.2017    source источник
comment
использование JMeter для функционального тестирования также необычно. JMeter - не самый удобный инструмент в мире для работы, по крайней мере, для тестирования производительности у вас вроде как нет выбора, но зачем использовать его для функционального тестирования? Особенно, если целью является покрытие кода. Почему бы не использовать обычный тестовый фреймворк - junit, testng и т. Д. И просто написать в нем функциональные тесты? Покрытие кода там действительно просто ...   -  person Kiril S.    schedule 12.10.2017
comment
здесь тесты Jmeter больше используются как тестирование API для микросервисов. Поэтому мне нужен отчет о покрытии кода для тестируемых API во время выполнения теста jmeter. На данный момент у меня есть отчет об отсутствии охваченных API и не охваченных API. Мне нужно расширить результат, чтобы охватить базу кода во время выполнения API, чтобы получить более подробную информацию о пропущенных случаях.   -  person Sikandar    schedule 13.10.2017
comment
Поскольку исходный код JMeter не виден, я не понимаю, как это сделать со стороны JMeter. Я думаю, что единственный способ - использовать некоторые инструменты профилирования на самих микросервисах во время работы JMeter.   -  person Kiril S.    schedule 13.10.2017


Ответы (1)


Я могу получить покрытие кода с помощью командной строки git bash. Ниже приведены шаги.

  • Загрузите проект jacoco с http://www.eclemma.org/jacoco/ и распакуйте на своем локальном например C: / jacoco. Он будет содержать файлы jacocoagent.jar и jacococli.jar в папке lib.

  • # P3 #
    # P4 #

Приведенная выше команда внедрит jacocoagent в maven jvm во время запуска сервера, чтобы он мог читать и захватывать поток выполнения и сохранять его на tcpserver. Я использую tcpserver в качестве вывода, поскольку, используя файловый режим, мне нужно корректно завершить работу jvm, чтобы получить данные выполнения. После запуска сервера выполните

mvn проверить

Команда Verify интегрирована с плагином выполнения Jmeter в моем pom xml. Итак, команда verify запустит выполнение моего теста Jmeter. Теперь, когда данные выполнения хранятся на tcp-сервере, нам нужно выгрузить их в файл jacoco, чтобы получить отчет. Выполните команду ниже, чтобы сбросить данные выполнения в файл jacoco.exec.

java -jar C: /jacoco/lib/jacococli.jar dump --destfile "ваш локальный путь / jacoco.exec"

Теперь вы должны увидеть файл jacoco.exec, созданный по указанному пути. Однако эти данные не в удобочитаемом формате. Чтобы создать отчет в читаемом формате html, выполните команду ниже.

java -jar C: /jacoco/lib/jacococli.jar report "Путь к файлу jacoco / jacoco.exec" --classfiles "Путь к файлам классов проекта" --html "Путь к хранилищу отчета \ jacoco-report" --name myReport --sourcefiles "Путь к исходным файлам"

Теперь вы должны видеть отчеты в формате html, созданные по заданному пути.

Справочник

person Sikandar    schedule 25.10.2017
comment
В настоящее время решение представляет собой ручной процесс. Вы интегрировались с Maven, чтобы автоматизировать это. Если да, то также опубликуйте свои ответы. - person Saxena Shekhar; 07.04.2020