性能测试实战 30 讲
高楼
前 HP 高级性能专家,7DGroup 创始人
45941 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 37 讲
性能测试实战 30 讲
15
15
1.0x
00:00/00:00
登录|注册

07丨性能测试工具:如何录制脚本?

支持多种协议
关联功能
URL-based script
HTML-based script
生成脚本文件
转发客户端和服务器的交互协议包
通过代理服务器设置
生成脚本文件
截取并解析与服务器的交互协议包
第一个请求的重要性
代理录制的逻辑
录制功能并非必备
Port Mapping
常规录制
手工编写
录制
Grouping功能设置
SSL证书处理
Grouping
Target Controller
代理录制
本地录制
报告生成功能
场景功能
关联功能
参数化功能
录制或编写脚本功能
总结
LoadRunner中的录制功能
性能工具的脚本能力
JMeter的录制功能
录制功能
性能测试工具功能
性能测试工具录制脚本

该思维导图由 AI 生成,仅供参考

对于一个性能测试工具来说,如果能实现以下几大功能,那么就基本上就满足了性能测试工具的功能。
录制或编写脚本功能
参数化功能
关联功能
场景功能
报告生成功能
但是除此以外,在工作的细节上还有更多要求,就要看工具的实施能力了。
有很多性能测试工程师希望工具能做得非常全面,又人性化,而纵观当前的性能工具,真正能够做到傻瓜式录制完脚本,自动设置好参数化、关联、场景,直接产出结果的工具是没有的。不管是云性能测试平台,还是分布式性能测试工具(当然性能测试工具几乎全部具有分布式能力),都需要性能测试人员来定义参数化数据、设置关联、配置场景。
因此,在性能测试的过程中,对工具的配置就成为了性能测试工程师的基本能力。
今天,我们就来看下在性能测试工具中,如何录制脚本。今天的文章有些特殊,可能是专栏中少有的,有详细操作的文章。

性能工具的脚本能力

