对于一个性能测试工具来说,如果能实现以下几大功能,那么就基本上就满足了性能测试工具的功能
- 录制或编写脚本功能
- 参数化功能
- 关联功能
- 场景功能
- 报告生成功能
但是除此以外,在工作的细节上还有更多要求,就要看工具的实施能力了。
有很多性能测试工程师希望工具能做得非常全面,又人性化,而纵观当前的性能工具,真正能够做到傻瓜式录制完脚本,自动设置好参数化、关联、场景,直接产出结果的工具是没有的。不管是云性能测试平台,还是分布式性能测试工具(当然性能测试工具几乎全部具有分布式能力),都需要性能测试人员来定义参数化数据、设置关联、配置场景。
因此,在性能测试的过程中,对工具的配置就成为了性能测试工程师的基本能力。
今天,我们就来看下在性能测试工具中,如何录制脚本。今天的文章有些特殊,可能是专栏中少有的,有详细操作的文章。
性能工具的脚本能力
性能测试工具的脚本编写能力分为两类,一个是录制,另一个是手工编写。
现在市场上的性能测试工具虽然支持录制功能,但大部分也只是支持 HTTP 协议。在我们熟知的工具中,也只有 LoadRunner 支持更多协议的录制能力。不过幸好,现在我们所面对的应用大部分是 HTTP 协议的应用。
对手工编写脚本的部分,因为大部分都取决于业务场景,所以很难提出共性。如果有人提出针对性的场景,我们再做相应的示例就行。
因此今天的文章将着重讲一下测试工具的录制功能。很多人以为性能工具录制功能非常简单,点几下就能生成一个脚本,但是录制完之后,针对脚本的增强完善就做得非常少了。事实上,针对脚本,我们不仅要录制下来,还要了解录制的原理和录制完之后的脚本增强。不然,在场景中还是会遇到各种各样的问题。
性能工具中的录制功能
录制功能从原理上来说,分成两种:
- 本地录制:通过截取并解析与服务器的交互协议包,生成脚本文件。比如说 LoadRunner 调起 IE 的时候,不用修改 IE 的代理设置,就可以直接抓取 HTTP 包,并通过自己的解析器解析成脚本。
- 代理录制:通过代理服务器设置,转发客户端和服务器的交互协议包,生成脚本文件。JMeter 中的脚本录制功能就是这样做的。
这两者的不同点主要在于操作上。本地录制相对简单,但有些场景受限,比如说操作只能在某台服务器上,但是这台服务器又不允许安装工具;代理录制操作复杂一些,但可以满足更多的场景。
通过这张图,我们可以简单看到代理录制的逻辑:
- 我们在 IP 为 2.2.2.2 上的主机上,打开一个代理程序,开 81 端口,所有到 81 端口的都转发到 1.1.1.1 的 80 端口。
- 当 3.3.3.3 主机要访问 1.1.1.1 的的 80 端口,可以通过访问 2.2.2.2 的 81 端口进行转发。
这里需要你注意的是,代理是用来转发数据包的,并不是重定向哦。不管是在本机用代理,还是远程用代理,这个逻辑都是不会变的。
有了这个逻辑之后,你要明白的一点是,客户机不一定要和代理服务器在同一台机器上。
为什么要强调这一点呢?因为有很多人用工具来录制时,都不知道这个逻辑,只知道工具是那么操作的。这也是很多人不能理解 Port mapping 的原因。
不同的工具录制方式略有不同。今天我们用常见的两个性能测试工具 LoadRunner 和 JMeter 做为示例工具。
JMeter 的录制功能
谷歌浏览器:
1. 第一步:添加http代理服务器,在测试计划--》添加--》非测试元件--》http代理服务器
2. 第二步:添加线程组(这个线程组是用来放录制的脚本,不添加也可以,就直接放在代理服务器下)
测试计划--》添加--》线程--》线程组(顺便讲一下线程组执行顺序:setUp --线程组 --tearDown)
3. 第三步:选择录制脚本的存放位置,就选择我们第二步创建的线程组中。
4. 第四步:然后我们点击启动,其他项默认就好,其他选项后期会详细说明
5. 第五步:设置浏览器的代理,设置-网络设置 -选择手动配置代理,点击确定
6.第六步:火狐浏览器此时会提示风险弹框,我们选择高级--》接受风险并继续
7. 第七步