?Javascrīpt 重定向
使用 Javascrīpt 重定向(设置 window.location)的 Web
应用程序可能在执行中和记录中进行不同的响应,因为Web 测试引擎不运行脚本代码。
解决:插入该脚本重定向到的
URL,并从执行重定向的页将所需的提取规则移到新请求
?重定向到错误页
当出现服务器错误时,Web应用程序可能重定向到错误页,但并不返回一个HTTP
400或500级别响应代码。
错误原因:Web应用程序自身有问题,或者Web测试发出的请求有问题。 上图两次请求登陆页面
?在ASP.NET
1.0引入__VIEWSTATE隐藏窗体字段之前,Web应用程序就已经使用动态生成的窗体和查询字符串参数在页面间传递信息了。这些动态参数在Web测试中需要特殊考虑,因为每次Web测试运行时,它们都可能更改。具有硬编码参数值的Web测试在记录后不可能长时间工作,甚至根本无法工作。
?Web测试使用提取规则和上下文绑定启用具有动态参数的测试。提取规则位于包含动态值的页面请求中。当提取规则运行时,它使用诸如“myparam”这样的可配置名将动态值提取到Web测试上下文中。然后,后续请求包含一个具有值{{myparam}}的查询字符串或窗体参数。当Web测试运行时,Web测试上下文中的值替换为{{myparam}}。
提取规则的事件序列如下所示:
?Web测试引擎开始执行Request1。
?Request1发送到目标服务器。
?从目标服务器接收一个响应。
?针对Request1的提取规则在响应页上运行。
?提取规则在Web测试上下文中放置一个项。
?Web测试引擎开始执行Request2。
?查询字符串参数、窗体参数和Request2上其他任何上下文绑定的值从Web测试上下文替换。
?Request2发送到目标服务器。
?自动隐藏字段跟踪
?Web测试包含用于处理动态隐藏字段(例如,__VIEWSTATE)的特殊支持。当记录一个Web测试时,隐藏字段自动与窗体和查询字符串参数匹配。当发现匹配时,ExtractHiddenFields规则应用于生成隐藏字段源的请求。此时,上下文绑定应用于该请求的参数,从而利用隐藏字段。
?ExtractHiddenFields是一个特殊的提取规则,因为与将值提取到上下文的规则不同,它将页上的每个隐藏字段值提取到Web测试上下文。普通的提取规则使用ContextParameter属性确定用于上下文参数的名称,但是,ExtractHiddenFields使用该属性仅用于区分可能同时存在于上下文中的多组隐藏字段。例如,其ContextParameter设置为1的ExtractHiddenFields规则将提取__VIEWSTATE作为“$Hidden1.__VIEWSTATE”。
?修复__EVENTTARGET以及其他由Javascrīpt修改的隐藏窗体字段
?当隐藏字段由Javascrīpt在OnClick事件处理程序中修改时,可能会错误地应用自动隐藏字段绑定。这是Visual
Studio 2005发布版本中的一个已知的错误。
?对于ASP.NET站点,该问题通常在Web控件调用__doPostBack()
Javascrīpt方法设置如上所示的__EVENTTARGET隐藏字段时发生。自动隐藏字段绑定让窗体参数具有诸如{{$HIDDEN1.__EVENTTARGET}}这样的值,而不是实际值—btnNext。要更正该问题,必须将参数值设置为要在Javascrīpt中设置的值(例如,btnNext)。
3、辅助工具Fiddler 由于某些请求(例如,AJAX
请求和一些弹出窗口)不可能由 Web Test Recorder 进行记录 ,Eric Lawrence 编写了一个称为 Fiddler 的
工具。
Fiddler 用作代理服务器,可以截获所有 HTTP 通信量(仍不具有 SSL 支持,不过从2.0版本开始支持了),使用 Fiddler
可以更正一个无法用标准 Web Test Recorder 进行记录的 Web 测试。
http://www.fiddlertool.comhttp://www.fiddler2.com
2.0版本开始支持SSL
Fiddler使用说明
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/IETechCol/dnwebgen/IE_IntroFiddler.asp?frame=truehttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/IETechCol/dnwebgen/IE_Fiddler2.asp?frame=true从 Fiddler 保存 Web
测试
当 Web Test Recorder 丢失一些 AJAX、ActiveX
或弹出窗口请求时,一个选项用于使用 Fiddler 记录整个测试。Fiddler 可以将一系列捕获的请求保存为可以添加到 Visual Studio 2005
测试项目的 .webtest 文件。
当无法使用 Web
测试记录器记录大量请求时,该选项最为适用。该选项的主要限制是,Fiddler 创建的 Web 测试不使用自动隐藏字段跟踪(例如,针对
__VIEWSTATE),而且不筛选诸如图像、CSS 和 Javascrīpt 的依赖请求。
缺点:录制所有的信息,没有清晰的结构
将保存的WebTest文件加入到测试项目中,可以发现结构没有使用记录器录制的清晰
最后可以考虑使用录制的WebTest和使用Fidder录制后手动添加请求相结合的方式来完善WebTest
从
Fiddler 手动添加请求
对于丢失请求的另一个选项是:使用 Fiddler
确定需要将哪些请求手动添加到 Web 测试。当 Web Test Recorder
丢失少量请求时,该方法最适用,因为您仍然可以受益于诸如自动隐藏字段跟踪和依赖请求筛选这样的功能。
在本例中,最好同时使用 Fiddler 和 Web 测试记录器记录 Web
测试。这使您能够比较这两个记录来发现丢失的请求。如果明显丢失了一个请求(例如,如果您知道发生了一个 AJAX
请求),则在记录过程中插入一个注释也是很有帮助的。该注释作为手动创建请求的占位符。
注意:需要将任何所需的提取规则、用于参数值的上下文绑定以及 ThinkTime 添加到手动创建的请求。
4、使用编码的WebTest
可以通过生成编码的WebTest来编程调试解决问题,关于编码的WebTest在前面已经提到过,比如使用分支,循环等控制