性能测试与持续集成(JMeter+Jenkins)

目的

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

JMeter

下载JMeter,官网: http://jmeter.apache.org/

创建测试计划: 访问 http://www.cnblog.com ,验证Response的返回值中存在cnblog

Thread组配制

Http请求

Response断言

使用GUI的JMeter查看运行测试结果

GUI JMeter测试结果

使用命令行执行测试

-J 指定生成的结果格式为xml,-t 指定测试文件,-l 测试结果

结果

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

下载Jenkins包,官网: https://jenkins.io/

启动Jenkins

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插件: 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,查看结果

在JOB的workspace下会生成两个文件jmeter.log TestPlan.jtl

配制运行报告

添加测试报告

查看统计结果

后续

可将jmx文件存放到仓库中,便于维护和管理

将JOB添加到版本构建中,在版本构建完成后,自动执行性能,确保每次的版本Build均满足性能需求

原文链接:http://www.jianshu.com/p/edc0d171a6d1

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2016-09-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闵开慧

ERROR security.UserGroupInformation: Priviledge...

"Failed to set permissions of path"问题 参考文献:https://issues.apache.org/jira/browse...

3619
来自专栏nnngu

01 Spring Boot 的简单配置和使用

Spring Boot 简介 使用 Spring Boot 可以让我们快速创建一个基于 Spring 的项目,而让这个 Spring 项目跑起来我们只需要很少的...

3405
来自专栏别先生

SpringMVC的初始

1:其实一开始对SSH和SSM并不是很熟悉的,对SSH可能熟悉些(Struts,Spring,Hibernate)这三个框架。但是由于框架的更新,和出现了更好的...

2279
来自专栏dalaoyang

SpringBoot的国际化使用

在项目中,很多时候需要国际化的支持,这篇文章要介绍一下springboot项目中国际化的使用。 在这个项目中前端页面使用的thymeleaf,另外加入了neko...

49813
来自专栏Dawnzhang的开发者手册

@Controller和@RestController的区别?

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalRes...

4893
来自专栏Netkiller

Spring boot with Git version

本文节选自《Netkiller Java 手札》 5.23. Spring boot with Git version Spring boot 每次升级打包发给...

3148
来自专栏全栈架构

Spring Boot 与 Kotlin 处理Web表单提交

我们在做web开发的时候,肯定逃不过表单提交,这篇文章通过Spring Boot使用Kotlin 语言 创建和提交一个表单。

762
来自专栏技术小黑屋

获取shell脚本所在目录

前几天写的七牛的参赛demo,用bash写了一个便捷安装的脚本,涉及到了路径相关的判断,从stackoverflow,加上自己的实践整理一下。

1012
来自专栏技术专栏

Flume pull方式和push方式整合

==注意在本地和服务器上切换的时候需要修改flume的sink的hostname==

2413
来自专栏颇忒脱的技术博客

Nginx反向代理WebSocket响应403的解决办法

在Nginx反向代理一个带有WebSocket功能的Spring Web程序(源代码地址)时,发现访问WebSocket接口时总是出现403响应,Nginx的配...

2565

扫码关注云+社区

领取腾讯云代金券