如何根据某些比例执行代码?

时间:2018-05-07 11:45:19

标签: c# asp.net visual-studio performance

我知道标题可能不会给你一个清晰度。让我来解释一下

我在visual studio中有一个测试用例(负载测试)。要求是,它必须根据web.config文件中给出的分配访问不同的URL。

在web.config中我有一组值

<appSettings>
<add key="Allocation1" value="20"/>
<add key="Allocation2" value="80"/>
</appSettings>

在运行测试时,我想要访问第一个网址20%和第二个网址80%。意味着如果第一个网址选择了2次,那么接下来应该选择8次第二个网址。

任何人都可以得到一个线索,这是可以实现的吗?任何线索?

1 个答案:

答案 0 :(得分:1)

如果你有大量的迭代,我会根据随机值来实现它。基本上

  1. 生成一个随机数,比如0和100:

    var rnd = new Random();
    var number = rnd.Next(0, 100);
    
  2. 检查数字是否高于或低于第一个阈值

    if(number <= allocation1)
        [[call URL 1]];
    else
        [[call URL 2]];
    
  3. 如果您的迭代次数足够大,这将收敛到对URL 2的80/20调用分配。显然,如果您只是使用,比方说,10次迭代,这将不会非常准确。如果迭代次数如此之少,请使用跟踪URL 1和URL 2调用百分比的变量。如果百分比超过20%,则只调用第二个URL,直到百分比再次降至20%以下

    var percentage = callsToUrl1 / totalCalls;
    if(percentage > 0.2)
        [[call URL 2]];
    else
        [[use the normal random algorithm as above]];
    

    编辑: 超过两个百分比,请使用更多条件

    if(number <= allocation1)
        [[call URL 1]];
    else if(number <= allocation1 + allocation2)
        [[call URL 2]];
    else
        [[call URL 3]];
    

    依旧......