前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jmeter性能测试 -2 熟悉Jmeter使用

Jmeter性能测试 -2 熟悉Jmeter使用

作者头像
孟船长
发布2022-02-23 16:50:30
1.9K0
发布2022-02-23 16:50:30
举报

做性能测试之前要对Jmeter有一定的了解,本文通过案例,帮大家快速上手Jmeter。如果你已经在用,那么可以忽略。

我用的是Jmeter 5.4.3版本

1、切换语言

打开Jmeter后默认英文,如果想切换成中文可以在

Options->Choose Language->Chinese(Simplified)设置成简体中文。

2、新建请求

首先,我们需要新建一个线程组

接下来的所有操作,都是在这个线程组下进行。

在线程组下新建请求以前,都需要新建三个元件:Cookie管理器,http默认请求、用户自定义变量。可能用不到,但是一般还是加上去。这三个元件都位于:配置元件的子目录下

说明:

HTTP Cookie管理器,一般用于存储、修改cookie

HTTP请求默认值,用于默认请求地址、端口、协议等

用户定义的变量,用于存储在测试过程中我们需要设置的变量

这里我们仍然使用微信公众号提供的接口进行演示

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html这是接口文档

我们在HTTP请求默认值里写入

说明:https请求端口号为443,http请求端口默认80

然后我们在取样器(Sampler)下新建http请求

然后把我们要填写的接口变量填入:

3、添加查看结果树

填写好以后,我们就可以执行先看一下效果了。可是执行(那个绿色的侧三角)以后,看不到结果。所以我们需要添加一个「查看结果树」的监听器来查看执行结果

点击执行,然后点击查看结果树元件,就可以看到执行结果了

4、添加断言

可以看到,我们上面演示通过了。这就是一个正向的接口测试用例完成了。

添加个断言

我们就断言响应是200,表示通过,其他断言可以选择响应文本,进行业务断言。我们这里只举个例子。

紧接着我们写第二个接口创建标签

接口文档地址: https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html

5、添加JSON提取器/正则表达式提取器

可以看到,他需要传一个access_token,而这个值正是我们上面接口的返回值。也就是说我们要把上面返回值提取出来,所以我们就要在获取access_token接口添加正则表达式提取器或Json提取器(二选一使用)他们都在「后置处理器」中,毕竟是发送完请求以后的处理

我们先用JSON提取器演示

在获取access_token接口下添加JSON提取器

根据接口返回结果

我们这样写JSON提取器

解释:.access_token表示绝对路径,即取返回值中第一层的access_token的值,如果写相对路径,就写两个点..access_token。

6、取样器

写好以后,发现也不能确定能不能取到值,我们就在线程组->取样器中添加调试取样器「Debug Sampler」

添加上就行,什么都不用管。

然后执行获取access_token 接口。在查看结果数中查看取样器取值结果

可以看到这个值我们已经取到了

第二种方法

正则表达式提取器

说明:把你要取的字段使用(.*?)替换,这样就能取到那段值了,关于为什么这样写,粗暴的说就是这样就能取到你就这么写就行了,委婉的说就是你可以去看一下正则表达式那部分知识。

然后回到创建标签接口,按文档写参数,利用${变量名}引用变量。上面我们定义的变量名是access_token,所以这里接口这样写

通过消息体数据进行传参。执行以后发现通过是通过了,可是中文字符显示的都是问号。解决方式就是在请求内容编码添加utf-8编码

如果还不行,就去修改Jmeter的bin文件夹下jmeter.properties文件内上sampleresult.default.encoding=utf-8

然后重启Jmeter,就好了。

编码好了,可是又有个问题,就是城市名不能重复。最简单的解决方法就是城市名后面加个变量,比如:赤峰999

7、函数助手

这时候就用到了函数助手

点击以后

这里除了用RandomString,也可以用Random,或者其他你想用的都可以

把复制到的函数粘贴到消息体数据中(注意一下,函数也在双引号里面)

再执行,就看每次都能通过了

8、BeanShell

最后还要说一下BeanShell的应用,这个很重要,只要是软件做不到的,都可以通过BeanShell通过脚本来实现。BeanShell在取样器、前置处理器、后置处理器、断言、定时器、监听器中都有。

8.1)打印

打开选项->日志查看

log.info("打印的内容")

System.out.println("这个在控制台打印")

8.2)获取变量

vars.get("变量名")

8.3)设置变量

vars.put("变量名", "变量值")

这个变量只能在当前线程组使用

这里设置的mytest这个变量在用例或其他地方是可以调用的。

8.4)props用于存储Jmeter的全局静态变量

这个变量可以跨线程组使用

props.get("变量名") props.put("变量名", "变量值")

比如

8.5)prev用于获取到前面一个取样器返回的信息

prev.getResponseCode()

8.6)ctx表示上下文

例如打印上下文所有变量ctx.getProperties()

结果:

9、连接数据库,并从数据库取值

在配置元件中选择JDBC Connection Configuration

然后填写,注意要往Jmeter的lib目录里放一个jar包,叫

mysql-connector-java-5.1.7-bin.jar

网上就能下载

配置好以后,新建JDBC Request

填写

当我们数据库连接并查询成功后,数据库里的用户名密码就是我们接下来测试用例需要写入的数据,我们就需要从数据库取出这个值。

于是我们在取样器中再次新建一个BeanShell取样器

然后把数据库第一行用户名这个值赋值给username变量

代码语言:javascript
复制
vars.put("username", vars.getObject("result").get(0).get("username"))

说明:

1)result为JDBC Request元件里设置的那个变量名

2)get(0)表示获取数据库第一行

3)get("username")是因为数据库用户表第一行有username这个键

--------------综上--------------

把上面的内容自己写一遍,至少不会对Jmeter陌生了吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档