使用 jmeter 进行 APP 接口测试经验总结
Posted 聚创吧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 jmeter 进行 APP 接口测试经验总结相关的知识,希望对你有一定的参考价值。
使用工具:
Fiddler、Jmeter
测试步骤:
1.确认接口
从开发人员那里获取接口文档,接口文档应该包括完整的功能接口、接口请求方式、接口请求 URL、接口请求参数、接口返回参数。
如果当前项目没有接口文档,则可以使用 fiddler 对 APP 进行抓包确认。
fiddler 对手机进行抓包的方法可以参考:http://blog.csdn.NET/whorus1/article/details/50673740
在手机上对 APP 进行操作,然后在 Fiddler 中可以抓取对应的网络交互信息(一个功能中可能设计多个接口的交互)。在抓取的信息中可以看到接口请求方式、接口请求 URL、接口请求参数、接口返回参数。
2. 在 Jmeter 中编写测试脚本
1. 在测试计划中添加一个线程组(在测试计划上右击,添加-Threads-线程组)。
可以将线程组的名称改成测试项目的名称。
在性能测试时可以通过配置线程属性中的参数来控制并发用户数:线程数:虚拟用户数,即并发数,一个线程表示一个虚拟用户;
Ramp-Up Period:所有线程启动的时间,单位 s。通过这个参数可以设置每个线程间的启动间隔,防止给电脑造成太大性能压力;
循环次数:测试循环的次数,如果勾选了“永远”,那么所有线程会一直发送请求,直到手动停止运行脚本;
2.在线程组中添加 HTTP 请求(在线程组上右击,添加-Sampler-HTTP 请求)。
协议中填入 HTTP 请求的协议,可以是 http 或 https,我们一般用的都是 http;
在方法中选择 HTTP 请求的方法,可用方法包括 GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE;(我们项目中的接口方法使用的主要是 GET 和 PUT,在目前易户网的项目中由于 APP 不直接和服务器交互,中间有一个统一接口平台,所以 GET 方法的接口请求也要使用 POST 进行交互。)
在路径中填入接口请求的 URL;
请求参数:如果是 GET 方法的请求,请求参数直接写在 URL 后面即可;如果是 POST 的方法,则需要在 Body Data 中填入包含请求参数的数据(Body Data 可以从 Fiddler 抓的包中获取,将 Fiddler 抓取的到数据包中 Inspectors-TextView 中的数据复制到 Body data 中即可);
3.在线程组中添加 HTTP 信息头管理器(在线程组上右击,添加-配置元件-HTTP 请求信息头管理器)。
配置如下:
4.添加监听器(在线程组上右击,添加-监听器-XXX)。
主要配置完成了,需要添加监听器以查看测试结果。一般我们使用查看结果树和聚合报告查看。
查看结果树:在结果树中会以树形结构展示每个接口请求的测试结果,包括取样器结果、请求、响应数据,在响应数据中可看到网络侧返回的数据,可以以接口文档中期望返回的参数做比较以判断返回是否正确。在结果树中通过颜色可以直观的看到接口测试的结果,绿色为通过,红色为失败。
聚合报告:从聚合报告中我们可以获取到比较多的信息,包括接口的响应时间、吞吐量、通过率等,在接口的性能测试中很有用。
表中参数的含义如下:
5.添加响应断言(添加-断言-响应断言)。
查看测试结果时我们会发现有时候网络侧返回数据不符合要求时 Jmeter 给出的结果仍是通过的。这时候我们需要通过断言来判断网络的返回数据是否符合要求。
比如,我们可以添加一个断言来检查返回信息中是否包含关键字“errMsg”来判断错误信息:首先添加一个相应断言,在要测试的响应字段中选择响应文本,在模式匹配规则中选择包括,勾选否,在要测试的模式中添加提一条,输入关键字“errMsg”;
意思是检查网络返回结果中不包含“errMsg”的才会判定为通过。
另外我们还可以从监听器中添加一个断言结果,在断言结果中可以查看断言的详细返回信息。
6.其他补充
使用 CSV Data Set Config 定义变量。
举个例子,我们想要测试多用户登陆时要怎么做?可以在线程属性中配置多个线程,但是这样只是同一个用户多次登录,多个不同的用户需要输入不同的用户名密码。当然我们可以写多个登录的 HTTP 请求,每个请求输入不同的参数,但是这样太傻了。
这个时候我们可以通过 CSV DataSet Config 来定义两个变量代表用户名和密码,然后传入不同的值即可实现多用户的登录:
1、我们在登录的 case 中添加一个 CSV DataSet Config(添加-配置元件-CSV Data Set Config)。
Filename:指定读取用户名和密码的文件,我们会将所有的用户名密码写到该文件中;FileEncoding::写入用户名密码的文件编码格式,不写的时候默认为 ANSI VaribleNames:定义文本文件中的变量名用户名=user 和密码=pwd,变量之间逗号分隔。
2、我们到上面 Filename 的路径下创建该文件并写入用户名密码,用户名和密码之间用逗号分开,不同用户名密码之间换行。
到 Jmeter 的脚本中将原本的用户名密码改为变量名,由于我们使用的是 Post 方法,所以到Body Data 中修改:
想要了解更多,参加自动化测试沙龙?
回复:测试资料 获取测试资料网盘链接
以上是关于使用 jmeter 进行 APP 接口测试经验总结的主要内容,如果未能解决你的问题,请参考以下文章