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

Invalid URI error during web test run

我创建了一个非常简单的网络测试,它只有一个请求到一个简单的 URL,就像这样:https://www.domain.com/

当我 运行 测试失败时,我得到了这条消息:

Request failed: Invalid URI: The format of the URI could not be determined.

但是响应选项卡有正确的响应 HTTP/1.1 200 OK,其中有很多 HTML。这是 Visual Studio 中的错误还是其他什么,有没有办法确保它不会将正确的请求视为失败?

P.S。 我还注意到请求需要 10 - 15 秒,即使 RequestTime(visual studio 显示)实际上小于 1.

大多数网页的 HTML 需要下载其他文件 collection,例如图片、JSON、CSS、JavaScript等。这些是从属请求。 Visual Studio 检查 HTML 以查找依赖请求集。它们都应该是有效的 URLs。 Visual Studio 提取这些依赖请求的代码比许多浏览器更不宽容。 Visual Studio 要求它们是有效的 URL。许多真正的浏览器努力工作以应对糟糕的情况 HTML 以便可以显示一些合理的内容。

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

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


在查看成功请求的 Web 测试执行日志时,您会看到列出的相关请求。看起来 Visual Studio "trusts" 这些请求形成有效的 URLs,即它们的格式正确。您的测试格式错误 URL。如果您提供了格式正确的 URL 但没有资源,那么您会看到依赖请求并看到它出现 404 错误。这是一个边缘案例,您可能会争辩说 Visual Studio 应该以不同的方式报告。

"web test execution log" 我指的是网络测试结果的显示方式。那就是带有列标题的表格形式:Request + Status + Total time + Request time + Request bytes + Response bytes。下面是显示所选项目详细信息的选项卡,这些选项卡标记为 Web 浏览器 + 请求 + 响应 + 上下文 + 详细信息。如果单击 "Request" 列 left-hand 侧的小三角形,您将看到重定向和相关请求。 (请注意,负载测试中的 Web 测试日志 运行 会忽略依赖请求的详细信息。)

针对该特定调用将 "Parse Dependent Requests" 设置为 False 会有所帮助。

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

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

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

更新:

A​​drianHHH 是对的 - 问题出在 "base" 标签中。它看起来像这样:

 <base href='/foo/'>

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