摘 要:本文的目的是对现有的一些典型Web测试方法与技术进行剖析。首先讨论了Web测试的必要性及其特殊性;接着针对Web应用特殊的体系结构,分析故障可能产生的位置;然后详细讨论了各种具体的测试技术;最后介绍了一些Web测试的常见工具。
关键词:Web测试;自动化测试;功能测试
引言
Web以其广泛性、交互性和易用性等特点迅速风靡世界,网页数量正以指数级飞速增长。能够吸引尽可能多的用户并对其长时间关注是网站追求的主要目标。也是衡量一个网站是否成功的主要指标,这就对网页功能的正确性、有效性和完善性提出了较高的要求,从而Web测试就成为Web应用开发过程中的一个重要环节。通过Web测试尽可能多地发现浏览器端和服务器端程序中的错误并及时加以修正,以保证Web应用的质量。
Web应用特点及其故障源分析
与传统软件相比,Web应用有很多独特的地方,其中对测试有影响的方面主要有以下几点:其一,Web应用的用户数量巨大,并要求能提供对Web资源的跨平台全局访问,需要有并发处理事务的能力,因而需要进行多用户的性能测试[1]。其二,使用环境不尽相同。硬件设备、网络连接、操作系统、中间件、服务端支持、浏览器等都有所不同,形成了异构、自治的工作环境。这就需要考虑兼容性测试。总之,Web具有分布、异构、并发和平台无关的特性,传统的测试方法己经不能完全胜任对Web的测试,需要一套独特的测试体系。
图1:Web应用体系结构图
Web应用的结构示意图如图1所示。由于Web应用具有多层体系结构,各层之间的依赖关系又非常复杂,使得在每层内以及各层间都有可能发生故障。在客户机端,由于浏览器的型号、版本有很大的不同,以及对应的显示技术各不相同,使得有些信息往往不能正常地显示,从而产生兼容性问题以及显示故障;在服务器端,服务器、数据库的负载能力有限,在用户访问达到高峰时,响应时间太长甚至不接受用户的访问;并发用户的行为会影响到与站点交互的情况,用户之间也可能相互干扰。
总之,由于诸多问题的存在,必须做功能测试、负载和强度测试、浏览器兼容性测试以及安全性测试等,各种基本的测试技术将在下部分详述。
Web测试的基本技术
1 功能测试
功能测试就是结合规格说明的要求,保证功能上正确无误。根据测试要求的难易程度的不同,功能测试可分为:简单功能测试、任务特征测试、边界测试、强制错误情况测试、探测性测试等,以确保不同层次上的网站或网络应用程序运行的质量。简单功能测试主要做一些链接可达性的检查工作。任务特征测试是根据任务的交互性、不确定性等不同特征,进行有针对性的测试。边界测试是在输入数据域的边界抽取数据进行测试。强制错误情况测试是根据设计时的规格说明,人为输入明显错误的数据,然后观测系统的运行情况,主要测试系统的容错性。探测性测试就是边设计边执行测试,试探性地前进几步并及时调整。
2 负载测试
负载测试主要是确定在用户可接受的响应时问内,系统能够承担的并发用户的数量。由于成千上万的用户可能在同一时刻访问一个网站,为了保证系统的正常运行,必须测试在最重的工作负载下网站的运行情况。
可以通过脚本来生成成千上万的“虚拟用户”,同时访问站点并与站点交互。这些虚拟用户执行各种典型的任务,如浏览网页、购买商品、搜索数据库等。在虚拟用户执行这些任务的同时,记录下服务器的响应时间。当测试执行完成以后,分析通过负载测试得到的数据,如在不同交互情况下的网页传送所需时间、网页传送出错信息等。经过一定的分析、运算,得出网站能同时支持的用户数目、交互数目等,并尽可能找出多用户访问的瓶颈,最后以报告和图表的形式来显示测试情况下网站的执行情况以及潜在问题存在的地方。
3 浏览器兼容性测试
浏览器兼容性测试主要是在不同的浏览器环境下对Web应用的显示作测试,使得Web应用的功能能够正确运行于广泛的操作平台之上,保证某些代码(如Java Applets、JavaScript、CSS等)的功能在不同配置上都具有正确性。
浏览器有各种版本的Firefox、Internet Explorer、Maxthon等,可应用于Windows、Unix、Linux等平台,因而要在不同浏览器、操作系统的结合下进行网站测试。在不同的客户硬件配置、操作系统、浏览器类型和版本以及浏览器插件的组合使用情况下,观察浏览器显示的所有元素。检察浏览器命令,检验内容设置,确认浏览器安全设置,检查高级设置等。
4 安全性测试
对一个网站而言,安全性是至关重要的。尤其对网上交易、网上银行等来说,如果安全得不到保障,那么业务很难进行。通常的安全机制包括信息存取控制、用户身份校验以及对机密信息进行加密等,同时要能根据用户的访问情况判断出该用户是正常的用户还是蓄意的破坏者。因而,安全性测试所做的工作也是围绕这几方面进行的。对信息存取控制进行测试,采用的方法类似于功能测试,选择的测试用例应该能够反映不同的控制级别。对用户身份校验的方法有密码设置、数字签名等,相应的测试方法是在输人密码或数字签名后,看输出的结果正确与否。对加密信息进行测试,主要是看解密后的信息是否正确。另外还要检查其是否具有识别恶意访问者的功能。
5 回归测试
在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了新的模块。每当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,还需要补充新的测试用例来测试新的或被修改了的功能。为了验证修改的正确性及其影响就需要进行回归测试。
回归测试在软件生命周期中扮演着重要的角色,因忽视回归测试而造成严重后果的例子不计其数,导致阿里亚娜5型火箭发射失败的软件缺陷就是由于复用的代码没有经过充分的回归测试造成的。
在上述各种具体测试的过程当中,要完成这些任务,仅靠手工实现是难以想象的,必须要有工具的帮助。接下来我们就介绍一些Web自动化测试工具。
Web自动化测试工具的介绍与比较
目前国内比较流行的自动化测试工具多种多样,下表列出了一些有代表性的自动化测试工具。
Segue Software | Silk Test | 功能测试 | http://www.segue.com/products/index.asp |
Silk Performer | 性能测试 | ||
Silk Central Test Manager | 测试管理 | ||
Empirix | e-Tester | 功能测试 | http://www.empirix.com/Empirix/Web+Test+Monitoring/Testing+SolutionsIntegrated+Web+Testing.html |
e-Load | 性能测试 | ||
e-Monitor | 测试管理 | ||
Thought Works | Selenium | 功能测试 | http://selenium.thoughtworks.com/ |
Microsoft | Web Application Stress Tool | 性能测试 | http://www.microsoft.com/technet/archive/itsolutions/intranet/downloads/webtutor.mspx |