当我们对潜在的技术有一个了解时,我们可以更好的大化测试效率-编写更多可重现的bug报告并且在较少的时间里发现更多的错误。说比做更加容易-特别是在web环境里。Web环境在错误倾向技术变量是密度高的。以下是测试Web应用程序的需要考虑的5个基本事项:

  1.当我们在客户端看到一个错误时,我们所看到的是错误的症状,而不是错误本身。

  2.错误可能是与环境相关的,并且可能不出现在不同的环境里

  3.错误可能是存在代码或是配置中的

  4.错误可能驻留在几个层中的任一个层中

  5.检查操作系统中的两个类别-静态vs动态-需要不同的方法。

  现在让我们来详细的看看这5个需要考虑的事项。

  1.什么是我们真正看到的东西?是一个错误还是一个症状?

  如果不诊断环境,我们不能够确定是什么导致了一个症状出现。如果客户端和服务器端的一个环境特定的变量被移除或被改变的话,我们或许将不能够重现问题。

  例如,我正在测试一个Web的缺陷跟踪应用程序,并且遍历创建一个bug报告的流程。当我选择"新建"按钮时,我接收到一个错误信息:MicrosoftOLEDBProviderforODBCDriverserror'80040e14'。在花了一些时间调查我的浏览器环境后,我发现JavaScript在浏览器的参数设置对话框中被禁止了。启用JavaScript消除了这个错误。(这个问题是否是个bug不在我们讨论的范围里)这里是要说如果我在bug报告中增加关于JavaScript的信息,我可以节约我们团队花费在分析这个问题的时间。此外,"禁用JavaScript"从此应该要添加到我的测试包中;它将被应用到应用程序的各个地方,以使所有潜在的相关问题不会出现。

  2.这个错误是环境依赖的吗?

  为了重现一个环境相关的错误,我们不得不完全地复制活动的准确顺序和应用程序操作所在环境的条件(操作系统,浏览器版本,插件的组件,数据库服务器,web服务器,第三方组件,服务器/客户端资源,网络带宽和通信量等等)。例如,当你试图使用一个28.8kbps的拨号连接登录到你的Web应用程序中,你会碰到一个由于在认证过程中因超时而导致的登录失败-但是同样的登录步骤如果你用一个1.54mbps的T-1连接将会成功的通过认证。在这个案例中,你有一个环境依赖的错误,这个依赖条件是在带宽中。

  环境无依赖的错误,用另一种话说,相对来说是容易重现的-它没有必要复制操作环境。环境无关的错误,需要复制所有都能够揭示错误的步骤。例如,如果公司的名称在所有产品在线页面上错误地拼写为WebTessting.Con,你总能看到这个错误-它是和硬件,软件和你操作环境中资源变量无关的。更为常见的是,我们将环境无关的错误称为功能特定的错误。

  3.是一个代码错误或是一个配置问题

  错误(或是假定错误的症状)可能会在代码修复中或系统重新配置(客户,服务器或网络)解决(假设错误是真实的)。不要太快的下结果它是一个bug。

  MicrosoftOLEDBProviderforODBCDriverserror'80004005'对比真正的软件错误,这是一个说明识别可能的配置问题挑战。它显示了由于Web应用程序"登录失败"而引起的一个错误信息。只是简单的查看这个错误信息,是不可能判断这个错误是由于软件bug引起的还是服务器端配置问题,或是兼容性问题,浏览器配置问题或以上所有的。

  在进一步分析这个失败以后,我发现几个可能的产生这个错误信息的条件:

  IIS(Webserver)virtualdirectoryhasnotbeensetupproperly当虚拟目录没有被正确的配置时,将找不到请求的文件,脚本或数据。这是一个典型的服务器配置的问题。然而,如果安装程序未能根据说明书一样配置web服务器,那么这是一个软件的错误。如果一个系统管理员未能根据说明书正确地配置web服务器,这个变成了用户错误。

  Applicationdirectoryhasnotbeenconfiguredproperlytoexecutescripts一个典型的应用服务器目录包含了需要执行的脚本,它们会被代表客户端的Web服务器调用。为了安全的原因,一个Web服务器可以被配置以允许或不允许脚本在一些目录里执行。如果你的应用服务器目录被设计来包含将要被执行的脚本-但是Web服务器被配置为在那个目录里禁用脚本执行-应用程序将不能工作。这是软件错误还是一个配置问题呢?

  DefaultWebpagehasnotbeensetupproperly这个问题和上面的问题相似

  SQLServerisnotrunning为了执行查询,存储过程和访问数据,应用服务器需要连接后台在SQL服务器上的数据库。如果SQL服务器进程没有运行,显然应用程序将不能工作。

  DLL/COMobjectsaremissingorwereunsuccessfullyregistered可能安装程序在安装过程中未能复制应用服务器要使用的所有DLL。如果遗漏了其中一个应用程序所需的DLL,应用程序将不可以工作。

  也可能安装程序正确的复制了所有需要的模块,但是失败的注册一个或多个DLL。例如OLE-Based的对象,例如COM或DCOM,它们的classID(CLSID)在它们可以被使用之前必须注册到注册表库中。如果一个应用程序试图访问一个没有被成功注册的COM对象,应用程序将不能工作。

  这个问题通常由安装过程中的错误引起来。另一方面,如果组件必须被手工注册地话,变成一个配置问题。

  Browser-sideJavaScriptsettinghasbeendisabled这是一个浏览器端的配置问题,由于应用程序要求浏览器启用JavaScript。这是一个软件错误,配置问题或是一个技术支持的问题呢?