目录
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的安装目录: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] 举报,一经查实,本站将立刻删除。