微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2、接口工具jmeter

目录

1、接口工具jmeter

1.1、 接口测试工具介绍

在这里插入图片描述

提问:
1、APP 的压力稳定性测试能不能使用jmeter和loadrunner呢?

APP 的性能测试测哪方面,如果是测试服务器性能方面,那么jmeter和loadrunner是可以的,如果是APP 的客户端:流量 电量之类的可以使用小工具GT
测试服务器方面的 就可以使用jmeter和loadrunner,但是测试稳定性是测试APP 的稳定性,持续使用一段时间APP 会不会挂掉,那么就使用monkey(安卓)

1.2、Jmeter的基础使用详解

常用测试元件
测试计划:默认
线程组:并发用户数、并发时间、请求循环次数
采样器:较常用HTTP请求、JDBC Request、soap/webservice–本质上http
监听器:查看结果树
配置元件:http请求默认值、HTTP信息头管理器、JDBC Connection Configuration
断言:响应断言。通过对比服务器返回的响应数据,判断请求是否成功
参数化:用户定义的参数、CSV Data Set Config、函数参数化
关联:后置处理器:正则表达式、json表达式
http://test.lemonban.com/ningmengban/applregister/register.html
http://120.78.128.25:8766/futureloan/member/register

1.2.1、 jmeter切换为中文

第一种方式:
打开jmeter工具,选择菜单栏Options→Choose Language→Chinese (Simplified) 就可以将英文改为简体中文,如下图所示:

在这里插入图片描述

在这里插入图片描述

但是这种办法,重启jmeter之后就会失效。
第二种办法:可以一劳永逸解决切换中文的问题
打开jmeter的安装目录:bin目录下的jmeter.properties文件,打开进行编辑: language=zh_CN,取消掉#,保存文件,重新打开jmeter,界面显示就是中文了。如下图所示:

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

1.2.2、 Jmeter界面字体的修改

下载的jmeter在Windows10中打开菜单字体很小,使用放大功能后重新启动会恢复原来大小,下面是解决办法:
1.在jmeter.properties文件中设置如下:

在这里插入图片描述


jmeter.hidpi.mode=true
#HiDPI scale factor
#jmeter.hidpi.scale.factor=1.0
#Suggested value for HiDPI
jmeter.hidpi.scale.factor=2.5

在这里插入图片描述


jmeter.toolbar.icons.size=48x48
jmeter.tree.icons.size=32x32

在这里插入图片描述


jsyntaxtextarea.font.family=Hack
jsyntaxtextarea.font.size=40
2.第二种方法:
1)在jmeter.properties文件中将#jsyntaxtextarea.font.size=14改为jsyntaxtextarea.font.size=30
2)在jmeter.bat文件中增加如下代码
set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.controlFont=Dialog-25
set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.systemFont=Dialog-25
set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.userFont=SansSerif-25
set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.smallFont=SansSerif-25
然后重启jmeter即可
注:具体添加位置

在这里插入图片描述

1.2.3、线程组

右键点击【测试计划】→【添加】→【线程(用户)】→【线程组】,如图所示:

在这里插入图片描述


线程组界面如下:

在这里插入图片描述


线程属性:
线程数:其实就是常说的并发数,意思就是同时发送的数量,也可以理解为虚拟用户数
Ramp-Up时间(秒):线程数的启动时间
循环次数:线程组的下面的接口循环执行的次数,勾选永远就是一直循环,直到电脑崩掉。
注意:不要乱设置,比如线程数100000,时间:1秒,电脑肯定崩掉,与电脑的配置是相关联的。一般大并发都是采用分布式处理。

提问:
1、线程数:100 , Ramp-Up时间(秒): 1,是什么意思?如图所示:

在这里插入图片描述


答:一秒钟以内执行100次并发
2、线程数:100 , Ramp-Up时间(秒): 10,是什么意思?如图所示:

在这里插入图片描述


答:十秒钟以内100次并发
3、再问:10秒100次并发,是不是1秒钟10次并发?
答:不是,10秒钟 以内执行完100次就行,并不是平均的。

1.2.4、采样器

右键点击线程组→【添加】→【取样器】→【http请求】,如下图所示:

