接口自动化测试之使用Jmeter测试接口
一、接口工具的分类
-
接口测试工具
✔ 这类工具提供的功能相对比较简单,可以模拟和发送 HTTP 请求,并显示返回接口数据,如 HttpRequester、Postman、Fiddler 等。
-
接口自动化测试工具
✔ 相比接口测试工具,功能更加强大,一般提供用例的批量执行、接口返回结果的断言以及测试报告的生成等,如 JMeter、Robot Framework、soapUI 等。
-
接口性能测试工具
✔ 主要用于测试接口的性能测试,验证接口处理并发的能力,如 JMeter、LoadRunner、 soapUI 等工具。
二、使用 Jmeter 测试接口
1.案例
-
测试获得城市天气情况的接口
✔ http://wthrcdn.etouch.cn/weather_mini?city=省或直辖市名
-
脚本规划
✔ 服务器名称或 IP:wthrcdn.etouch.cn
✔ 端口:80 或不填
✔ 方法:get
✔ 路径:/weather_mini
✔ Parameters
★ city:省或直辖市名
✔ 响应数据
★ “status”:1000,“desc”:“OK”
★ “status”:1002,“desc”:“invilad-citykey”
★ …
2.环境
-
Jre+Jmeter
✔ 复杂业务需要录制脚本
★ badboy
复杂业务自定义脚本
★ Eclipse
✔ 测试接口性能
★ 硬件资源监控
★ 可以配置负载机
3.编写脚本
-
在测试计划下添加线程组→添加 sampler→添加 HTTP 请求
✔ 服务器名称或 IP
★ 不要填 http://
✔ 端口号(默认80所以不用写)
✔ 协议
★ http
★ https
✔ 方法
★ get
★ post
✔ Content encoding
★ 内容的编码方式,默认值为 iso8859
★ 一般不在此修改,而是修改文件 jmeter\bin\jmeter.properties
■ 支持中文
● sampleresult.default.encoding=utf-8
✔ 路径
★ 目标 URL 路径(不包括服务器地址和端口)
★ 开头的/不能省略
✔ 自动重定向
★ 如果选中该选项,那么发送 HTTP 请求后得到的响应就是 302/301 时,JMeter自动重定向到新的页面。
✔ 跟随重定向
★ 沿用之前的 sessionid
✔ Use keep Alive
★ 当该选项被选中时,JMeter 和目标服务器之间使用 Keep-Alive 方式进行 HTTP 通信,默认选中。
✔ Use multipart/from-data for HTTP POST
★ 当发送 HTTP 的 POST 请求时,使用 Use multipart/from-data 方法发送,默认不选中。
✔ 同请求一起发送参数
★ 在请求中发送 URL 参数,对于带参数的 URL,JMeter 提供了一个简单的参数化方法。
★ 用户可以将 URL 中的所有参数都设置在该表格中,表格的每一行是一个参数值。
-
首先完成如上城市天气接口案例,需要保证电脑是联网状态,然后添加一个HTTP请求

-
配置HTTP请求

-
添加监听,执行脚本,查看取样器结果中返回的状态码为200

-
查看响应数据,成功返回查询成都的天气状况

-
从天气接口返回的响应数据来看很明显是JSON格式的数据,所以切换到JSON查看响应结果

-
使用另一种方式向接口传递数据,一般这种多数为POST请求的接口,但是get也可以使用

-
清空结果,重新运行,也是没有问题的

4.增强脚本
4.1 断言
-
添加响应断言

-
运行结果树,只要不报错表示断言是成功的,失败会显示HTTP请求为红色

-
还可以断言响应码以及响应消息


-
运行查看结果,全部通过

-
试错将响应码改为203,运行后,发现HTTP请求显示红色,则说明断言失败


4.2 正则表达式提取(关联)
-
本质是在响应中查找字符串
✔ 可以解决关联问题。
-
后置处理器→正则表达式提取器
✔ 获得省或直辖市的名称
★ ws.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince
■ 属于 B/S 形式,使用 SOAP 协议
■ 数据是 xml 形式
✔ 正则表达式
★ 匹配数字"-1"表示取所有项
-
注释掉天气接口请求,然后添加一个获取省或直辖市的接口请求

-
运行脚本,查看结果

-
添加正则表达式提取器,提取出响应数据中所有的省

-
添加一个Debug Sampler取样器,方便打印出正则匹配的结果,然后运行脚本,查看结果

-
现在分析以上正则提取出的数据,然后对数据进行分离,分离成一个一个的省份,可以看出每一个省都是sheng_数字=省份,那么一共提取出35个省份

-
添加一个循环控制器,不使用之前jmeter性能测试中使用的循环控制器,而使用ForEach控制器

-
为了打印出循环控制器中的变量pro的值,所以需要添加一个BeanShell Sampler取样器

-
运行结果是,查看结果,成功将省或直辖市数据分离出来

-
启用天气接口请求,将Debug Sampler及BeanShell Sampler打印禁用,然后将天气接口请求中的city参数的值修改为变量pro的值,最后需要将天气接口请求拖动到循环控制器的里面

-
清空结果,运行后,查看结果大多数省份都是查不到天气的,这是正常的,跟脚本没关系

-
为了查看哪些省或直辖市出错或者成功,所以在天气接口请求名称中添加pro变量

-
清空结果,重新运行,结果很明显

5.运行测试
-
接口测试
✔ 一般设置为 1 个“线程数”,根据测试数据的个数设定“循环次数”。
-
接口性能测试
✔ 修改线程数
这是我整理的《2024最新jmeter接口测试和jmeter接口自动化测试全套教程附带性能测试》,以及配套的接口文档/项目实战【网盘资源】,需要的朋友可以下方视频的置顶评论获取。肯定会给你带来帮助和方向。
b站最新最全的jmeter接口测试和jmeter接口自动化测试,jmeter性能测试保姆级全套教程!
更多推荐
所有评论(0)