gpt4 book ai didi

c# - 如何使用 xml 在 MSTest 中创建参数化性能测试?

转载 作者:行者123 更新时间:2023-11-30 16:19:37 25 4
gpt4 key购买 nike

我需要使用 MSTest (LoadTests) 和 Visual Studio 2010 生成一些性能测试。我需要对 restful 服务进行测试并收集指标。

我创建了一个请求一个 URL 的集成测试(类似于 http://hostname/get/201212 或 ID 的任何东西)。后来我创建了一个负载测试并设法执行集成测试数千次并调查响应时间和服务器指标(CPU 负载、内存等)

现在我需要执行类似的场景,但每个测试都需要从给定的包含数千个的 XML 中读取不同的 ID。这个想法是不缓存任何东西。

到目前为止我尝试/想到了什么?

  1. “冒泡排序”解决方案是创建数千个测试,每个测试都有一个 ID。不可行
  2. 下一个方法是创建一个读取 xml 的测试,遍历它并发出请求。这种方法的问题是,我将结束一个需要几分钟才能运行的大型测试。
  3. 我有一个可能的解决方法,使用 [ClassInitialize] 从 XML 加载所有 ID,并使用 [TestInitialize] 在每次测试执行时更改全局变量...

我不确定最后一个选项是否最好。 MSTests 中是否有任何机制允许我使用从 XML 读取的不同 ID 执行 LoadTests?

最佳答案

我不喜欢回答我自己的问题,但我把它放在这里以供将来遇到同样问题的人引用。

为什么其他第三个选项是错误的

第三个选项的问题是,在具有 1000 个 ID 列表的 1000 次迭代的 LoadTest 中,LoadTest 使用第一个 ID 运行 1000 次 而不是 1000 次,每个 ID 都有一个.我使用某种 nosql 分析器来证明这一点。

使用以下解决方案,如果我的 Loadtest 有 1000 次迭代并且我的 csv 列表有 1000 个 ID,将执行 1000 个测试每个测试有一个 ID。如果碰巧您的 LoadTest 有更多迭代,比如 2000,那么在 LoadTest 1001 中将从 csv 列表的开头重新开始。

我的解决方案

注意:此解决方案使用 csv 文件。它可以很容易地适应使用另一个不同的数据源,如 xml、excel、SQL 服务器中的表等。

实现此目的的正确选择是创建具有数据源的测试 属性。例如,您创建一个 csv 文件,其中包含您要在测试中使用的 ID。我的 csv 文件示例:

ID
1003002-20121211120000
1004071-20121211120000

您需要在测试中添加一个DataContext:

private TestContext testContextInstance;
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}

最后,你的测试应该是这样的:

    [TestMethod,DeploymentItem("DataOrigin\\list.csv"), DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\list.csv", "list#csv", DataAccessMethod.Sequential)]
public void TestScenario_1_DATADRIVEN()
{
// PREPARATION
string ID = TestContext.DataRow["ID"].ToString();
string querystring = CreateQueryWithErrorDebug(ID);

// EXECUTION
string result = RunXCCQuery(querystring);

// ASSERTS
Assert.IsTrue(result.Length > 0);
Assert.IsTrue(result.Contains(ID));
}

DeploymentItem 属性复制 csv 文件。 DataSource 属性读取它并遍历它。

这一行是您的测试从 TestContext 读取的地方。

string ID = TestContext.DataRow["ID"].ToString();

CSV 文件中有 n 个 ID 将导致测试运行 n 次,每个 ID 一次。

我在调查中发现的一些有用链接:

关于c# - 如何使用 xml 在 MSTest 中创建参数化性能测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15066382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com