在这里插入图片描述


添加了HTTP请求,界面如下:

在这里插入图片描述


注意:

在这里插入图片描述

提问:
1、如果IP地址显示的是域名,如何处理?

其实域名是通过IP映射过来的,电脑里面是有DNS 服务的 ,是可以解析的,那么上图中的服务器名称或IP 就可以直接填写域名,端口号不用填写。

1.2.5、配置元件

1.2.5.1、HTTP信息头管理器

添加请求头信息:
添加请求头信息:右键点击【线程组】→【添加】→【配置元件】→【HTTP信息头管理器】

在这里插入图片描述


HTTP信息头界面如下:

在这里插入图片描述


上图中的请求头信息 是复制之后,然后点击剪贴板添加进去的。

1.2.5.2、HTTP请求默认值

添加请求参数信息:

在这里插入图片描述

1.2.5.3、JDBC请求

JDBC请求,其实就是操作数据库,什么情况下接口测试会操作数据库呢?
例如充值功能,充值接口的参数有member_id ,member_id是通过注册成功之后生成的,如果注册的接口不会返回ID ,那么充值接口就只能通过数据库去进行查询。
首先添加一个【线程组】:JDBC请求,然后右键点击该【线程组】→【添加】→【取样器】→【JDBC Request】

在这里插入图片描述


添加数据的连接配置:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


不同数据库的驱动选择以及URL 填写格式如下:

在这里插入图片描述


完成以上的步骤,进行运行,如下图所示:

在这里插入图片描述


添加数据驱动程序步骤如下图所示:

在这里插入图片描述


配置完成,在进行运行就会成功了,如下图所示:

在这里插入图片描述

1.2.6、监听器

添加监听器,【线程组】→【添加】→【监听器】→【察看结果树】,如下图所示:

在这里插入图片描述


添加完毕界面如下:

在这里插入图片描述


查看运行的结果:

在这里插入图片描述


在这里插入图片描述


响应结果???显示,因为中文及转义字符是需要进行编码的,所以可以在HTTP请求中设置内容编码,再次运行,就会现在正常了
如下图所示:

在这里插入图片描述


在这里插入图片描述


注意:发现响应结果有问题的时候,先一步分析请求头和请求体是否正确,如果请求头和请求体都没有问题,那么就是出现BUG 了

1.3、jmeter之关联

前言:一个线程下面能有多个接口吗?能

在这里插入图片描述


问题来了,那么注册了能够登陆,那么登陆成功,充值接口能够在同一个线程组下进行操作吗?充值接口会不会通?(不会,因为充值接口与登录接口的请求头不一样),如下图所示:

在这里插入图片描述


如何给充值接口请求头加上token呢?有2种办法,如下:
第一种办法:
在充值接口的下面添加“HTPP信息头管理”,把充值返回的token信息拿过来放在“HTPP信息头管理”里面。如下图所示:

在这里插入图片描述


这时候再次运行,充值就能成功。

在这里插入图片描述


以上的第一种办法不适用,token失效了就没办法进行充值了,所以第二种办法就完美解决了这个token失效的问题:关联

第二种办法:关联
**关联概念:**两个请求,上一个请求的响应结果,作为下一个请求的参数传入
**关联运用的场景:**下一个请求的参数值是变化的
关联方式
Jmeter中的关联是通过“添加—后置处理器”来获取数据,传给后面的请求使用。
① 正则表达式提取器
② json提取器
注意:后置处理器,放在请求的子级,数据一般从“查看结果树”的响应数据获取。

提问:
1、 什么叫做后置处理器?

当我的请求处理完之后再去处理。
2、 什么叫做前置处理器?
请求发起之前进行处理

1.3.1、关联第一种方式:json提取器

Json提取器,只能取json格式的数据,如果是xml格式的就不能使用json提取器。
充值接口取值的token 信息,肯定是登录之后才会产生,所以添加后置管理器在登录接口之后,添加方式:右键点击【HTTP请求默认值】→【添加】→【后置处理器】→【json提取器】。如下图所示:

在这里插入图片描述


