Jmeter录制压测脚本的四种方式介绍

为什么要进行脚本录制?

在做接口测试时,开发会提供接口文档作为测试脚本编写的依据,但接口文档往往有一些局限性:

接口文档本身可能有编写错误

接口文档可以针对单个字段的取值和含义做描述,但多个字段的组合作用很难通过文字做一个完备的描述

仅靠文字描述,测试人员难以把接口和业务操作完全匹配起来

这个时候我们就需要借助抓包工具,分析业务操作和业务流背后的接口调用和接口数据组合

目前业界有很多抓包工具,包括Fiddler,Charles,当抓到数据以后,测试人员对数据做一个梳理分析,然后再转化成接口测试脚本。

录制脚本四种方式介绍:

一:使用原生的HTTP代理服务器
  1. 原理:

Jmeter可以作为web服务器与浏览器之间的代理网关,以便捕获浏览器的请求和web服务器的响应,如此就可以很容易地生成性能测试脚本。

JMeter脚本(.jmx)为xml格式,树形结构,由元件组成,使用取样器产生请求,主要采用HTTP代理服务器。

  1. 操作:

1)jmeter配置

1.1 在测试计划中添加线程组

1.2 在线程组中添加录制控制器

1.3 在测试计划中添加代理服务器,且http代理服务器后界面设置如下:

2)浏览器配置

2.1 使用Chrome浏览器,设置本机代理,IP地址:127.0.0.1;端口号:8889

打开代理模式:

2.2 添加浏览器证书:

2.2 .1 添加证书:(打开管理证书后选择受信任的根证书颁发机构点击导入,进入jmeter安装目录Bin文件夹)

导入成功:

3、录制与回放

Http Test Script Recorder 点击开始,同时在浏览器中开始操作,jmeter开始录取网站内容。

4、jmeter调试

此时的jmeter会抓取浏览器所有发送的请求,为了只查看需要的服务网址,使用过滤器

Http Test Script Recorder:(使用正则表达式)

URl Patterns to Include 只查看包含的url

URl Patterns to Exclude 过滤掉包含的url

脚本过滤:

测试计划 -> http代理服务器 -> requests filtering -> 排除模式 ,录制时排除在外的内容:

.*\.(js|css|PNG|jpg|ico|png|gif).*

PS:

录制完成记得关闭代理;

二:Chrome浏览器使用BlazeMeter插件录制脚本
  1. 特点:

1.轻量级的免费测试工具;

2.可以功能测试,主要还是性能测试;

3.可以单独进行简单任务的压力测试,也可以作为Jmeter脚本开发工具。 主要是测试人员使用。也有少量功能支持开发人员调试、自测使用。

  1. BlazeMeter Chrome插件官方简介:

记录 Selenium 和 HTTP 流量在不到 10 分钟的时间内创建负载和功能测试(Apache JMeter 兼容)。

BlazeMeter Chrome 扩展使您能为web应用程序录制、上传、运行测试。

Chrome 扩展记录了您的浏览器发送的所有 HTTP/S 请求和实际用户交互。它创建一个 JMeter 或 Selenium 脚本,并自动将其上传到 BlazeMeter.com,您只需单击一下即可执行测试。无需安装 JMeter 或 Selenium 即可记录或运行 GUI 功能、API 功能或性能测试,Chrome 扩展将自动创建 JMeter (JMX) 和 Taurus Selenium (YAML) 脚本。

该扩展还允许您在本地 Chrome 浏览器上调试和测试记录 Selenium 会话。

通过在本地使用 JMeter,您可以调试和增强由 Chrome 扩展创建的 JMX 文件,以确保您的脚本准备就绪。

BlazeMeter的功能和要求:

- 记录浏览器发出的所有HTTP请求;

- Apache JMeter兼容;

- 运行没有测试脚本应用程序的测试;

- 为多达1,000,000个并发用户运行测试;

- 需要BlazeMeter帐户(免费);

  1. 安装:去谷歌应用商城https://chrome.google.com/webstore/category/extensions?hl=zh-CN 下载插件Blazemeter,添加至Chrome;

  1.  登录Blazemeter,想使用并且导出脚本的话需要登录Blazemeter,但是由于申请账号麻烦,可以直接谷歌授权登录即可;

  1. 录制过程可以看到是这样的,可以随时暂停,数字代表的是录制了多少个;

  1. 录制结束后,点击edit,选择Jmeter Script(可以直接导入到jmeter),保存到本地

  2. 打开Jmeter-打开导出的jmx脚本,BlazeMeter自动填充全局配置信息(Http信息头,抽取出接口环境变量)

BlazeMeter成功抓取到搜索接口的路径以及它的参数信息:

  1. 可以在本地线程组添加查看结果数运行;

PS:测试的时候浏览器最好只打开一个标签,以免其他页面对录制的脚本造成影响,如果涉及到多个站点的请求,在导出脚本的时候会让你选择:

