当前位置: 首页 > 知识库问答 >
问题:

随机开关未注入预期负载

越朗
2023-03-14

把这个问题发布在这里,因为我看到这个问题是几年前提出的,但没有得到回答。

我的印象是,randomSwitch用于指定要发送到特定请求或组的负载百分比(来自testSetup注入)。

我为随机开关编写的代码如下所示:

.randomSwitch().on(
        Choice.withWeight(40.0, exec(StudentLoginStartSubmitFlow)),
        Choice.withWeight(60.0, exec(doSomethingElse))
)

预期是正好有 40% 的初始负载 (10) 将命中学生登录启动提交流终结点。即 10 中的 40% = 4 个用户每次运行都会命中此内容。

结果波动较大。有时他们和预期的一样,有时则更低或更高。

随机开关是用于声明要注入的确切负载,还是用于指定将触发stuentLoginStartSubmitFlowendpoint的概率,从而导致结果波动。

如果后者是真的,有没有办法执行前者?

共有1个答案

公良玺
2023-03-14

顾名思义,randomSwitch是基于随机生成器的,因此您既不能期望可预测的分布,也不能期望完美的分布,尤其是在如此低的负载下。

如果您想要实现完美且可预测的分布,您必须使用< code>doSwitch块并传递您自己的算法,例如基于全局AtomicInteger增量计数器。

你可能会意识到,一旦你没有10个中的40%的简单案例,而是必须处理128个:)

如果你坚持简单的情况,使用模数可能对你有用。

 类似资料:
  • 我有一个包含三个命名的@resource成员的类,如下所示: 从1.8.5升级到Mockito 1.9.5后,测试开始失败。测试套件仅模拟了一次PaginationRequestValidator,如下所示: 这导致只有三个实例中的第三个被注入,如下sysout所示: 显然,两个版本之间的行为发生了变化。我假设旧版本将mock注入到所有三个字段中--这对我来说仍然是一个可以接受的解决方案。 作为一

  • 问题内容: 如果这样做,我遇到了Java 类问题: 这就是我得到的: 从我阅读的内容来看,应该只返回一个正数作为开始? 这可能有点牵强,但与在Windows 7 64位上运行64位计算机没有关系吗? 任何帮助都非常需要今天完成任务分配! 问题答案: 从Java文档中获得: 所有2 32个 可能的int值都是(近似)相等的概率产生的。 一种方法是使用以下转换: 之所以需要这样的原因(与使用绝对值或取

  • 如果我做:Math.random() * 4-2 这会让我得到一个范围(-2,2),2是排他性的吗?我认为这是正确的,但我很少得到正数(是的,我知道这是一个随机算法,我们必须无限随机地生成它才能感觉到,但我只是想确保) 新问题 如果我想要所有从-1到1的随机有理数,两个边界都包括在内,那么这条线是否有效:Math.random() * 2.00000000000000001 - 1; 我查了一下,

  • 我正在使用请求有效负载中的对象数组调用API,我在@Request estBody中添加了@有效注释以检查是否有任何空属性在我的有效负载中发送。我希望我正在发送的任何空数据都应该抛出错误。但我的代码没有抛出错误 下面是我的实体课 这是我的控制器类 验证依赖项 我的请求有效负载 当我发送上述有效负载时,我希望抛出一个错误,因为我没有发送不为null的性别,但spring没有抛出任何错误。 我是否错过

  • 这将起作用,并产生一个预期随机长度的列表-从1到120的值。但是,以下代码不是: 重复了一亿次,几次,保存的值最多是62个。 造成这种差异的原因是什么?

  • 问题内容: 如何使用MySQL在过去2周中使用随机日期更新列? 例如(代码实际上不起作用): 问题答案: 您可以使用以下表达式获得随机整数: 要获得i <= R <j范围内的随机整数R,请使用表达式 。例如,要获得7 <= R <12范围内的随机整数,可以使用以下语句: http://dev.mysql.com/doc/refman/5.1/en/mathematical- functions.h