Web测试运行期间的URI错误无效

问题描述 投票:7回答:3

我创建了一个非常简单的webtest,它只有一个简单的URL请求:https://www.domain.com/

当我运行测试但是我失败了并且这条消息:

请求失败:URI无效:无法确定URI的格式。

但响应选项卡有适当的响应HTTP/1.1 200 OK与大量的HTML。这是Visual Studio中的一个错误或者某种东西,有没有办法确保它不会将正确的请求视为失败?

附:我也注意到请求需要10到15秒,即使RequestTime(视觉工作室显示)真的小于1。

visual-studio-2015 load-testing
3个回答
7
投票

大多数网页的HTML都需要下载其他文件的集合,例如图像,JSON,CSS,JavaScript等。这些是相关请求。 Visual Studio检查HTML以查找依赖请求集。它们都应该是有效的URL。提取这些依赖请求的Visual Studio代码比许多浏览器更不宽容。 Visual Studio要求它们是有效的URL。许多真正的浏览器都在努力应对糟糕的HTML,以便能够显示出合理的东西。

异常的原因可能是响应中格式错误的HTML。某些浏览器具有开发人员工具,可以描述下载的html中发现的错误。检查这些开发人员设施对页面上的错误的评价;可能值得尝试几个浏览器来获得页面的不同评估。

一个例子:格式错误的base tag可能导致您报告的异常。


查看Web测试执行日志以获取成功请求时,您将看到列出的相关请求。似乎Visual Studio“信任”这些请求形成有效的URL,即它们格式正确。您的测试的网址格式错误。如果您提供了格式正确的URL但没有资源,那么您将看到依赖请求并看到它出现404错误。这是一个边缘情况,你可能会争辩说Visual Studio应该以不同的方式报告它。

通过“web测试执行日志”,我指的是显示Web测试结果的方式。这是带有列标题的表格形式:请求+状态+总时间+请求时间+请求字节+响应字节。下面是标签显示所选项目的详细信息,标签标记为Web浏览器+请求+响应+上下文+详细信息。如果单击“请求”列左侧的小三角形,您将看到重定向和相关请求。 (请注意,在负载测试中运行的Web测试日志会省略相关的请求详细信息。)


3
投票

针对该特定呼叫将“Parse Dependent Requests”设置为False有助于。


0
投票

我设法在VS调试器中捕获无效的URI值:

  • 为webtest生成代码(使用工具栏按钮)
  • 将调试器设置为在抛出任何CLR异常时停止
  • 在错误请求之前添加断点
  • 在调试器下运行它(通过右键单击代码)
  • 当断点被击中时附加到QTDCAgent32.exe进程
  • 运行测试

系统会要求您提供一个您没有的源文件,但没关系。 Locals调试器窗口显示错误的URI。根据调试符号的可用性,您可能需要多次重新运行测试(直到加载所有符号)。

更新:

AdrianHHH是对的 - 问题在于“基础”标签。它看起来像这样:

 <base href='/foo/'>

在HTML4中它是非法的,但在HTML5中它是一个有效的结构。但VS2013 webtest引擎在这里失败了。

© www.soinside.com 2019 - 2024. All rights reserved.