其他分享
首页 > 其他分享> > Jmeter性能测试 ------ 熟悉Jmeter使用

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

作者:互联网

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

我用的是Jmeter 5.4.3版本

1、切换语言

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

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

2、新建请求

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

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

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

说明:

HTTPCookie管理器,一般用于存储、修改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变量

vars.put("username", vars.getObject("result").get(0).get("username"))

说明:

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

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

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

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

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

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!?¨è?é??¥????è?°

最后: 可以在公众号:程序员小濠! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:779450660里面有各种软件测试资源和技术讨论)

标签:变量,接口,access,token,取样器,测试,------,Jmeter
来源: https://blog.csdn.net/m0_67402564/article/details/123423242