JMeter 接口自动化测试

Apache JMeter 是一个用于性能测试的开源工具。它最初是为测试 Web 应用程序而设计的,但随后扩展到测试其他类型的应用程序,包括数据库服务器、FTP 服务器等。 使用版本:5.6.3 jdk环境:1.8 创建测试计划- 添加线程组 线程数:10 个线程就是模拟 10 个用户。 Ramp-

Apache JMeter 是一个用于性能测试的开源工具。它最初是为测试 Web 应用程序而设计的,但随后扩展到测试其他类型的应用程序,包括数据库服务器、FTP 服务器等。

使用版本:5.6.3

jdk环境:1.8

创建测试计划-

添加线程组

image-20240416112220436.png

  • 线程数:10 个线程就是模拟 10 个用户。
  • Ramp-Up 时间 (秒):线程准备时长。如果线程数为 10,准备时长为 10,那么需要 1秒钟启动 1 个线程。
  • 循环次数。如果线程数为 10,循环次数为 10,那么每个线程发送 10 次请求。总请求数为 10*10 = 100。如果勾选了“永远”,那么所有线程会一直发送请求,直到手动停止

添加http请求

image-20240416111518795.png

HTTP信息头管理器

image-20240416112129561

添加头信息:Content-Type:application/json

添加结果树-查看接口响应信息

image-20240416111645521

添加正则表达式提取器-提取响应数据

image-20240416111832672

如提取token的正则表达式 "Authorization":"(.*?)"

响应断言

image-20240416112016691

JSON断言

image-20240416112041980

上面的 JSON Path 指的是 JSON 路径表达式。表达式由一系列的属性名和数组索引组成:以 “$.” 开头,用“.”和“[]”分隔。例如,以下 JSON 响应:

{	
    "name": "John",
    "age": 30,
    "cars": [
        {
            "name": "Ford",
            "models": [
                "Fiesta",
                "Focus",
                "Mustang"
            ]
        },
        {
            "name": "BMW",
            "models": [
                "320",
                "X3",
                "X5"
            ]
        }
    ]
}

可以使用以下表达式获取相应的值:

  • $.name:获取 "John"。
  • $.cars[0].name:获取 "Ford"。
  • $.cars[1].models[2]:获取 "X5"

*其它测试工具

eTest: 一个开源的浏览器自动化测试工具

MeterSphere:基于Jmeter的测试平台 (开源版/付费版)

httprunner:开源的、跨平台的、支持多种编程语言的 API 自动化测试框架

基于httprunner的测试平台??

参考文章:JMeter 接口自动化测试的最佳实践 (建议收藏) - 知乎 (zhihu.com)

LICENSED UNDER CC BY-NC-SA 4.0
Comment