【问题标题】:Visual Studio Load Test - Using Data Source with Multiple AgentsVisual Studio 负载测试 - 将数据源与多个代理一起使用
【发布时间】:2017-06-18 15:16:30
【问题描述】:

我正在使用 Visual Studio 2015 负载测试并运行已连接数据源的 Web 性能测试。数据源包含 250 个用户的用户登录信息。

在单个代理上按顺序运行它可以正常工作。但是,我正在尝试添加 10 个测试代理来分担负载。按照设计,负载测试将数据源复制到每个代理并运行测试。最终发生的是所有 10 个代理都使用数据源中的第 1 行用户开始测试。我希望可以将负载测试设置为在所有代理上按顺序运行(例如:代理 1 使用第 1 行,代理 2 使用第 2 行,代理 3 使用第 3 行等...)

我怀疑没有设置此选项的选项,但想知道是否有人遇到此问题并提供解决方法。我确实通过http://vsptqrg.codeplex.com找到了这个信息

多台机器作为一个钻机运行

顺序 - 这与您在一台机器上的工作方式相同。每个代理都会收到数据的完整副本,并且每个代理都从数据源中的第 1 行开始。然后每个代理将遍历数据源中的每一行并继续循环,直到负载测试完成。

随机 - 这也与在一台机器上运行测试相同。每个代理都会收到数据源的完整副本并随机选择行。

独特 - 这个工作方式略有不同。数据源中的每一行将被使用一次。因此,如果您有 3 个代理,则数据将分布在 3 个代理中,并且不会多次使用任何行。与一台机器一样,一旦使用了每一行,web 测试将停止执行。

【问题讨论】:

    标签: visual-studio performance-testing load-testing


    【解决方案1】:

    使用unique 设置最接近您想要的结果。但是,每个数据源行只会使用一次,然后测试将停止。对于包含 250 行的数据源,只会执行 250 次测试。当指定unique 时,我不知道数据源行到代理的确切分布。

    如果每个数据源行需要多个执行,那么另一种方法是每个代理有一个数据源列。使用 agent_id 选择列。使用sequential 数据源访问。一种变体是在数据源中仅包含一组数据,但将 agent_id 附加到数据源中的某些值。 This answer 对这些想法和一些代码有一些变化。


    另一种可能性是使用MoveDataTableCursor 方法为每个测试执行设置一个特定的行。这可以在WebTestPluginPreWebTest 方法中调用。该代码将使用上下文参数$AgentId$WebTestIteration。调用将基于以下内容:

    MoveDataTableCursor(..., ..., $AgentId * NumberOfAgents + $WebTestIteration);
    

    注意事项:

    • 上下文中$AgentId$WebTestIteration 的值是字符串,需要将它们转换为数字才能进行乘法和加法运算。
    • 还需要检查这两个值是从零开始还是从一开始。
    • MoveDataTableCursordocumentation 信息量不是很大

    【讨论】:

    • 感谢 AdrianHHH,我认为第二个选项可能对我有用。我会进行实验并报告。
    • 好吧,来看看每个代理都使用它自己的 $WebTestIteration :( 使用“随机”顺序对我来说可能是最好的选择。
    【解决方案2】:

    您可以拆分数据集/CSV 并分发给每个代理,即在您的情况下为“25 个数据集”/代理并执行测试。

    每个代理都可以使用自己的数据集/CSV。

    CSV 拆分:http://monchito.com/blog/autosplit-csv

    【讨论】:

    • 您能否解释一下,在 Visual Studio 负载测试中,如何为每个代理提供相同的“.webtest”文件但不同的 CSV。
    • 我假设在这个例子中我最终会得到 10 个 webtest,每个 webtest 都分配了自己的 CSV 文件。可以将 VS 负载测试配置为仅在一个代理上运行测试吗?
    • @bigspank 是的。为每个代理设置一个场景,根据需要设置场景的“要使用的代理”属性。
    • CSV 拆分步骤#1: split -l 200 example.csv 步骤#2: for i in *;做 mv "$i" "$i.csv";完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多