C#使用WebTestRequest运行并发请求

马约维兹

使用Web Performance Test API编写编码的Web测试时。您可以编写同时发送请求(即并发请求)的测试,即与负载测试的一个用户同时发送请求,从而触发并发Web请求吗?

编辑:添加了额外的信息

我发现将请求添加到另一个请求的dependentRequest属性中意味着DependencyRequests是同时运行的。除了:为什么围绕此功能的Microsoft文档如此轻巧?

方案1:假设我有两个Web请求

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

    yield return request1;
    yield return request2;
}

上面按顺序运行,如果我想同时运行它们(request1和request2),是否必须添加第三个请求并按如下所示运行它,它可以工作,但想知道是否存在更清洁的方法(不创建第三个请求)吗?因为结果会受到添加不需要的请求的影响。

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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#使用WebTestRequest运行并发请求

来自分类Dev

C#并发请求奇怪的时间报告

来自分类Dev

C#并发-长期运行任务的首选方法

来自分类Dev

在C中使用管道运行并发进程

来自分类Dev

在C中使用管道运行并发进程

来自分类Dev

并发用户使用C#读取并更新到mysql

来自分类Dev

使用C#运行VBScript

来自分类Dev

C#并发列表访问

来自分类Dev

如何在C#中运行可变数量的并发参数化无限循环类型的线程?

来自分类Dev

C# MVC IIS 长时间运行的请求

来自分类Dev

使用Rx和SelectMany限制并发请求

来自分类Dev

使用REST API并发送POST请求

来自分类Dev

如何使用Lazy处理并发请求?

来自分类Dev

使用C#发送HTTP POST请求

来自分类Dev

在C#中使用JSON发布请求

来自分类Dev

在 C# 中使用 XML 请求

来自分类Dev

WCF超过50个并发长期运行请求

来自分类Dev

WCF超过50个并发的长期运行请求

来自分类Dev

使用C#运行SQL Server查询

来自分类Dev

使用C#无法运行Perl脚本

来自分类Dev

在C#中使用运行的CMD命令

来自分类Dev

使用 C# 表单运行 .exe

来自分类Dev

C#多线程并发算法

来自分类Dev

简单的C#并发/多线程

来自分类Dev

在C#中执行并发任务

来自分类Dev

MongoDb C# 并发问题与 upsert

来自分类Dev

使用锁定文件限制C#程序的并发用户数

来自分类Dev

多个并发阅读器,无需在C#中使用锁定

来自分类Dev

使用XElement检索Xml属性值并修改并发回c#