如何为 Visual Studio 云测试的每个核心代理使用不同的 .csv?

How to use different .csv for each core agent for Visual Studio Cloud Testing?

我正在尝试使用 Visual Studio 云测试执行简单的 REST API 负载测试:https://www.visualstudio.com/en-us/docs/test/performance-testing/getting-started/getting-started-with-performance-testing

请求包含授权令牌,我使用预先生成的 .csv 数据源来提供它们。这是描述:https://msdn.microsoft.com/library/ms243142.aspx

当 运行 从本地机器进行测试时,一切正常,但是当我从云开始测试时,97% 的测试都失败了。

因为我的服务有并发检查 - 一个令牌只能用于发出一个请求。测试似乎是 运行来自云中的 20 台代理计算机,它们都使用相同的 .csv 数据源。

我想知道是否有一种方法可以让每个云代理分散不同的数据源?

根据您的评论,unique 的数据源访问方法不能用于 VSTS CLOUD 负载测试。

一种可能:你生成的token可以包含代理号(AgentID)吗?如果是,那么您可能会使用包含基于以下代码的插件:

string tokenFromCSV = e.WebTest.Context["DataSource1.file#csv.token"].ToString();
string agentId = e.WebTest.Context["AgentId"].ToString();
if(agentId.Length==1) agentId = "0" + agentId;
string tokenToUse = tokenFromCSV + agentId;
e.WebTest.Context["tokenToUse"] = tokenToUse;

然后在当前使用CSV文件中的token的地方,使用新写的context参数tokenToUse。还有许多其他方法可以将 agent-id 合并到令牌值中。

另一种可能。如果使用的代理从不超过 20 个(或其他一些不太大的数量),则生成一个包含 20 列标记值的 CSV。让列名称包含代理编号,然后让每个代理仅使用其列中的值。这可能需要一个插件来访问正确的列并将值存储到上下文参数中。

另一种可能。如果CSV中的行数可以比测试中的虚拟用户数大几倍。我想至少是 10 倍,但比例越大越好。将 CSV 访问方法设置为 Random。然后,测试应该主要是 运行 并且标记一次只能由一个测试使用。会有一些双重用途,因此会出现测试失败,但您的客户可能会接受这种程度的失败。