C# 使用 WebTestRequest 运行并发请求

标签 c# visual-studio-2012 testing load-testing coded-ui-tests

使用 Web 性能测试 API 编写编码的 Web 测试时。您能否编写同时发送请求(即并发请求)的测试,即使用负载测试的一个用户来触发并发 Web 请求?

编辑:添加额外信息

我发现将请求添加到另一个请求的 dependentRequest 属性意味着 dependentRequest 会同时运行。旁白:为什么有关此功能的微软文档如此简单?

场景 1:假设我有两个网络请求

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
    var request1 = new WebTestRequest("request1Uri");
    var request2 = new WebTestRequest("request2Uri");

    yield return request1;
    yield return request2;
}

上面的内容按顺序运行,如果我想同时运行它们(请求1和请求2),我必须添加第三个请求并像下面一样运行它,它可以工作,但想知道是否有更干净的(不创建第三个请求)方式?因为添加不需要的请求会影响结果。

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
    var request1 = new WebTestRequest("request1Uri");
    var request2 = new WebTestRequest("request2Uri");
    var request3 = new WebTestRequest("request3Uri");
    request3.DependentRequests.AddRange(new[] { request2, request1 });

    yield return request3;      
}

场景 2:据我所知,我的意思是依赖请求只是“一层”

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
    var request1 = new WebTestRequest("request1Uri");
    var request2 = new WebTestRequest("request2Uri");
    var request3 = new WebTestRequest("request3Uri");
    var request4 = new WebTestRequest("request4Uri");
    var request5 = new WebTestRequest("request5Uri");

    request3.DependentRequests.AddRange(new[] { request2, request1 });
    request5.DependentRequests.AddRange(new[] { request4, request3 });

    yield return request5;      
}

相同
public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
    var request1 = new WebTestRequest("request1Uri");
    var request2 = new WebTestRequest("request2Uri");
    var request3 = new WebTestRequest("request3Uri");
    var request4 = new WebTestRequest("request4Uri");
    var request5 = new WebTestRequest("request5Uri");

    request5.DependentRequests.AddRange(new[] { request2, request1, request4, request3 });

    yield return request5;      
}

如果我想要第一个示例(在场景 2 中)的预期行为,如何使用 webTest api 实现此目的?

最佳答案

根据我的经验。使用 WebTestRequest 的依赖请求属性是使用 Microsoft 的 Web 性能测试 API 并发发出请求的一种方法。

对于场景 1,我没有找到比问题中已有内容更好的内容。

对于场景 2,我做了类似于下面的事情,以足够接近我想要的行为

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
    var request1 = new WebTestRequest("request1Uri");
    var request2 = new WebTestRequest("request2Uri");
    var request3 = new WebTestRequest("request3Uri");
    var request4 = new WebTestRequest("request4Uri");
    var request5 = new WebTestRequest("request5Uri");
    var request6 = new WebTestRequest("request6Uri");

    request6.DependentRequests.AddRange(new[] { request2, request1 });
    request5.DependentRequests.AddRange(new[] { request4, request3 });

    yield return request5;      
    yield return request6;
}

关于C# 使用 WebTestRequest 运行并发请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768516/

相关文章:

c# - 记录哈希表属性

C++ 模拟框架 : 'Generic' vs 'Declarative'

c# - 升级到 EF6 破坏了 Azure 的通用提供程序 session 状态

c# - 如何解决 - 无法使用 Automapper 将 Generic.List 转换为 Linq.IQueryable?

C# - 来自动态对象的隐式构造函数

c - GTK+ C 编译错误 Visual Studio 2012

c# - 在 WPF 中访问 XAML 控件

c++ - 如何在 Visual Studio 中根据字符串比较设置条件断点?

testing - 如何在 TestNG 中将跳过的测试用例标记为失败?

c# - 如何测试C#传真程序?