三款性能测试工具kylinPET、LoadRunner、Jmeter在脚本录制与调试上的差异性
软件的性能测试活动离不开性能测试工具的支持。国外常用的性能测试工具有:loadRunner(商用),Jmeter(开源),国内做的比较好的国产性能工具有kylinPET。性能测试工具的录制和调试是能力的高低,是判断性能测试工具优劣重要指标。下面笔者通过实例来分析一下这三款知名本和调试上的差异点。
1、性能测试测试工具版本
性能测试工具名称 | 版本号 |
kylinPET | 7.1 |
LoadRunner | 2021 |
Jmeter | 5.1.1 |
2、三款性能测试工具的脚本录制差异点汇总
对象类别 |
kylinPET |
LoadRunner |
Jmeter |
说明 |
脚本类型 | 原生脚本 | 函数二次封装后的脚本 | 原生脚本 | |
特定参数关联JSESSIONID | 自动处理 | 自动处理 | 需要手动添加Cookie管理器 | |
特定参数关联 ticket |
自动处理 | 自动处理 | 需要手工关联 | |
一般参数关联 | 手工扫描并关联 | 手工扫描不到,需手工修改脚本代码关联 | 需要手工关联 | |
响应码判断 | 响应码和可以录制时的验证码对比,有差异即认为存在问题 | 响应码20X-599之间均认为正确。不与录制时的响应对比 | 响应码20X-599之间均认为正确。不与录制时的响应对比 | |
录制与回放对比 |
提供 回放结果可以与录制结果按请求条目进行左右对比 |
不提供, 提供两次回放日志的比较功能,但比较结果不明显示,详见下图 |
不提供,但可以看到每个请求的当前返回结果 |
3、差异点对比
3.1录制与回放对比
kylinPET的录制与回放的比较,可以明显示看到两次请求的响应差异
loadRunner提供两次回放日志的比较:从对比结果看,提供的不是原生http请求结果的结果比较,很难判断两次回放的http请求响应的差异
4、三款性能测试工具脚本录制与回放全过程
4.1、被测度对象URL
http://59.110.158.28/Example/登录接口
4.2、录制脚本
4.1kylinPET
步骤 1:启动"脚本编辑器"进行脚本录制
点击确认,开始加录制,如下所示:按提示输入密码和验证码
点点登录按钮进入加载页面
步骤 2:加载页面加载完成后,点击结束录制按钮,生成如下的脚本文件
步骤 3:点击回放按钮,回放脚本,如下所示,显示有很多的错误,表示回放不成功。
步骤 4:关闭弹出的对话框,再点击 “比较与关联” 按钮,弹出需要关联的对话框,然后点击 “关联所有” 按钮
步骤 5:再次点击 “回放” 按钮,提示回放成功,不再有红色字体
4.2LoadRunner录制
步骤 1:启动 Virtual User Generator,准备录制脚本(录制时建议启动 Fiddler 软件,只有这样脚本才能顺畅录制,该方法也是从其它网友学习的经验,如果不打开 Fidder 将会很慢或录制失败)
步骤 2:新建脚本
步骤 3:点击录制按钮,在弹出的对话框中输入需要录制的 URL 和使用的浏览器(这里选择 Chrome)
步骤 4:点击"开始录制” 按钮,进行录制,按提示输入密码和验证码
提交登录时,新建一个开始事务,加完毕后,结束事务。
最后录制生成的脚本如下所示:
Action()
{web_add_auto_header("Upgrade-Insecure-Requests", "1");web_url("Example", "URL=http://59.110.158.28/Example/", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t47.inf", "Mode=HTML", EXTRARES, "Url=images/button/btn_login.png", "Referer=http://59.110.158.28/Example/css/login.css", ENDITEM, "Url=../favicon.ico", ENDITEM, LAST);web_add_auto_header("Origin", "http://59.110.158.28");lr_start_transaction("1_transaction");web_submit_form("login", "Snapshot=t48.inf", ITEMDATA, "Name=name", "Value=admin", ENDITEM, "Name=password", "Value=admin", ENDITEM, "Name=validate", "Value=2362", ENDITEM, LAST);web_revert_auto_header("Upgrade-Insecure-Requests");web_add_auto_header("X-Requested-With", "XMLHttpRequest");web_submit_data("getNews", "Action=http://59.110.158.28/Example/getNews", "Method=POST", "RecContentType=text/plain", "Referer=http://59.110.158.28/Example/index.jsp?ticket=ST-1631004678659", "Snapshot=t49.inf", "Mode=HTML", ITEMDATA, "Name=times", "Value=5", ENDITEM, LAST);web_submit_data("getNews_2", "Action=http://59.110.158.28/Example/getNews", "Method=POST", "RecContentType=text/plain", "Referer=http://59.110.158.28/Example/index.jsp?ticket=ST-1631004678659", "Snapshot=t50.inf", "Mode=HTML", ITEMDATA, "Name=times", "Value=2", ENDITEM, LAST);web_submit_data("getNews_3", "Action=http://59.110.158.28/Example/getNews", "Method=POST", "RecContentType=text/plain", "Referer=http://59.110.158.28/Example/index.jsp?ticket=ST-1631004678659", "Snapshot=t51.inf", "Mode=HTML", ITEMDATA, "Name=times", "Value=4", ENDITEM, LAST);web_submit_data("getNews_4", "Action=http://59.110.158.28/Example/getNews", "Method=POST", "RecContentType=text/plain", "Referer=http://59.110.158.28/Example/index.jsp?ticket=ST-1631004678659", "Snapshot=t52.inf", "Mode=HTML", ITEMDATA, "Name=times", "Value=1", ENDITEM, LAST);web_submit_data("getNews_5", "Action=http://59.110.158.28/Example/getNews", "Method=POST", "RecContentType=text/plain", "Referer=http://59.110.158.28/Example/index.jsp?ticket=ST-1631004678659", "Snapshot=t53.inf", "Mode=HTML", ITEMDATA, "Name=times", "Value=3", ENDITEM, LAST);web_submit_data("getNews_6", "Action=http://59.110.158.28/Example/getNews", "Method=POST", "RecContentType=text/plain", "Referer=http://59.110.158.28/Example/index.jsp?ticket=ST-1631004678659", "Snapshot=t54.inf", "Mode=HTML", ITEMDATA, "Name=times", "Value=6", ENDITEM, LAST);lr_end_transaction("1_transaction",LR_AUTO);return 0;
}
步骤 6:脚本调试,从脚本调试结果全部通过(录制脚本笔者未做任何改动和关联)。
到此为止,如果你认为脚本调试通过,那后面的工作,一切都是白做。对 loadRunner 软件与 Jmeter 类似,如果 http 请求返回 20X-599 之间的响应码,他们都认为 http 返回是正确,这就造成在测试过程产生巨大的错误。
要命的是 LR 在回放过程看不到 http 请求的返回的详细信息,很难判断脚本是否真实通过。如果 LR 在回放时设置为 HTTP 代理模式,同时打开 Fiddler 工具来检查,也是一个行之有效的办法,或者可录制过程不断的添加检查点都是行之有效的办法。
回放过后,可以在 Fiddler 里面看到每个请求的返回结果。
步骤 6:参数关联
LR 毕竟是商业工具,对于验证码、JSESSIONID、ticket 三个需要关联的参数,其中 JSESSIONID 和 ticket 作了自动处理,无需要用户手工关联。
用户只需要手工关联验证码即可,同时对应的登录验证码值修改为{validateCode}变量
步骤 7:再次回放,回放后,再次查看 Fiddler 拦截的 http 请求,getNews 接口已经有了返回数据。
4.3 Jmeter脚本录制
步骤 1:如下图所示在 Jmeter 上创建一个线程组和一个察看结果树
线程数:表示运行时,启动的线程数,每个线程循环运行线程组内的http请求,每循环一次,相当于一个虚拟用户
循环次数:线程运行线程组内的HTTP请求的次数
Ramp-up时间(秒):启动指定线程数需要的时间。0表示 JMeter 将立即建立所有线程。
步骤 2:Jmeter 上创建一个 HTTP 代理服务器
目标控制器:指定脚本存放的位置
分组:
1)不对样本分组”:所有请求全部罗列
2)在组间添加分隔:加入一个虚拟的以分割线命名的动作,运行同“不对样本分组”,无实际意义
3)每个组放入一个新的控制器:执行时按控制器给输出结果
4)只存储每个组的第一个样本”:对于一次url请求,实际很多次http请求的情况,这个选项很好用,因为我们常常是不关心后面的那些请求的。
5)HTML文件中获取所有内含的资源:勾选表示HTML文件中获取所有内涵的资源。
步骤 3:设置浏览器为代理模式
注意:设置完要注意保存
步骤 4:启动 Jmeter 的代理服务器
启动后有一个录制控制台
步骤 5:打开浏览器输入要录制的 URL
登录页面
登录后的页面加载
录制后生成的脚本
步骤 6:脚本调试
在线程组下面添加察看结果树和聚合报告查看回放的情况。
脚本调试是性能测试过程非常重要的步骤之一,笔者径常遇到,很多测试人员,测试一周多都是白测试,因为脚本自认为调试成功了,而往往事实并没有调试成功。下面我们来调试一下本次录制的脚本。
运行脚本,执行结果如下,看起来是所有的请求都运行成功,如果你也是这样认为,那也一样掉进了坑里。
对于大部分的性能测试工具,如:LR,Jmeter 等,如果 http 响应如果返回响应码是 20X-30X 则认为是正常,如果返回 40X-599 就认为是失败的。
下图所示,请求响应:用户登录失败,在跳转失败页面....
进一步检测响应头信息:响应码是 200,Jmeter 调试结果当作请求返回成功。
下面的 81 /Example/getNews,返回显示未登录,但结果察看树显示请求也是正常,也是同样的原因(错误码返回 200)
通过上面例子看,脚本调试脚本是多么的困难了。结果树请求都通过,并不代表脚本调试成功。
那么有没有什么办法来证明脚本真正的成功的呢?有的,可以通过添加检查点或直接查看请求返回结果。
一般来说需要检查每个页面的关键信息,你也可以直接查看关键 http 请求的返回信息来验证。
针对本文本案例样本处理三个地方才能让脚本真正的调试通过:验证码、JSESSIONID、ticket
1)验证码:可以通过添加边界提取器完成
2)sessionid 的处理:可以添加 HTTP Cookie 管理器,让 Jmeter 自动处理
3)ticket:正则表达式提取器。因为 JSESSIONID 的值到行尾,无法使用边界提取器处理。
步骤 7:再次调试,如下图所示,请求可以正常返回数据了
三款性能测试工具kylinPET、LoadRunner、Jmeter在脚本录制与调试上的差异性相关推荐
- 性能测试工具kylinPET的国产化道路
一直以来人们从事性能测试,使用最多的是Jmeter和LoadRuner .笔者在网上找了一下国产性能测试工具,从中筛选出一款优秀的国产的性能测试工具kylinPET.查找该款工具的历史,好像有十年历史 ...
- 性能测试工具Locust和JMeter比较
pache JMeter™和Locust都是是最受欢迎的性能测试工具. JMeter和Locust - 简介 JMeter是久经考验的性能框架之一,其第一个版本大约在20年前发布. 它是用纯Java语 ...
- 三款开源工具让你的演示脱颖而出
本文转载至:http://blog.callmewhy.com/2014/07/02/three-open-source-tools-to-make-your-presentations-pop/ 不 ...
- 10款性能测试工具供参考
1.kylinTOP测试与监控平台(商用) kylinTOP测试与监控平台是一款B/S架构的跨平台的集性能测试 .自动化测试.业务监控于一体的测试平台,它是深圳是奇林软件有限公司旗下的一款产品,该工具 ...
- 【软件测试】性能测试工具基础-loadrunner12+jmeter
上期文章,我们讲了基于python的selenium,用于做自动化测试.今天就简单说一下性能测试方面的一些知识点. 文章目录 一.性能测试相关概念 二.loadrunner基本使用 1.创建工程 2. ...
- Wireshark, Sniffer and Omnipeek 三款网络分析工具的比较
一. 网络分析软件概述 自从网络出现以来,网络故障就没有停止过.如何快速.准确地定位故障和保持网络的稳定运行一直是人们追求的目标.为了分析网络故障的原因,一类专业的网络分析软件便产生了.网 ...
- Wireshark, Sniffer and Omnipeek 三款网络分析工具的比较
一. 网络分析软件概述 自从网络出现以来,网络故障就没有停止过.如何快速.准确地定位故障和保持网络的稳定运行一直是人们追求的目标.为了分析网络故障的原因,一类专业的网络分析软件便产生了.网络分析软件充 ...
- ominipeek 发包_wireshark,sniffer,omnipeek三款网络分析工具的比较(转载)
一.网络分析软件概述 自从网络出现以来,网络故障就没有停止过.如何快速.准确地定位故障和保持网络的稳定运行一直是人们追求的目标.为了分析网络故障的原因,一类专业的网络分析软件便产生了.网络分析软件充当 ...
- 收藏这里有脱口秀大佬常用的三款写作工具
看完<脱口秀大会4>,是不是有很多话想说?比如小佳的十几年的弯路,Rock的狗的中年,颜怡颜悦的夫妻之说,他们的段子为什么都那么的高级?还有很多人说,真是太好笑了,简直是压抑生活的快乐源泉 ...
最新文章
- Firefox v5 正式版
- Ubuntu9.10安装常用软件
- c语言主范式与编码,超详细!终于搞明白KMP算法
- 关于EXPORT_SYMBOL
- opc服务器组态文件已写保护_iscada电力组态监控源代码,电力组态版,只有opc驱动版本...
- 【LCT】旅游(P1505)
- php redis.h,swoole安装hredis支持导致php不能加载swoole扩展
- Spring学习总结(10)——Spring JMS---三种消息监听器
- 【NOI OpenJudge1789】算24(搜索)
- matlab运行C程序
- 漫画网站java_基于jsp的漫画网站-JavaEE实现漫画网站 - java项目源码
- win7连接远程服务器特别慢,win7远程桌面连接速度慢的问题如何解决
- 一块硬盘做服务器,服务器4块硬盘做raid几
- 如果能站在巨人的肩膀上
- matlab 绘制三维实体,matlab 三维绘制
- Matplotlib颜色对照表
- Knol of Fabio Maulo
- Q390GJE低合金高强度钢简介
- 7个等级 容灾等级_容灾备份的柒个国际标准等级(一)
- SQL Server安装提示【需要microsoft.NET Framework 3.5 Service Pack 1】