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



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

当我运行测试时,虽然我得到了失败和这个消息:

请求失败:无效URI:URI的格式不能为决心

但是"响应"选项卡具有适当的响应HTTP/1.1 200 OK和大量HTML。这是Visual Studio中的一个错误吗?有没有办法确保它不会将正确的请求视为失败?

p.S。我还注意到请求大约需要10-15秒,尽管RequestTime(visualstudio显示的)实际上小于1。

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

出现异常的原因可能是响应中的HTML格式不正确。有些浏览器具有开发工具,可以描述在下载的html中发现的错误。查看这些开发工具对页面错误的描述;尝试几种浏览器以获得对页面的不同评估可能是值得的。

一个示例:格式错误的基本标记可能导致您报告的异常。


查看成功请求的web测试执行日志时,您将看到列出的从属请求。Visual Studio似乎"信任"这些请求形成有效的URL,即它们的格式正确。您的测试的URL格式不正确。如果您提供了一个格式正确的URL,但没有资源,那么您会看到从属请求,并看到它出现404错误。这是一个边缘案例,您可能会认为Visual Studio应该以不同的方式报告它。

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

将该特定调用的"解析依赖请求"设置为False会有所帮助。

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

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

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

更新:

AdrianHHH是对的——问题出在"基本"标签上。它看起来像这样:

<base href='/foo/'>

在HTML4中它是非法的,但在HTML5中它是一个有效的构造。但VS2013网络测试引擎在这里失败了。

最新更新