Names of created variables:定义一个变量名,用这个变量来接收取到的值,而且变量名必须是唯一的,且用英文表示
JSON Path expressions:json的表达式
(备注:json的表达式如何取值?json是有层级关系的,有几层就看有几个括号{},以登录为例,如下图所示:

在这里插入图片描述


上图中,有三个{},表示一共有三层,第一层用“ ” 符 号 表 示 , 加 一 个 小 点 “ . ” + 层 级 名 字 表 示 下 一 层 。 举 例 : 找 到 上 图 中 的 t o k e n , 则 j s o n 表 达 式 为 : ”符号表示,加一个小点“.”+层级名字表示下一层。举例:找到上图中的token,则json表达式为: ”符号表示,加一个小点“.”+层级名字表示下一层。举例:找到上图中的token,则json表达式为:.data.tokne_info.token

Match No.(0 for Random):匹配数据,-1表示全部,0表示随机,1表示第一个,2表示第二个,以此类推
Default Values:匹配失败时的默认值,可以不写。
Json路径表达式连接:http://lemfix.com/topics/63

将json提取器中的变量名token传到充值接口下的HTTP信息头管理器中,如下图所示:

在这里插入图片描述


再次运行,看一下充值接口是否通了。

在这里插入图片描述

1.3.1、关联第二种方式:正则表达式提取器

添加方式:右键点击【HTTP请求默认值】→【添加】→【后置处理器】→【正则表达式提取器】,如下图所示:

在这里插入图片描述


在这里插入图片描述


正则表达式:
正则表达式概念:匹配内容的一个表达式。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

实践:如何取出登录接口返回的token信息?
根据正则表达式,找到token左右的边界值,如下图:

在这里插入图片描述


在这里插入图片描述

通过正则表达式提取token信息,如下图所示:

在这里插入图片描述


同样的,在充值接口下的HTTP信息头管理器中传入token

在这里插入图片描述


再次进行运行,查看充值是否成功。

在这里插入图片描述

1.4、jmeter之参数化

在这里插入图片描述

1.4.1、第一种方式:用户定义的变量

右键点击【线程组】→【添加】→【配置元件】→【用户定义的变量】,如下图所示:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


再次进行运行,查看运行结果

在这里插入图片描述

1.4.2、第二种方式:CSV Data Set Config

CSV 其实是一种文档的格式
新建一个csv格式的用户注册信息数据,如图所示:

在这里插入图片描述


打开jmeter,右键点击【线程组】→【添加】→【配置元件】→【CSV 数据文件设置】,如下图所示:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


设置线程组数量:

在这里插入图片描述


或者不改变线程数,线程数为1, 循环次数改为5:

在这里插入图片描述


再次运行,查看运行结果,五条数据,运行5次均运行成功,如下图所示:

在这里插入图片描述

1.4.3、第三种方式:函数助手中的Random函数

打开方式:菜单栏选择TOOLS →函数助手对话框,然后会弹框出来,选择功能:RandomString

在这里插入图片描述


函数参数中有三个参数:
Random string length:随机字符串的长度
Chars to use for random string generation:随机的内容
存储结果的变量名(可选)
举例 : 随机手机号码

在这里插入图片描述


Random string length:8
Chars to use for random string generation:0123456789
固定一个号码段:如131 后面只需要随机8位即可。

将函数复制在接口中: 号码段+函数,如下图所示:

在这里插入图片描述


线程组设置随机5次,再次运行,查看运行结果:

在这里插入图片描述

1.5、jmeter之断言

添加方式:右键点击【线程组】→【添加】→【断言】→【响应断言】:

在这里插入图片描述


断言是做结果的判断的,如果断言内容和响应结果一致,则断言成功,接口显示成功。如果断言内容和响应结果不一致,则断言失败,接口显示失败

在这里插入图片描述


注意:不要包含空格

在这里插入图片描述


总结:
1、 执行http和jdbc请求
2、 了解接口之间的关联,后置处理器(json提取器和正则表达式提取器)
3、 参数化的运用
① 用户定义的变量→适用于多个接口使用相同的数据
② csv文档参数化→适用于测试数据过多的情况
③ 随机函数→方便去执行大批量测试,同时不要求数据的正确性
4、 断言→做结果判断的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