C#使用WebTestRequest运行并发请求

时间:2015-02-27 15:24:47

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

使用Web Performance Test API编写编码Web测试时。您是否可以编写同时发送请求的测试,即并发的测试,即负载测试的一个用户,会触发并发Web请求?

编辑:添加额外信息

我发现向另一个请求的dependentRequest属性添加请求意味着并发地运行dependentRequests。旁白:为什么围绕这个功能的微软文档如此轻松?

场景1:我们说我有两个网络请求

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:从我所看到的,依赖请求只是&#34;一个深度&#34;我的意思是

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实现此目的?

1 个答案:

答案 0 :(得分:1)

根据我的经验。使用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;
}