C# 运行 使用 WebTestRequest 的并发请求
C# Running concurrent requests using WebTestRequest
使用 Web 性能测试编写编码的 Web 测试时 API。您能否编写同时发送请求的测试,即并发请求,即与负载测试的一个用户一起触发并发 Web 请求?
编辑:添加了额外信息
我发现将请求添加到另一个请求的 dependentRequest 属性 意味着 dependentRequests 是 运行 并发的。旁白:为什么有关此功能的 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:据我所知,依赖请求只是 "one deep" 我的意思是
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;
}
使用 Web 性能测试编写编码的 Web 测试时 API。您能否编写同时发送请求的测试,即并发请求,即与负载测试的一个用户一起触发并发 Web 请求?
编辑:添加了额外信息
我发现将请求添加到另一个请求的 dependentRequest 属性 意味着 dependentRequests 是 运行 并发的。旁白:为什么有关此功能的 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:据我所知,依赖请求只是 "one deep" 我的意思是
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;
}