利用xsltproc转换jtl报告到html报告

  使用Jmeter测试完后并不能直接生成html报告,而是jtl报告。这里我们可以用xsltproc来解决。

  xsltproc是由DanielVeillard用来C语言编写的是一个快速XSLT引擎,
  它可以将通过XSL层叠样式表把XML转换为相应格式的文件,
  比如:HTML,XHTML,PDF...

  XSL指扩展样式表语言(EXtensible Stylesheet Language),
  把XML转换为HTML用的就是xls编写的样式表,
  所以如果要扩展这个报告,首先要对xls熟悉,
  才能更改和扩展样式表。
  可以在http://www.w3school.com.cn/xsl/index.asp这里进行此语言的学习。

IDEA+Jmeter测试环境搭建

  1. 修改jmeter.properties配置文件
    jmeter.save.saveservice.output_format=xml
  2. 下载xsltproc文件并解压,可执行文件路径加到环境变量中
    下载路径:链接:https:pan.baidu.com/s/1qZpoLwo 密码:ky88

    参照此文:http:www.crifan.com/files/doc/docbook/docbook_dev_note/release/webhelp/download_xsltproc_win.html

  3. 复制报告模板文件
    将Jmeter安装目录\extras下的jmeter-results-detail-report_21.xsl和
    jmeter-results-report_21.xsl模板文件复制到
    src\test\resources文件夹中,jmeter文件夹下面放.jmx文件,
    如果报告中缺失展开图标,一并复制collapse.png和expand.png到resources文件夹中

  4. 修改POM文件,有二个方案,方案一:在pom.xml里加入xsltproc执行插件,可以直接生成html报告
    <plugin>
      <groupId>com.lazerycode.jmeter</groupId>
      <artifactId>jmeter-maven-plugin</artifactId>
      <version>2.1.0</version>
       <ignoreResultFailures>true</ignoreResultFailures>
       <testResultsTimestamp>false</testResultsTimestamp>
       <testFilesIncluded>
         <jMeterTestFile>testdemo.jmx</jMeterTestFile>
       </testFilesIncluded>
      <executions>
         <execution>
             <id>jmeter-tests</id>
             <phase>verify</phase>
             <goals>
             <goal>jmeter</goal>
             </goals>
          </execution>
       </executions>
    </plugin>
    <plugin>
          <groupId>org.codehaus.mojo</groupId>
               <artifactId>exec-maven-plugin</artifactId>
               <version>1.6.0</version>
               <executions>
                  <execution>
                     <phase>verify</phase>
                        <goals>
                           <goal>exec</goal>
                        </goals>
                      </execution>
                  </executions>
                <configuration>
                <executable>xsltproc</executable>
                <arguments>
                    <argument>-o</argument>
                    <argument>target/jmeter/results/testdemo.html</argument>
    <argument>src/test/resources/jmeter-results-detail-report_21.xsl</argument>
    <argument>target/jmeter/results/testdemo.jtl</argument>
    </arguments> </configuration> </plugin>

    方案二:如果需要Jenkins持续集成,且服务器是Linux,xsltproc找不到路径的话,去掉exec-maven-plugin,在Jenkins里用shell命令来替换,
    详见《Jenkins+Maven+Jmeter接口自动化持续集成测试》)。

    那么IDEA里面去掉exec-maven-plugin后,如何转化jtl到html报告呢,可以在IDEA命令行输入以下命令:

    xsltproc -o target/jmeter/results/testdemo.html src/test/resources/jmeter-results-detail-report_21.xsl target/jmeter/results/testdemo.jtl

  5.  查看html报告

  6. 展开报告可能没有显示样式和图标,Jenkins安全策略CSP设置禁止了,只需要到Jenkins系统管理à脚本命令行,执行以下Groovy命令,然后点击运行。配置完成后,重新构建原有项目,HTML页面即可正常显示。

    System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

    但是重启后就失效了。这里就需要2个插件:

      (1)Startup Trigger 插件:可实现在Jenkins节点(master/slave)启动时触发构建

      (2)Groovy plugin: 可实现直接执行Groovy代码

   解决步骤如下:

      1、Jenkins中新建一个Job,该Job专用Jenkins启动时执行的配置命令。

      2、在“构建触发器”模块,选择“Build when job nodes start”选项。

                      

      3、在“构建”模块,选择“Execute system Groovy ”,执行如下Groovy命令:

          System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

      

      立即构建此Job,返回原项目重新构建,再次访问HTML页面,问题解决。

 

      接下去就是跟Jenkins集成,做持续集成测试,将在下一篇做详细介绍,尽请期待!

posted @ 2018-02-05 15:07  大道QA团队  阅读(885)  评论(0编辑  收藏  举报