20230618 性能测试实战

课堂PPT

PPT地址

接口

修改编码格式 - encoding



修改语言 - language

添加HTTP请求

线程组


ramp-up:只包含请求发出去的时间,不包含请求返回结果的时间

断言

后置处理器- Json提取器

事务控制器

CSV

函数助手

静默压测

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

-n.:nongui
-t :testfile
-l: logfile
-e: 测试结束后的报告
-o :outputflolder 报告输出的文件地址

jmeter -n -t 压测脚本.jmx -l 不存在的文件名.jtl -e -o 为空的文件夹名 -J参数名1=参数值1  -J参数名2=参数值2

静默分析

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]


jmx file : /Users/gaigai/Desktop/http.jmx 

results file: http.jtl

Path to web report folder:不存在的或者是存在为空的文件夹  http1


jmeter -n -t /Users/gaigai/Desktop/http.jmx -l http.jtl -e -o http1


对/Users/gaigai/Desktop/http.jmx进行压测,压测结果存储在http.jtl,压测的html报告存在http1文件夹内


jmeter -n -t /Users/gaigai/Desktop/http.jmx -l http2.jtl -e -o http2 -JthreadNum=3



jmeter -n -t 压测脚本.jmx -l 不存在的文件名.jtl -e -o 为空的文件夹名 -J参数名1=参数值1  -J参数名2=参数值2


jmeter -n -t /Users/gaigai/Desktop/http.jmx -l http5.jtl -e -o http5 -JthreadNum=3  -Jloop=2

代码仓库

iJmeter-master.zip (2.0 MB)

JMX 文件

http.jmx.zip (3.6 KB)

CSV文件

users.csv.zip (607 字节)

python3 /root/iJmeter/application/orderservice.py

接口

登录

获取accesstoken是调用商城API接口的第一步,相当于创建了一个登录凭证,其它的业务API接口,都需要依赖于accesstoken来鉴权调用者身份。

请求方式: POST(HTTP

请求地址:https://81.70.96.121:9092/api/v1/user/login

请求包体:

{
  "authRequest": {
      "userName": "user01",
      "password": "pwd"
  }
}

参数说明

参数 是否必填 说明
userName 用户名,默认user01
password 密码,默认密码pwd

返回结果:

{
  "access_token": "3b6754f00bb0063071c5b71ce2b56b4ed0ce56a63493e785bea85b74c41ce200", 
  "code": "200", 
  "message": "login success"
}

备注:accesstoken 使用方法:在每个业务接口的headers中添加token键值对,键为“accesstoken”,值为具体的token值。

字段 备注
accesstoken 随机文本,例如“7172bbc7-f81a-4a78-9220-e55e3cfdf98c” 通过登录接口获取

浏览菜单

请求方式: GET(HTTP

请求地址:https://81.70.96.121:9092/api/v1/menu/list

返回结果:

{
  "breakfast": [
    {
      "menu_name": "小笼包", 
      "menu_nunber": "01", 
      "menu_price": 5.5
    }, 
    {
      "menu_name": "八宝粥", 
      "menu_nunber": "02", 
      "menu_price": 3.0
    }, 
    {
      "menu_name": "油条", 
      "menu_nunber": "03", 
      "menu_price": 1.5
    }, 
    {
      "menu_name": "茶叶蛋", 
      "menu_nunber": "04", 
      "menu_price": 1.0
    }, 
    {
      "menu_name": "豆包", 
      "menu_nunber": "05", 
      "menu_price": 1.5
    }, 
    {
      "menu_name": "烧饼", 
      "menu_nunber": "06", 
      "menu_price": 2.0
    }
  ], 
  "code": "200", 
  "dinner": [
    {
      "menu_name": "辣椒炒肉", 
      "menu_nunber": "13", 
      "menu_price": 21.0
    }, 
    {
      "menu_name": "豌豆肉片汤", 
      "menu_nunber": "14", 
      "menu_price": 15.0
    }, 
    {
      "menu_name": "原味五花肉卷", 
      "menu_nunber": "15", 
      "menu_price": 26.0
    }, 
    {
      "menu_name": "醋溜白菜", 
      "menu_nunber": "16", 
      "menu_price": 20.0
    }, 
    {
      "menu_name": "地三鲜", 
      "menu_nunber": "17", 
      "menu_price": 25.5
    }, 
    {
      "menu_name": "红烧排骨", 
      "menu_nunber": "18", 
      "menu_price": 39.0
    }
  ], 
  "lunch": [
    {
      "menu_name": "宫保鸡丁", 
      "menu_nunber": "07", 
      "menu_price": 17.0
    }, 
    {
      "menu_name": "锅包肉", 
      "menu_nunber": "08", 
      "menu_price": 25.0
    }, 
    {
      "menu_name": "糖醋排骨", 
      "menu_nunber": "09", 
      "menu_price": 35.0
    }, 
    {
      "menu_name": "蒜台炒肉片", 
      "menu_nunber": "10", 
      "menu_price": 30.0
    }, 
    {
      "menu_name": "酸辣土豆丝", 
      "menu_nunber": "11", 
      "menu_price": 25.5
    }, 
    {
      "menu_name": "红烧茄子", 
      "menu_nunber": "12", 
      "menu_price": 32.0
    }
  ]
}

订单确认

请求方式: POST(HTTP

请求地址:https://81.70.96.121:9092/api/v1/menu/confirm

请求包体:

{
    "order_list": [
        {
            "menu_nunber" : "01",
            "number" : 2
        },
        {
            "menu_nunber" : "03",
            "number" : 2
        },
        {
            "menu_nunber" : "04",
            "number" : 2
        },
        {
            "menu_nunber" : "05",
            "number" : 3
        }
    ]
}

参数说明

参数 是否必填 说明
menu_nunber 菜单编号,str
number 数量,int

返回结果:

{
  "code": "200", 
  "message": "Order success.", 
  "total": 9
}

用户注销

请求方式: DELETEHTTP

请求地址:https://81.70.96.121:9092/api/v1/user/logout

返回结果:

{
  "code": "200", 
  "message": "logout success"
}

请求default


请求头

请求

json 提取器

查看请求结果

查看提取的值

请求


json提取器

查看结果

查看断言结果

断言

登陆:


响应断言

提取acess_token

结果树



完整脚本:
iJmeter.zip (2.8 KB)




请求


header

BeanShell

查看结果

加token


浏览菜单

断言响应码为200

订单确认接口


断言message

用户注销接口

断言message

查看结果

老师,我这个报错能看下吗?

订单确认


验证确认成功

用户注销

验证注销成功

订单确认,请求结果


订单确认,json断言1

订单确认,json断言2

用户注销,请求结果


用户注销,json断言

用户注销,响应断言


老师,截图了,您看下

参数配置

运行命令
jmeter -n -t /Users/kevinwang/JMeter_temp/登 录接口.jmx -l result.jtl -e -o ./http1 -JthreadNum=10 -JloopNum=10

报告截图