stress-testing - 使用打乱图像的 K6 压力测试
问题描述
语境
- 我正在构建要由 K6 工具加载和执行的 javascript 文件。
- 它将用于压力和尖峰测试。
- 我的 POST 请求将包含 1 个图像和 1 个 ID
- 我想在 7 个已知选项中使用随机图像
- 我想随机生成id
问题
我应该在哪里随机化将在请求中使用的图像和 de id?在“init context”还是“vu context”?
考虑“初始化上下文”的代码
let rand_id = getRandomInt(10000,99999)
let image = open("face"+getRandomInt(0,6)+".jpg","b")
export default function() {
group("post_request", function() {
http.post("https://my_api", {
"id": rand_id,
"image": http.file(image),
})
});
}
考虑“vu context”的代码
let images = []
for (i=0; i <= 6; i++) {
images.push(open("face"+i+".jpg","b"))
}
export default function() {
group("post_request", function() {
http.post("https://my_api", {
"id": getRandomInt(10000,99999),
"image": http.file(open(images[getRandomInt(0,6)],"b")),
})
});
}
解决方案
tl;dr 鉴于您希望它是随机的 - “vu context”
正如在k6 测试生命周期中所解释的,init 上下文在每个 VU 中执行一次(并且在测试开始之前至少再执行 1 次)。
这意味着如果您在初始化上下文中生成随机数,您将为不同 VU 的每次迭代获得相同的“随机”数。这仍然意味着不同的 VU 将具有不同的随机值,如果这对您的用例完全没问题,它们不会在迭代之间改变。
但我猜你想要的是在每次迭代中不断生成一个新的随机 id 并使用相应的 id 和图像。不过,这意味着您需要在 init 上下文中生成一组图像,因为open
vu 代码中不可用。所以而不是open(....getRandomInt...)
在你应该有的似曾相识代码中images[getRandomInt(0,6)]
。
此外,作为记录,每个 VU 都将获得图像的OWN副本,因此如果它们很大,或者您没有足够的内存来存储要使用的 VU 数量,这可能是内存问题。
推荐阅读
- python - 如何将这样格式的矩阵作为python3中的输入
- python - Pandas 中 2 个分类变量的条形图
- php - 这些 PHP 脚本有什么区别?
- python - 为什么不能从 python 3 中的列表中列出相同元素的列表?
- python - 从列的值创建新列 - Pandas
- python - 在 Python 中按共同日期加入时间序列(数据框和系列/列表问题)
- firebase - 似乎无法连接到 Firebase?
- reactjs - 包裹未加载 .scss 文件
- ruby-on-rails - 联网的 Ruby on Rails URL/地址?
- visual-studio-2015 - microsoft.sharepoint.client.dll 中发生了 system.net.webException 类型的未处理异常