软件的性能测试活动离不开性能测试工具的支持。国外常用的性能测试工具有: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在脚本录制与调试上的差异性相关推荐

  1. 性能测试工具kylinPET的国产化道路

    一直以来人们从事性能测试,使用最多的是Jmeter和LoadRuner .笔者在网上找了一下国产性能测试工具,从中筛选出一款优秀的国产的性能测试工具kylinPET.查找该款工具的历史,好像有十年历史 ...

  2. 性能测试工具Locust和JMeter比较

    pache JMeter™和Locust都是是最受欢迎的性能测试工具. JMeter和Locust - 简介 JMeter是久经考验的性能框架之一,其第一个版本大约在20年前发布. 它是用纯Java语 ...

  3. 三款开源工具让你的演示脱颖而出

    本文转载至:http://blog.callmewhy.com/2014/07/02/three-open-source-tools-to-make-your-presentations-pop/ 不 ...

  4. 10款性能测试工具供参考

    1.kylinTOP测试与监控平台(商用) kylinTOP测试与监控平台是一款B/S架构的跨平台的集性能测试 .自动化测试.业务监控于一体的测试平台,它是深圳是奇林软件有限公司旗下的一款产品,该工具 ...

  5. 【软件测试】性能测试工具基础-loadrunner12+jmeter

    上期文章,我们讲了基于python的selenium,用于做自动化测试.今天就简单说一下性能测试方面的一些知识点. 文章目录 一.性能测试相关概念 二.loadrunner基本使用 1.创建工程 2. ...

  6. Wireshark, Sniffer and Omnipeek 三款网络分析工具的比较

    一.       网络分析软件概述 自从网络出现以来,网络故障就没有停止过.如何快速.准确地定位故障和保持网络的稳定运行一直是人们追求的目标.为了分析网络故障的原因,一类专业的网络分析软件便产生了.网 ...

  7. Wireshark, Sniffer and Omnipeek 三款网络分析工具的比较

    一. 网络分析软件概述 自从网络出现以来,网络故障就没有停止过.如何快速.准确地定位故障和保持网络的稳定运行一直是人们追求的目标.为了分析网络故障的原因,一类专业的网络分析软件便产生了.网络分析软件充 ...

  8. ominipeek 发包_wireshark,sniffer,omnipeek三款网络分析工具的比较(转载)

    一.网络分析软件概述 自从网络出现以来,网络故障就没有停止过.如何快速.准确地定位故障和保持网络的稳定运行一直是人们追求的目标.为了分析网络故障的原因,一类专业的网络分析软件便产生了.网络分析软件充当 ...

  9. 收藏这里有脱口秀大佬常用的三款写作工具

    看完<脱口秀大会4>,是不是有很多话想说?比如小佳的十几年的弯路,Rock的狗的中年,颜怡颜悦的夫妻之说,他们的段子为什么都那么的高级?还有很多人说,真是太好笑了,简直是压抑生活的快乐源泉 ...

最新文章

  1. Firefox v5 正式版
  2. Ubuntu9.10安装常用软件
  3. c语言主范式与编码,超详细!终于搞明白KMP算法
  4. 关于EXPORT_SYMBOL
  5. opc服务器组态文件已写保护_iscada电力组态监控源代码,电力组态版,只有opc驱动版本...
  6. 【LCT】旅游(P1505)
  7. php redis.h,swoole安装hredis支持导致php不能加载swoole扩展
  8. Spring学习总结(10)——Spring JMS---三种消息监听器
  9. 【NOI OpenJudge1789】算24(搜索)
  10. matlab运行C程序
  11. 漫画网站java_基于jsp的漫画网站-JavaEE实现漫画网站 - java项目源码
  12. win7连接远程服务器特别慢,win7远程桌面连接速度慢的问题如何解决
  13. 一块硬盘做服务器,服务器4块硬盘做raid几
  14. 如果能站在巨人的肩膀上
  15. matlab 绘制三维实体,matlab 三维绘制
  16. Matplotlib颜色对照表
  17. Knol of Fabio Maulo
  18. Q390GJE低合金高强度钢简介
  19. 7个等级 容灾等级_容灾备份的柒个国际标准等级(一)
  20. SQL Server安装提示【需要microsoft.NET Framework 3.5 Service Pack 1】

热门文章

  1. SolrJ更新索引数据
  2. 微软Windows11 21H2 22000.51 X64 官方正版ISO镜像系统
  3. 获取《使命召唤》模型及动画
  4. 基于C++实现的用于OpenAL的 .wav音频加载器
  5. 3dmax模型完美转glb模型,gltf格式模型转fbx格式转obj格式
  6. MyBatis-Plus学习总结
  7. Matlab颜色图相关
  8. Matlab如何更换主题颜色
  9. 手机整屏显示数据php,JavaScript实现移动端页面按手机屏幕分辨率自动缩放示例...
  10. bootscript部署到服务器后图标不显示