在蝗虫中处理多用户时,如何准确计数特定用户



背景

我试图使用蝗虫来测试一个web应用程序,它具有一些类型的用户角色,如admincommon user;我想运行测试并为不同的用户设置一个给定的计数,例如:{'admin': 1, 'common user': 50}

我的问题

  1. 蝗虫支持此功能吗
  2. 我阅读了文档和源代码示例,该示例使用阶段来设置不同阶段的用户计数
stages = [
{"duration": 60, "users": 10, "spawn_rate": 10, "user_classes": [WebsiteUserA]},
{"duration": 100, "users": 50, "spawn_rate": 10, "user_classes": [WebsiteUserA, WebsiteUserB]},
{"duration": 180, "users": 100, "spawn_rate": 10, "user_classes": [WebsiteUserA]},
{"duration": 220, "users": 30, "spawn_rate": 10},
{"duration": 230, "users": 10, "spawn_rate": 10},
{"duration": 240, "users": 1, "spawn_rate": 1},
]
def tick(self):
run_time = self.get_run_time()
for stage in self.stages:
if run_time < stage["duration"]:
# Not the smartest solution, TODO: find something better
try:
tick_data = (stage["users"], stage["spawn_rate"], stage["user_classes"])
except KeyError:
tick_data = (stage["users"], stage["spawn_rate"])
return tick_data
return None

它似乎可以确定哪种用户将在不同阶段运行,但它并没有显示我如何准确地确定网站用户A将有多少用户,以及其他有多少用户

  1. 有什么方法或插件可以满足我的要求吗?在这个例子中,我只想在第2阶段设置1个WebsiteUserA和50个WebsiteUserB
  2. 如果没有,有什么工具可以帮助我吗

您有几个选项。

  1. 如果您绝对只想要一组用户,请在管理员用户上设置fixed_count。从文档中:

如果值>0,weight属性将被忽略,并且将派生"fixed_count"实例。这些用户首先产生。如果总目标计数(由–users参数指定)不足以生成具有已定义属性的每个User类的所有实例,则每个User的最终计数是未定义的。

  1. 如果您不想要一组用户,并且只想确保您的管理员用户的负载大约比其他用户少50倍,请直接或在传入用户时将用户的weight属性设置为字典而不是列表:

{"duration": 100, "users": 50, "spawn_rate": 10, "user_classes": {WebsiteUserA: 1, WebsiteUserB: 50}}

关于前两个选项的更多信息,可以在文档中找到。

  1. 自己控制比例和用户生成决策。创建一个用户并创建自己的逻辑,以确定何时以及如何通过调用您想要的任何函数来以您想要的方式运行管理流。使用全局变量或各种其他方法来跟踪是否需要生成管理员用户。这可能非常强大,给你很多控制权,但在分布式模式下运行时可能有点困难

相关内容

最新更新