选择相应的站点,点击submit即可;

三:通过Fiddler抓包导出Jmeter脚本
  1. 原理:JMeter本质上是一个xml文档,Fiddler通过改写http代理,让数据从它那通过,来监控并且截取到数据的代理机制,插件的基本原理就是Fiddler抓取HTTP请求包,将HTTP请求信息通过插件的逻辑处理组装成JMeter可识别的脚本即可。

  2. 操作如下:

第一步:下载扩展插件,直接使用已有的开源插件,github地址,或者通过该地址下载:插件下载

第二步:插件下载完后,将下载的JmeterExport.dll文件放到Fiddler的ImportExport对应的目录下,移动成功后,记得重启fiddler,如下图:    

  第三步:打开Fiddler抓取请求(可进行过滤)

  1. 勾选“UseFilters”

  2. 在下面的下拉框中选择“Show only the following Hosts”,并在输入框中填入Hosts名称,如*.baidu.com;

  3. 在Requests Headers中勾选“Hide if URL contains”,填入.css .js .gif .png .jpg .swf 用以过滤css/js/图片等类型请求

  4.  根据需要,可在下面“Respons Status Code”中勾选“Hide non-2xx”用以过滤非2xx返回码(即失败)的请求

  5. 最后点击右上角Actions -> Run Filterset Now,开始运行Filer过滤

第四步:设置请求的Comments(选中请求 按大写的M键)

第五步:File---Export Sessions---Selectd Sessions,选中对应的Jmeter格式保存。

第六步:导入到JMeter稍作修改执行后续测试。

注意:导出的jmeter脚本是不包含Thread Group的,需要自己创建Thread Group,然后再运行脚本查看结果进行分析。

常见问题:

1.打开jmeter脚本时报如下错:problem loading XML from: CannotResolveClassException:

 问题1解决方法:

1、下载jmeter插件

jmeter插件下载地址:Install :: JMeter-Plugins.org

2、将下载的jmeter-plugins-manager.jar

jmeter-plugins-manager.jar是jmeter的一个插件管理工具包,下载完成之后,将下载的jmeter-plugins-manager-0.11.jar文件放置到jmeter的安装目录/lib/ext

3、重启jmeter,进入options -> Plugins Manager下载JSON/YAML Plugins (deprecated)

4、jmeter会自动重启,再次导入脚本就OK啦~

四:使用第三方软件badboy录制 
  1.  介绍

一款免费的Web自动化测试工具,是用C++开发的动态应用测试工具。

其拥有强大的屏幕录制和回放功能,提供图形结果分析功能,刚好弥补了JMeter的不足之处,所以在做Web测试时,使用这两个工具将是最佳组合。

同时Badboy提供了录制好的Web测试脚本,可直接导出生成JMeter支持的.jmx格式的脚本。

PS:

必须等到上一步的request处理完毕后,才能点击发送下一个request,否则下一个request会作为第一个request的子frame.

  1. 安装

1)Badboy官网:Badboy - Download(已无法访问)

   badboy安装包:链接: https://pan.baidu.com/s/1Ae3tLuP3q7301SzyXDGw2A 提取码: jcg5

2) 下载后傻瓜式安装;

3) 点击安装好的badboy的图标,你将看到Badboy的IDE界面,下图是对界面进行的简单注解,其中包括Badboy官网的一个介绍截图

4) 这个是对其进行的一个详细的介绍,如下图所示:

3. 操作步骤:

a、打开badboy软件,默认打开是Recording状态,即录制状态,如果要停止录制点击工具栏红色圆圈按钮;

b、在地址栏输入被测项目地址,按回车;

c、badboy就开始录制了,录制好之后保存:File--》Export to Jmeter..

d、启动JMeter,文件--》打开,导入脚本;

e、检查每一个HTTP请求;

1.1.1、在badboy录制中添加断言

如:  在搜索出来的结果页面中选中搜索框内的文本,选择Tools--》Add Assertion for  Selection

1.1.2、回放通过 

ps:

录制的时候总是提示"当前页面的脚本发生错误",解决方法如下: badboy工具栏—Preferences—Playing—勾选Javascript Error Dialogs

优缺点对比:

jmeter 代理录制:

  1、请求抓取过多   

  2、配置代理等操作比较繁琐

Badboy:

1、有时候录制不了,兼容性较差  

2、post请求的时候,如果链接中有参数、body里面也有参数,都会放在body里面

fiddler:

  1. 不需要手动设置浏览器代理;

  2. 方便、简单、效率;

  3. 不足:需要人工优化;

Blazemeter:

1、可以直接录制浏览器的操作,直接提取jmeter脚本;

2、导出脚本时可通过域名进行筛选;

3、会自动填充全局配置信息(http信息头抽取出环境变量)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值