性能测试之利用jmeter开发脚本

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

前言

在这里咱不对比作者用过的或听说过的性能测试工具,因为通过百度就可以知道个大概。

本文主要是说jmeter,如何开发脚本、快速开发脚本、解决脚本的相关问题,总结其使用心得。

作者对jmeter算熟悉,尽管Loadrunner也同样的熟悉,但是目前从招聘JD中描述已知与它并驾齐驱。

一、JMeter介绍

本来已经粘贴好了一大段文字,但是我又删了,为什么呢?因为有些滥竽充数了,众所周知而已,

详细的介绍,作者推荐jmeter官网,具体可参考官网,它上面不仅有介绍及安装步骤,还有各种元件的操作手册,还有更多高级玩法介绍,问百度不如看官网。欢迎不懂就问!!!

1.1、安装过程略

需要下载jdk、jmeter安装包;一般jdk1.8起一直下一步会自动加入path环境变量<java -version>

若没有则手动添加path环境变量,jmeter是免安装,解压即可,如需cmd快速启动,配置path即可。

启动jmeter界面效果如下: image.png

1.2、如何使用

右键测试计划,创建线程组-->添加取样器-->添加后置处理器-->添加断言-->添加监听器-->ok完成!

tips:当然没有这么简单,注意:jmeter的元件是有执行顺序的,并不是元件位置至上而下执行。本文不介绍使用!

二、录制脚本

说起录制脚本,谁又能比得过Loadrunner呢?但是今日jmeter也不遑多让。

2.1、Badboy+jmeter录制

这个组合呢,很受初学者的欢迎,但是作者告诉你,它和浏览器多少会有些兼容问题,会出现让你录制失败而不得不放弃选择其他的方式开发脚本,到头来会得不偿失,建议放弃!!!

2.2、HTTP(S) Test Script Recorder[ (was: HTTP Proxy Server ) ]

名字很有意思,之前叫http代理服务器,通过设置代理将请求录制到线程组,现在叫测试脚本录制器。

第一步:右键先添加一个线程组(放置录制的脚本) image.png 第二步:右键添加非测试元件:HTTP(S) Test Script Recorder image.png 如下设置:port代理端口,需要在浏览器设置代理端口保持一致,https domains就是你要访问的地址 image.png 第三步:需要设置本地代理服务器,设置浏览器高级设置,端口与jmeter的代理端口保持一致; 第四步:点击启动,会出现弹窗,点击确定,会在jmeter/bin目录下生成证书,此证书是为录制https准备的, clipboard.png 如果需要录制https协议的脚本,则需要添加jmeter信任证书,点击直接安装即可 clipboard.png 第五步:点击启动,确定弹窗<每次都弹>,新版本已经可以添加事务了,即每次不同的业务场景可以命名事务 clipboard.png

可以看到每次不同的事务名称:index\login\view\replay\topic

第六步:则可以退出录制,点击绿色三角,开始回放脚本(这一步之后,一需要分析脚本;二完善脚本),毕竟回放不一定能成功,因为这里涉及参数关联(也可能是鉴权校验等限制)

那么录制脚本到这里就结束了吗?

很明显没有,作者有此一问,是要教各位高效的录制脚本过程,怎么做?

Jmeter为使用者提供了更高级的功能:快速创建测试计划模版:你可以点击文件或者点击工具栏第二个绿色书本icon,选择名字叫Recording的模版,一路创建即可。 image.png 它有几个好处:一是添加了很多默认元件,二是在线程组添加了录制控制器可以一键清除,三是默认设置了过滤器 image.png image.png

2.3、手写http协议的脚本(略)

这个没啥可说,一是通过抓包工具、二是接口文档;一步一个脚印,这是没有捷径可走的。

2.4、其他协议的脚本

要是遇到dubbo、soap、mq等协议的接口如何开发脚本呢?这里不详细说明,但是会给大家一个解决方案

  1. dubbo协议:两个方案,一是telnet这个命令,二是开发jmeter采样器插件。

第一种不能复用,用来调试就可以;

第二种有要求难度大,有幸,别人已经开发好了插件,所以是不用重复造轮子了,github下载地址

  1. soap协议:jmeter原来是有支持的,当然现在也支持,只是稍微变了点样子。

jmeter提供了创建模版,快速创建soap协议的测试脚本,不要去浪费时间想办法录制、手写啥的。

image.png 这里soap request只是名字,其实就是http sampler采样器,soap协议,我推荐soapUI,它完全是为soap制造的

  1. mq协议,是不是有些懵逼?

作者也懵,甚至有些项目都没用过mq这类框架。但是全完不妨碍有测试它的办法,github下载地址

三、总结

总结不一定是心得,也可以是在开发脚本过程中遇到的问题,并且有了解决办法,这个心得、甚至是经验很有价值

3.1、问题

手写脚本也好、录制脚本也罢,总归是完成脚本开发,回放或调试过程中没有问题,那是不可能的。

  1. 脚本请求成功了吗?
  2. 录制回放成功了吗?
  3. 都成功了,那么数据入库了吗?

jmeter请求sampler只是响应成功,并不代表业务成功。

3.2、jmeter脚本录制乱码

clipboard.png 一般情况是设置http sampler请求的编码格式
二是修改jmeter.properties配置文件sampler的编码格式
三是添加前置处理器指定编码格式

以上三类方法是用来解决响应乱码、post请求输入中文结果乱码;这是录制时入参就乱码了?

作者尝试了多种办法,结果一无所获,唯有跑去jmeter官网下载最新5.4.1版本,完美解决;

在录制元件有个编码方式,再说说新版的UI,看上去顺眼很多、比较细腻,感觉也很高大上。

image.png image.png

3.3、问题到这里就解决了吗?

不是,这里只是将脚本开发完,性能测试说的还是场景设计。最终脚本开发如下:

image.png

「欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章」。

猜你喜欢

转载自juejin.im/post/7016929152720699405