云智慧压测实战分享之JMeter脚本录制实例
在前面的《云智慧压测实战分享之JMeter工具使用初探》中我们对JMeter的功能特点和常用元件做了简单介绍,接下来说说JMeter的脚本录制。JMeter有多种录制脚本方法,其中最常见的是通过第三方工具Badboy录制,另外还有JMeter自身设置(Http代理服务器+IE浏览器设置)来录制脚本,下面以压测宝为例来介绍下Badboy脚本录制过程。
注:使用JMeter的代理或是Badboy进行录制的时候,操作不能太快,不然容易造成录制失败。
1、打开Badboy工具,在地址栏目中输入被测试项目的地址。注意:Badboy启动默认是录制状态,为红色按钮,如图:
录制完成后点击工具栏旁边黑色按钮,结束录制。
2、选择“文件”--Export to JMeter…
3、打开JMeter工具,选择“文件”-->“打开”选择刚才保存的文件(.jmx类型),将文件导入进来了。
录制的脚本一定要添加HTTP Cookie Manager,否则脚本运行失败。
对于JMeter来说,一个测试计划只能有一个Cookie管理器,因为当多个Manager存在时,JMeter没有方法来指定使用哪个Manager,同时一个Cookie Manager中存储的Cookie也不能被其他Cookie Manager所引用,所以同一个测试计划中不建议使用多个Cookie Manager。
JMeter压测实例
下面我们用几个JMeter压测实例来熟悉一下JMeter的使用。
1、使用JMeter进行http接口测试
Jmter工具设计之初是用于性能测试的,它在实现对各种接口的调用方面已经比较成熟,因此可直接使用JMeter工具来完成对Http接口的测试。
1)、开发接口测试案例的整体方案:
• 第一步:我们要分析出测试需求,并拿到开发提供的接口说明文档;
• 第二步:从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点。
• 第三步:和开发一起对接口测试案例进行评审。
• 第四步:结合开发库,准备接口测试案例中的入参数据和出参数据,并整理成csv格式的文件。
• 第五步:结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。
2)、接口自动化适用场景:
目前设计的自动化接口测试案例有两个运行场景:
a. 测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。【开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行即可。】
b. 回归测试:开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。
3)、接口测试环境准备
• Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html
• JMeter,下载址址:http://jmeter.apache.org/download_jmeter.cgi
• 插件的下载安装地址:http://www.jmeter-plugins.org/
4)、创建工程:
a、打开JMeter:下载好JMeter后,双击bin目录下的jmeter.bat文件:
b、添加线程组:在“测试计划”上点击鼠标右键-->添加-->threads(Users)-->线程组,添加测试场景设置组件,接口测试中一般设置为1个“线程数”,根据测试数据的个数设定“循环次数”。
c、添加“HTTP Cookie管理器”:
d、添加“Http请求默认值”组件,当被测系统有唯一的访问域名和端口时,这个组件很好用:
e、在“HTTP 请求默认值”组件配置页面,填写被测系统的域名和端口,http请求的实现包版本以及具体协议类型,线程组里的所有“HTTP Sampler”可默认使用此设置。
f、在“线程组”里添加“HTTP 请求”的Sampler
g、在HTTP请求设置页面,录入被测接口的详细信息,包括请求路径,对应的请求方法,以及随请求一起发送的参数列表:
h、设置检查点:在被测接口对应的“HTTP 请求”上,添加“响应断言”
i、在设置页面上添加对相应结果的正则表达式存在性判断即可:
j、添加监听器:方便查看运行后的结果
上述步骤完成了一个简单测试实例的创建,复杂测试实例均在此基础上扩展完成。使用JMeter工具开发的接口测试案例,一个子系统建议放在同一个“测试计划”中,流程测试可以通过“线程组”来区分,这样也便于设定不同的测试数据个数。比较独立的接口,可以统一放在一个线程组内,顺序完成测试。
流程性接口的测试:如果要测试的接口可以组成一个流程,只需要顺序添加多个“HTTP 请求”的Sampler,各请求之间可以提取需要在上下文传递的数据作为参数,以保证流程中数据的一致性。
2、JMeter分布式测试
在使用JMeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑(CPU和内存)可能无法支持,这时可以使用JMeter提供的分布式测试的功能。
1)、JMeter分布式执行原理:
JMeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。
执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
2)、执行机(slave)配置:
a、slave机上需要安装JMeter,具体如何安装这里不详细介绍了。
b、添加环境变量:JMETER_HOME=D:\B_TOOLS\apache-jmeter-2.13,此处为你JMeter的路径
c、启动bin目录下的:jmeter-server.bat,启动成功如下图:
d、上图上标红的IP和端口会在master里配置时用到。IP就是slave机器IP,端口默认是1099,端口也可以自定义,这里我自定义为1000,这个后面会讲。
e、多台slave的话,重复1~4步骤就好。
3)、调度机(master)配置:
a、脚本:简单的一个访问压测宝的脚本:
b、找到JMeter的bin目录下jmeter.properties文件,修改如下配置,IP和Port是slave机的IP以及自定义的端口(这里端口我自定义为100,后面会讲如何自定义):
remote_hosts=10.13.223.202:1000,10.13.225.12:1000
多台slave之前用","隔开,我这配置了2台,可以看到标红的这个就是上面截图slave的IP和Port.
c、打开JMeter,选择运行,有运程启动、运程全部启动两个选项:
d、选择远程启动-->10.13.225.12:1000
a) master结果,这里我只启动了10.13.225.12:1000这一台slave,所以只有一个结果(线程数和循环次数都是1):
b) slave控制台信息:
e、选择远程启动-->远程全部启动:
a) master结果,全部启动,我配置了2台slave,所以有两次执行结果:
4)、自定义端口:
上面其实已经实现了JMeter的分布式测试,这部分主要介绍下如何自定义slave端口:
a、slave:在slave机的JMeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1888:
server_port=1888
server.rmi.localport=1888
b、启动slave机上的jmeter-server.bat,如下图,端口已经修改为:1888
c、master:修改master机器的jmeter.properties文件:
remote_hosts=10.13.223.202:1000,10.13.225.12:1888
d、重启jmeter.bat,如下图,端口已经变了:
5)、其它说明:
a、调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
b、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
c、每台机器上安装的JMeter版本和插件最好都一致。
3、搭建持续集成接口测试平台
下面介绍最后一个实例,搭建持续集成接口测试平台(Jenkins+Ant+JMeter)。
1)、环境准备:
JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
Ant:http://ant.apache.org/bindownload.cgi
Jenkins:http://jenkins-ci.org/
2)、Jemter脚本准备:
a、脚本目录:D:\B_TOOLS\apache-jmeter-2.13\demo
b、脚本内容:都是访问压测宝或google首页
Script_yacebao.jmx
Script_google.jmx
3)、ANT的build.xml代码准备:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40<xslt p="" <="" in="${jmeter.result.jtlName}">
41 out="${jmeter.result.htmlName}"
42 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"/>
43
44
45
46
47
48
49
50
51
4)、配置Jenkins Job并运行:
a、job配置如下:
b、在job的workspace目录下会生成结果报告:
c、TestReport.html:
5)、配置发送邮件功能
a、自已写一个发送邮件的功能并打成sendmail.jar包,放在job的workspace目录中
b、jenkins增加构建步骤
a)进入到测试报告的目录
b) 调用sendmail.jar命令发送邮件
说明:
由build3.xml的第12、13行可知,报告文件生成目录为:${env.WORKSPACE}/results/${env.BUILD_ID},所以这里要先cd到具体执行的那个build_id目录下。
可以把上面的两行命令写在成一个批处理文件,例如第1步有个sendmail.bat文件就是,然后调用时直接写sendmail.bat就好了。
持续集成接口测试平台(Jenkins+Ant+JMeter)就此搭建成功,以上是关于Jmeter脚本录制和压测的几个实例,接下来为您带来进阶的《云智慧压测实战分享之JMeter场景设置与监控》,敬请期待。
转载地址:http://news.chinabyte.com/175/14014175.shtml
云智慧压测实战分享之JMeter脚本录制实例相关推荐
- 云智慧压测实战分享之JMeter场景设置与监控
随着IT技术的飞速发展和企业互联网+业务规模不断扩张,IT架构经历了以数据计算为核心的C/S架构.以聚焦业务功能及服务化构建应用的经典互联网架构和如今整合IT资源和按需使用的云计算架构三个阶段. 与之 ...
- 业务系统 Over 阿里云性能压测的最佳实践
业务系统性能压测的最佳实践 压测工具的选择 目前主流的压测工具有 ab Jmeter 阿里云PTS 如何来选择呢,我们建议如果是简单压测,可以直接使用ab来进行,它可以通过一条命令来快速的发起指定并发 ...
- 腾讯云压测和阿里云pts压测平台
腾讯云压测 可以支持自己编写脚本,设置施压配置 脚本怎么编写可以百度一下腾讯云压测文档就知道了,操作起来和其他的平台类似 PS : 施压配置>压力模式,可以针对多线程的时候选择使用 也支持直接上 ...
- 性能测试——JMeter脚本录制和HTTP负载测试
实验目的 (1)了解Jmeter性能测试工具的用途和简单的操作: (2)掌握Jmeter性能测试工具测试过程: (3)能够使用Jmeter进行负载测试: 实验步骤 使用Jmeter对MercuryTo ...
- https协议谷歌浏览器使用Jmeter脚本录制
一.http与https的区别 https协议需要到ca申请证书,一般免费证书很少,需要交费. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 http和ht ...
- Jmeter分布式压测实战及踩坑处理(含参数化)
项目中使用Jmeter进行大并发压测时,单机受限内存.CPU.网络IO,会出现服务器压力还没有上 去,但压测服务器由于模拟的压力太大死机的情况.JMeter的集群模式可以让我们将多台机器联合起来 一起 ...
- jmeter压测实战包括cpu性能检测
1.录制测试计划 1)打开jmeter,创建测试计划(线程组-sampler(HTTP请求-监听器(查看结果树.聚合报告))) 2)服务器参数端口做了个参数化管理: 3)对于请求数据也做一个参数化管理 ...
- 电商网站全链路压测实战
1.背景 在电商及互联网应用时代,用户和流量已成为应用核心竞争力,而随着数字化营销逐渐走进各个领域,线上的秒杀抢购.热点营销等活动也成为企业的必备营销手段,营销带来的大规模流量浪涌对系统来说是个巨大的 ...
- jmeter压测_jmeter压测学习2linux运行jmeter环境
前言 使用jmeter做压测的时候,在windows上不太稳定,所有一直在linux服务器上使用jmeter做压力测试. 本篇记录下linux上搭建jmeter环境,以及运行jmeter脚本,查看报告 ...
最新文章
- 浅谈ORACLE AWR single instance 一
- python语言学完后学什么_学完Python语言可以做什么?发展前景怎么样?
- Redis之压缩列表ziplist
- 关于HotSpot VM以及Java语言的动态编译 你可能想知道这些
- Nt/2000/xp平台下的存储控制模型(Access Control Model)
- 时间复杂度,贪心算法解最大团问题,回溯算法解0-1背包问题(仅步骤)
- animation和keyframes
- html自动播放音乐播放器代码,[界面设计] 关于HTML 音乐播放器代码|音乐播放器网页代码大全(转)...
- 滨州智能dcs系统推荐_dcs系统厂家推荐
- ROS路由器ethernet接口:
- html5圆形进度条倒计时,时尚的圆形进度条样式的jQuery倒计时插件
- 《SAP CRM管理与实施指南》一一2.1 SAP CRM基础数据管理
- IT大败局----第七章 企业并购的陷阱
- 小象学院数据分析笔记:绘制常见的图形
- 江敏:数据中台驱动下的企业创新升级
- 外卖平台乱象迭出!究竟谁该负责?
- python基础(一)字符串变形
- fitbit同步不了怎么解决_Fitbit用户投诉,升级Android 9 Pie后无法同步
- 光伏并网发电教学实验
- 摩托罗拉 L7 用mpt实现备份恢复电话本及上传下载图铃方法
热门文章
- [css] 说说position:sticky有什么应用场景
- 前端学习(1681):前端系列实战课程之让蛇动起来
- 前端学习(780):日期对象
- 第十六期:AWS 瘫痪:DNS 被 DDoS 攻击了 15 个小时
- #pragma pack(push,1)与#pragma pack(1)的区别
- llvm编译linux,在Linux上编译LLVM/Clang 8.0.0等全部源代码
- c mysql ssh_c ssh mysql数据库
- 微信小程序组件知识点GET
- swiper 滑动出现闪白
- 20个常用的Python小技巧