性能测试与持续集成

作者: Yuan_Jie | 来源:发表于2016-08-06 10:05 被阅读1850次

    目的

    • 将性能测试与持续集成挂接起来
    • 性能测试: JMeter
    • 持续集成: Jenkins

    JMeter

    Thread组配制 Http请求 Response断言
    • 使用GUI的JMeter查看运行测试结果
    GUI JMeter测试结果
    • 使用命令行执行测试
      -J 指定生成的结果格式为xml,-t 指定测试文件,-l 测试结果
    java -jar ApacheJMeter.jar -Jjmeter.save.saveservice.output_format=xml -n -t /Users/yjshi/Downloads/TestPlan.jmx -l TestPlan.jtl
    

    结果

    Writing log file to: /Users/yjshi/Downloads/apache-jmeter-3.0/bin/jmeter.log
    Creating summariser <summary>
    Created the tree successfully using /Users/yjshi/Downloads/TestPlan.jmx
    Starting the test @ Thu Aug 04 18:41:43 CST 2016 (1470307303526)
    Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
    summary =     10 in 00:00:01 =    8.3/s Avg:   333 Min:   183 Max:   539 Err:     0 (0.00%)
    Tidying up ...    @ Thu Aug 04 18:41:44 CST 2016 (1470307304767)
    ... end of run
    
    • JMeter已经可以通过命令行来执行

    Jenkins

    配制JMeter

    Running from: /Users/yjshi/Downloads/All/Software/jenkins/jenkins.war
    webroot: $user.home/.jenkins
    Aug 04, 2016 5:52:13 PM winstone.Logger logInternal
    INFO: Beginning extraction from war file
    Aug 04, 2016 5:52:13 PM org.eclipse.jetty.util.log.JavaUtilLog info
    INFO: jetty-winstone-2.9
    Aug 04, 2016 5:52:19 PM org.eclipse.jetty.util.log.JavaUtilLog info
    INFO: NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet
    Jenkins home directory: /Users/yjshi/.jenkins found at: $user.home/.jenkins
    Aug 04, 2016 5:52:26 PM org.eclipse.jetty.util.log.JavaUtilLog info
    INFO: Started SelectChannelConnector@0.0.0.0:8080
    Aug 04, 2016 5:52:26 PM winstone.Logger logInternal
    INFO: Winstone Servlet Engine v2.0 running: controlPort=disabled
    Aug 04, 2016 5:52:26 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Started initialization
    Aug 04, 2016 5:52:32 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Listed all plugins
    Aug 04, 2016 5:52:32 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Prepared all plugins
    Aug 04, 2016 5:52:32 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Started all plugins
    Aug 04, 2016 5:52:32 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Augmented all extensions
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Loaded all jobs
    Aug 04, 2016 5:52:35 PM hudson.model.AsyncPeriodicWork$1 run
    INFO: Started Download metadata
    Aug 04, 2016 5:52:35 PM org.jenkinsci.main.modules.sshd.SSHD start
    INFO: Started SSHD at port 54488
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Completed initialization
    Aug 04, 2016 5:52:35 PM hudson.UDPBroadcastThread run
    INFO: Cannot listen to UDP port 33,848, skipping: java.net.SocketException: Can't assign requested address
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Started initialization
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Listed all plugins
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Prepared all plugins
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Started all plugins
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Augmented all extensions
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Loaded all jobs
    Aug 04, 2016 5:52:35 PM jenkins.InitReactorRunner$1 onAttained
    INFO: Completed initialization
    Aug 04, 2016 5:52:35 PM hudson.WebAppMain$3 run
    INFO: Jenkins is fully up and running
    
    Performance plugin
    • 配制Jenkins中的JOB
    echo 'begin testing'
    java -jar /Users/yjshi/Downloads/apache-jmeter-3.0/bin/ApacheJMeter.jar -Jjmeter.save.saveservice.output_format=xml -n -t /Users/yjshi/Downloads/TestPlan.jmx -l TestPlan.jtl
    echo 'testing end'
    
    • 运行JOB,查看结果
    Jenkins执行结果
    • JOBworkspace下会生成两个文件jmeter.log TestPlan.jtl
    jmeter.log TestPlan.jtl

    配制运行报告

    • 添加测试报告
    报告读取
    • 查看统计结果
    统计结果

    后续

    • 可将jmx文件存放到仓库中,便于维护和管理
    • JOB添加到版本构建中,在版本构建完成后,自动执行性能,确保每次的版本Build均满足性能需求

    参考

    相关文章

      网友评论

      • 罗德里格斯_:怎么能选中所以的jmx文件执行 ,我执行的时候只能指定某一个jmx文件

      本文标题:性能测试与持续集成

      本文链接:https://www.haomeiwen.com/subject/chzcsttx.html