性能测试工具的脚本编写能力分为两类,一个是录制,另一个是手工编写。
现在市场上的性能测试工具虽然支持录制功能,但大部分也只是支持 HTTP 协议。在我们熟知的工具中,也只有 LoadRunner 支持更多协议的录制能力。不过幸好,现在我们所面对的应用大部分是 HTTP 协议的应用。
对手工编写脚本的部分,因为大部分都取决于业务场景,所以很难提出共性。如果有人提出针对性的场景,我们再做相应的示例就行。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了性能测试工具的脚本录制功能,包括本地录制和代理录制两种方式。本地录制通过截取并解析与服务器的交互协议包,生成脚本文件,而代理录制则是通过代理服务器设置,转发客户端和服务器的交互协议包,生成脚本文件。文章还提到了常见的两个性能测试工具LoadRunner和JMeter的录制方式,并通过实际示例展示了它们各自的特点和适用场景。值得注意的是,JMeter的录制功能通过代理方式实现,需要注意代理设置和HTTPS录制的配置;而LoadRunner的录制功能支持多种协议,但Vuser Generator仅支持Windows平台。此外,文章还介绍了LoadRunner的Port Mapping功能,支持多种协议的录制。总的来说,本文通过对性能测试工具的脚本录制功能进行详细介绍,帮助读者了解了性能测试工具的技术特点和操作逻辑,对性能测试工程师具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能测试实战 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(38)

  • 最新
  • 精选
  • zuozewei
    第一个问题:代理录制的逻辑是什么吗? 你也许听过这样一句至理名言:“计算机科学领域里的任何问题,都可以通过引入一个中间层来解决”。TCP/IP 协议栈是这样,而代理也是这样。 所谓的代理(Proxy)是 HTTP 协议中请求方和应答方中间的一个环节。既可以转发客户端的请求,也可以转发服务器的应答。 代理常见种类:匿名代理、透明代理、正向代理、反向代理. 代理可以做的事:负载均衡、内容缓存、安全防护、数据处理。 此处简单理解 JMeter 录制脚本则通过代理是通过转发数据包并拦截上下行的数据解析生成脚本,但录制出来的脚本都是原始的 http 请求,并没有经过适当的封装,所以录制功能比较弱。 第二个问题:当访问网页时,为什么第一个请求至关重要? 实际上,对浏览器来说,他们做的事情,就是把一个 URL 变成一个屏幕上显示的网页。这个过程是这样的: 1.浏览器首先使用 HTTP 协议或者 HTTPS 协议,向服务端请求页面; 2.把请求回来的 HTML 代码经过解析,构建成 DOM 树; 3.计算 DOM 树上的 CSS 属性; 4.最后根据 CSS 属性对元素逐个进行渲染,得到内存中的位图; 5.一个可选的步骤是对位图进行合成,这会极大地增加后续绘制的速度; 6.合成之后,再绘制到界面上。 简单理解浏览器的工作原理就很容易回答这个问题了,第一次请求后需要构建 Dom 树(内存中的数据结构),而这棵 DOM 树其实就是前端程序的业务状态。

    作者回复: 理解的非常细节了。 第一个请求是创建DOM树的,没有它,后面的请求都没有地方放了。

    2019-12-31
    41
  • 月亮和六便士
    上一篇与这一篇:姚明与郭敬明的差距

    作者回复: 哈哈,总要有基础的部分。 前面就有人说我为什么不讲点简单的。 后面我们再回到姚明好不好?

    2019-12-30
    2
    13
  • 王德发
    录制APP请求:Script Recorder界面先设置https domain,输入localhost,然后将证书推送到手机,adb push ApacheJMeterTemporaryRootCA.crt /sdcard,再选择从设备安装证书,安装完成后,选择手动代理,输如jmeter所在机器的ip和代理服务端口,启动,操作APP就可录制了。

    作者回复: 对。APP的都是这么干的。

    2020-01-09
    2
    8
  • LensAclrtn
    1. 代理录制的逻辑是什么? 不管是在本地代理还是远程代理, 都是通过代理的设置,在客户端和服务端之间插入一个中间件,中间件接手客户端的请求并转发到服务端. 说白了就是端口映射, 也就是老师文章里说的Port mapping 另外, 端口映射工作在传输层,重定向工作在应用层, 他们是两个东西 不知道我这么理解有没有问题? 2. 访问网页时,为什么第一个请求至关重要? 第一个请求如果都有问题,那后面就算有请求也没有再分析跟踪的必要来.

    作者回复: 两个问题理解的都没有问题。让我都无言以对了。

    2019-12-30
    6
  • 牺牲
    代理录制的逻辑,通俗讲客户端是用户,代理是服务员,服务端是后厨。请求是用户点菜对接服务员,服务员对接给后厨,也就是客户端的请求->代理->服务器;返回数据是后厨做好的菜品->服务员->用户。代理直接拿到请求内容,然后转发给服务端,服务端返回结果给代理,代理再转发给客户端。跟抓包工具的原理差不多。 第二个问题文章中写道:从 HTML 文件获取所有内含的资源和自动重定向将开启。也就是说,虽说只记录了一个 Sampler,但是资源也会下载,重定向也会开启。

    作者回复: 解释的很好。

    2020-06-16
    5
  • 童话
    在jmeter脚本录制之后会产生很多请求,在看某个业务响应时间不是非常直观,例如,打开首页—登陆—进入某个页面—输入信息—-提交,而只要看到提交响应的时间,但在查看聚合报告的响应会很多请求,对于是怎么处理的,是否能像loadrunner 只要看事物响应时间部分

    作者回复: 在properties文件中有这个参数jmeter.reportgenerator.exporter.html.show_controllers_only。去掉注释,改为true就可以生成没有请求只有事务的html了。 如果你想在执行过程中去掉这些内容而只显示定义的事务,可以选择事务控制器中的Generate parent sample。这样就只看到定义的事务了,而不会看到里面的每一个请求。

    2020-01-06
    3
  • helloworld
    jmeter怎么去压测rpc协议呢? 比如说dubbo通信。 通过 Http -> dubbo client -> dubbo server ? 请问老师这有啥好办法吗?

    作者回复: 这个在我的公众号上有具体的文章。

    2022-07-17归属地:北京
    3
    2
  • yjluo
    “设置左边界为:JSESSIONID=,左边界为冒号”loadrunner设置关联这里应该是写错了,右边界应该是分号

    作者回复: 嗯,是分号,联系我,收红包。

    2021-01-11
    2
  • 骆俊
    我有一个jmeter脚本,登录...查询...购物...支付,我需要把他们都加到事务里去吗?网上的资料我没见有加事务的。

    作者回复: 看你的测试目的是什么,要是看完整的业务链可以都加进去。但是这样不利于瓶颈定位。 我建议你加嵌套事务。单操作加,业务链也加。清楚一点。

    2020-03-21
    2
  • Geek_570c4c
    代理是是中间件,转发客户端和服务器的交互协议包,生成脚本文件。 第一个请求最重要,第一个请求是创建dom树的,没有第一个请求,后面就没了。

    作者回复: 理解的对。

    2020-01-07
    2
收起评论
显示
设置
留言
38
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部