ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-03-11 13:59:07  阅读:220  来源: 互联网

标签:变量 接口 access token 取样器 测试 ------ 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有