【发布时间】:2022-10-21 11:13:05
【问题描述】:
我目前正在尝试对允许使用 wrk 进行简单用户登录、注销和其他功能的 Web 应用程序进行压力测试,但我真的很难正确编写允许我将多个请求链接在一起的脚本。
例如,我想编写一个脚本,随机使传入线程执行以下操作之一:
1.
- 登录
- 注销
- 登录
- 做功能A
- 注销
- 登录
- 执行功能 B
- 注销
该应用程序使用基于表单的身份验证并维护会话。目前,我什至无法弄清楚如何对应用程序理解的 /login 路由进行正确的发布请求,以便 wrk 线程正确地将用户名和密码填写到应用程序中的表单中。该应用程序在浏览器中正常工作,但我一直坚持尝试在 wrk 脚本中进行这项工作。目前我已经尝试过类似的东西:
function request_0 ()
headers = {}
headers["Content-Type"] = "multipart/form-data"
local body = '{"username": "user0", "password": "pass0"}'
return wrk.format("POST", "/login", headers, body)
end
function request_1 ()
headers = {}
headers["Content-Type"] = "multipart/form-data"
local body = '{"username": "user1", "password": "pass1"}'
return wrk.format("POST", "/login", headers, body)
end
requests = {}
requests[0] = request_0
requests[1] = request_1
request = function()
return requests[math.random(0,1)]()
end
至少模拟多个可能的传入请求,但我的应用程序没有注册给定的用户名或密码。如果有人可以就请求的正确语法、如何将多个请求链接在一起以及如何处理身份验证提供帮助,我们将不胜感激。
【问题讨论】:
标签: performance rest http wrk