一、接口工具的分类

  • 接口测试工具

✔     这类工具提供的功能相对比较简单,可以模拟和发送 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性能测试保姆级全套教程!

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