在 webtest 中找不到依赖请求
Cannot find a dependent request in webtest
我在 VS2015 中用我的 webtest 记录器记录了一个测试。当我重新运行测试时,有一次它在 .css 文件的依赖 GET 请求中失败。 webtest 结果中的 url 显示类似 https://mycompany/blah/Style%20Guides/Global_CSS.css 错误是一个简单的 404 错误。
现在我转到主请求并搜索这个特定的从属请求,以便我可以将其 Parse_Dependent_Request 选项设置为 False 或将 Extected_Http_Status_Code 设置为 404,这对我来说很好。但是我无法在主请求或任何其他请求下找到这个特定的依赖请求。
我试图将所有依赖请求的所有 Parse_Dependent_Request 选项更改为 false 并了解哪个实际发送了 Get 请求,但是其中 none worked.I 做了一个从 webtest 生成代码并确实进行了页面搜索,但在 vain.Do 我如何获得请求?
许多相关请求 (DR) 在 Web 测试中并不明确。当主请求的 parse dependent requests
是 true
时,Visual Studio 处理该主请求的 HTML 响应以查找 DR,并将它们添加到 DR 列表中。任何 HTML 的 DR 响应也可以被解析并将它们的 DR 添加到列表中。
处理丢失或有问题的 DR 的一种技术是 运行 修改 DR 列表的插件。下面的代码基于 Codeplex "Visual Studio Performance Testing Quick Reference Guide"(3.6 版)第 189 页的 WebTestDependentFilter
。 Codeplex 文档还有很多关于网络和负载测试的其他有用信息。
public class WebTestDependentFilter : WebTestPlugin
{
public string FilterDependentRequestsThatStartWith { get; set; }
public string FilterDependentRequestsThatEndWith { get; set; }
public override void PostRequest(object sender, PostRequestEventArgs e)
{
WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
// Note, you can't modify the collection inside a foreach, hence the second collection
// requests to remove.
foreach (WebTestRequest r in e.Request.DependentRequests)
{
if (!string.IsNullOrEmpty(FilterDependentRequestsThatStartWith))
{
if (r.Url.StartsWith(FilterDependentRequestsThatStartWith))
{
depsToRemove.Add(r);
}
}
else if (!string.IsNullOrEmpty(FilterDependentRequestsThatEndWith))
{
if (r.Url.EndsWith(FilterDependentRequestsThatEndWith))
{
depsToRemove.Add(r);
}
}
}
foreach (WebTestRequest r in depsToRemove)
{
e.WebTest.AddCommentToResult(string.Format("Removing dependent: {0}", r.Url));
e.Request.DependentRequests.Remove(r);
}
}
}
上面代码中的搜索条件可以很容易地修改为(例如)检查 URL.
的中间部分
另一种变体是将某些 DR 的预期响应代码设置为其他值。这可能比删除失败的 DR 更准确地进行性能测试,因为仍然需要服务器来处理请求和 return 响应。
我在 VS2015 中用我的 webtest 记录器记录了一个测试。当我重新运行测试时,有一次它在 .css 文件的依赖 GET 请求中失败。 webtest 结果中的 url 显示类似 https://mycompany/blah/Style%20Guides/Global_CSS.css 错误是一个简单的 404 错误。 现在我转到主请求并搜索这个特定的从属请求,以便我可以将其 Parse_Dependent_Request 选项设置为 False 或将 Extected_Http_Status_Code 设置为 404,这对我来说很好。但是我无法在主请求或任何其他请求下找到这个特定的依赖请求。
我试图将所有依赖请求的所有 Parse_Dependent_Request 选项更改为 false 并了解哪个实际发送了 Get 请求,但是其中 none worked.I 做了一个从 webtest 生成代码并确实进行了页面搜索,但在 vain.Do 我如何获得请求?
许多相关请求 (DR) 在 Web 测试中并不明确。当主请求的 parse dependent requests
是 true
时,Visual Studio 处理该主请求的 HTML 响应以查找 DR,并将它们添加到 DR 列表中。任何 HTML 的 DR 响应也可以被解析并将它们的 DR 添加到列表中。
处理丢失或有问题的 DR 的一种技术是 运行 修改 DR 列表的插件。下面的代码基于 Codeplex "Visual Studio Performance Testing Quick Reference Guide"(3.6 版)第 189 页的 WebTestDependentFilter
。 Codeplex 文档还有很多关于网络和负载测试的其他有用信息。
public class WebTestDependentFilter : WebTestPlugin
{
public string FilterDependentRequestsThatStartWith { get; set; }
public string FilterDependentRequestsThatEndWith { get; set; }
public override void PostRequest(object sender, PostRequestEventArgs e)
{
WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
// Note, you can't modify the collection inside a foreach, hence the second collection
// requests to remove.
foreach (WebTestRequest r in e.Request.DependentRequests)
{
if (!string.IsNullOrEmpty(FilterDependentRequestsThatStartWith))
{
if (r.Url.StartsWith(FilterDependentRequestsThatStartWith))
{
depsToRemove.Add(r);
}
}
else if (!string.IsNullOrEmpty(FilterDependentRequestsThatEndWith))
{
if (r.Url.EndsWith(FilterDependentRequestsThatEndWith))
{
depsToRemove.Add(r);
}
}
}
foreach (WebTestRequest r in depsToRemove)
{
e.WebTest.AddCommentToResult(string.Format("Removing dependent: {0}", r.Url));
e.Request.DependentRequests.Remove(r);
}
}
}
上面代码中的搜索条件可以很容易地修改为(例如)检查 URL.
的中间部分另一种变体是将某些 DR 的预期响应代码设置为其他值。这可能比删除失败的 DR 更准确地进行性能测试,因为仍然需要服务器来处理请求和 return 响应。