版权归原作者所有,如有侵权,请联系我们

[科普中国]-Web测试

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

web测试是软件测试的一部分,是针对web应用的一类测试。由于web应用与用户直接相关,又通常需要承受长时间的大量操作,因此web项目的功能和性能都必须经过可靠的验证。这就要经过web项目的全面测试。

简介随着网络技术的迅速发展,尤其是Web及其应用程序的普及,各类基于Web的应用程序以其方便、快速、易操作等特点不断成为软件开发的重点。Web以其广泛性、交互性和易用性等特点迅速风靡世界,网页数量正以几何数量级飞速增长。能够吸引尽可能多的用户并对其长时间关注是网站追求的主要目标,也是衡量一个网站是否成功的主要指标,这就对网页功能的正确性、有效性和完善性提出了较高的要求,从而测试就成为应用开发过程中的一个重要环节。

目前可以见到各种Web服务器平台,然而根据Mereur的研究报告,98%的Web服务器都没能达到人们所期望的性能,平均只能发挥人们所期望性能的1/6左右。Web性能测试能够确定影响Web服务器性能的关键因素,从而可以有针对性地进行分析和改进,避免Web服务器研究和优化过程中的盲目行为;同时,它也是选取不同的Web服务器的重要参考。

随着Web应用程序使用越来越广泛,针对其性能测试的要求也越来越多,然而由于Web程序综合了大量的新技术,诸如HTML,Java,JavaScript,VBScript等,同时它还依赖很多其他的因素,比如Link,Database,Network等,使得Web应用程序测试变得非常复杂1。

测试指标1.通用指标

通用指标是指Web应用服务器、数据库服务器必需测试项,包括:

(1)处理器时间:指服务器CPU占用率,一般平均达到70%时,服务就接近饱和。

(2)可用内存数:如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重。

(3)物理磁盘读写时间。

2.Web服务器指标

(1)平均每秒响应次数为总请求时间与秒数之比。

(2)平均每秒业务脚本的迭代次数。

(3)成功的请求和失败的请求。

(4)成功的点击次数和失败的点击次数。

(5)每秒点击次数、每秒成功的点击次数和每秒失败的点击次数。

(6)尝试连接数。

3.数据库服务器指标

(1)用户连接数,也就是数据库的连接数量。

(2)数据库死锁量。

(3)数据库缓存的命中情况。

以上指标只是一些通用指标,对于不同的应用还需作相应的调整,比如程序使用的是.NET技术,则必须加入一些针对性的测试指标。对于这些指标的详细了解,可以参考Windows下面的System Monitor的帮助与Load Runner和ACT的帮助。1

测试计划当明确了测试的目的之后,真正开始针对一个Web应用程序进行测试的时候,需要制定一套详细的测试计划,这样才能顺利地完成所有的测试内容。计划的内容归纳为以下几步:

(1)首先对被测的Web应用程序进行需求分析,即对所做的测试作一个简要的介绍,包括描述测试的目标和范围,所测试的目标要实现一个什么样的功能,总结基本文档、主要活动。

(2)写出测试策略和方法,这里包括测试开始的条件、测试的类型、测试开始的标准以及所测试的功能、测试通过或失败的标准、结束测试的条件、测试过程中遇到什么样的情况终止和怎么处理后恢复等。1

测试类型Web测试的类型包括内容测试、界面测试、功能测试、性能测试、兼容性测试、安全性测试等。内容测试、界面测试和兼容性测试都比较简单,不再细谈。Web的功能测试与传统的软件测试区别不大,主要是在连接测试方面有点区别,数据的传递方面会稍微复杂点。由于Web软件都是采用B/S结构,客户端所需的服务都是由服务器提供的,所以主要是测试服务器上软件运行的性能。Web应用程序的测试包括客户端连接服务器速度方面的测试和压力测试这两方面。性能测试的基本步骤如下:

(1)分析产品结构,明确性能测试的需求,包括并发、极限、配置和指标等方面的性能要求,必要时基于LOAD测试的相同测试需同时考虑稳定性测试的需求。

(2)分析应用场景和用户数据,细分用户行为和相关的数据流,确定测试点或测试接口,列出系统接口的可能瓶颈,一般是先主干接口再支线接口,并完成初步的测试用例设计。

(3)依据性能测试需求和确定的测试点进行测试组网设计,并明确不同组网方案的重要程度或优先级作为取舍评估的依据,必要时在前期产品设计中提出支持性能测试的可测试性设计方案和对测试工具的需求。

(4)完成性能测试用例设计、分类选择和依据用户行为分析设计测试规程,并准备好测试用例将用到的测试数据。

(5)确定采用的测试工具。

(6)进行初验测试,以主干接口的可用性为主,根据测试结果分析性能瓶颈,通过选代保证基本的指标等测试的环境。

(7)迭代进行全面的性能测试,完成计划中的性能测试用例的执行。

(8)完成性能测试评估报告。1

功能测试**(1)链接测试。**链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些未知地址的页面的主要手段。链接测试可分为3个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证 Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,亦即在整个Web应用系统的所有页面开发完成之后进行链接测试。

**(2)表单测试。**当用户通过表单提交信息的时候,都希望表单能正常工作。如果使用表单来进行在线注册,要确保提交按钮能正常工作,当注册完成后应返回注册成功的消息。如果使用表单收集配送信息,应确保程序能够正确处理这些数据,最后能让用户收到信息。要测试这些程序,需要验证服务器是否能正确保存这些数据,而且后台运行的程序能否正确解释和使用这些信息。当用户使用表单进行用户注册、登录、信息提交等操作时,必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。如果使用默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。

**(3)Cookie测试。**Cookie通常用来存储用户信息和用户在某些应用系统的操作,当一个用户使用Cookie访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookie的形式存储在用户端计算机上,这可用来创建动态和自定义页面或者存储登录等信息。如果Web应用系统使用了Cookie,就必须检查Cookie是否能正常工作。测试的内容可包括Cookie是否起作用、是否按预定的时间进行保存、刷新对Cookie有什么影响等。如果在Cookie中保存了注册信息,应确认该Cookie能够正常工作而且已对这些信息加密。如果使用Cookie来统计次数,需要验证次数累计是否正确。

**(4)数据库测试。**在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。在使用了数据库的Web应用系统中,一般情况下可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。1

性能测试**(1)连接速度测试。**用户连接到Web应用系统的速度根据上网方式的变化而变化,或许是电话拨号,或许是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5s),用户就会因没有耐心等待而离开。另外,有些页面有超时的限制,如果响应速度太慢,用户可能还来不及浏览内容,就需要重新登录了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。

(2)负载测试。负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。

负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为对于一个企业,其内部员工数量总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。

**(3)压力测试。**压力测试的区域包括表单、登录和其他信息传输页面等。进行压力测试是指实际破坏一个Web应用系统,测试系统的反应。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。在Internet上黑客攻击常采用的方式是:提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。因此,对应用系统的压力测试很有必要。1

用户界面测试(1)导航测试。导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。

在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致,确保用户能快速了解Web应用系统中是否还有内容以及内容的位置。Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。

**(2)图形测试。**在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框颜色、字体、背景、按钮等。图形测试的内容有:

1)确保图形有明确的用途,图片或动画必须排列有序以节约传输时间。Web应用系统的图片尺寸要尽量小,并且能清楚地说明某件事情,一般都链接到某个具体的页面。

2)验证所有页面字体的风格是否一致。

3)背景颜色应该与字体颜色和前景颜色相搭配。

4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩,最好能使图片的大小减小到30KB以下。

5)需要验证的是文字回绕是否正确。如果说明文字指向右边的图片,应该确保该图片出现在右边。不要因为使用图片而使窗口和段落排列古怪或者出现孤行。

**(3)内容测试。**内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。信息的正确性是指信息是可靠的还是误传的。信息的准确性是指是否有语法或拼写错误,这种测试通常使用一些文字处理软件来进行。信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓“相关文章列表”。

**(4)整体界面测试。**整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般Web应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。对所有的用户界面测试来说,都需要有外部人员的参与,最好是让最终用户参与。1

兼容性测试**(1)平台测试。**市场上有很多不同的操作系统类型,最常见的有Windows,UNIX,Macintosh,Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。因此,在Web系统发布前,需要在各种操作系统下对Web系统进行兼容性测试。

**(2)浏览器测试。**浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,JavaScript,ActiveX,plug-ins或不同的HTML规格有不同的支持。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不同。测试浏览器兼容性的一个方法是创建兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。

**(3)组合测试。**最后需要进行组合测试。600像素×800像素的分辨率在MAC机上可能不错,但是在IBM兼容机上却很难看。在IBM机器上使用Netscape能正常显示,但却无法使用Lynx来浏览。如果是内部使用的Web站点,测试可能会轻松一些。如果公司指定使用某个类型的浏览器,那么只需在该浏览器上进行测试。如果所有的人都使用T1专线,可能不需要测试施加的下载。有些内部应用程序,开发部门可能在系统需求中声明不支持某些系统而只支持那些已设置的系统。但是,理想的情况是,系统能在所有机器上运行,这样就不会限制将来的发展和变动。1

安全测试安全测试是检验在系统中已存在的系统安全性、保密性措施是否发挥作用。它主要包括以下几个方面:

(1)目录设置:正确设置目录。

(2)SSL:使用SSL进行安全传送,确定是否有相应的替代页面。

(3)登录:验证系统阻止非法的用户名/口令登录。

(4)日志文件:注意验证服务器日志是否正常。

(5)脚本语言:脚本语言是常见的安全隐患。1

接口测试**(1)服务器接口。**第一个需要测试的接口是浏览器与服务器的接口。测试人员提交事务,然后查看服务器记录,并验证在浏览器上看到的正好是服务器上发生的。测试人员还可以查询数据库,确认事务数据已正确保存。

**(2)外部接口。**有些Web系统有外部接口。例如,网上商店可能要实时验证信用卡数据以减少欺诈行为的发生。测试的时候,要使用Web接口发送一些事务数据,分别对有效信用卡、无效信用卡和被盗信用卡进行验证。如果商店只使用Visa卡和MasterCard卡,可以尝试使用Discover卡的数据(简单的客户端脚本能够在提交事务之前对代码进行识别。

**(3)错误处理。**最容易被测试人员忽略的地方是接口错误处理。通常我们试图确认系统能够处理所有错误,但却无法预期系统所有可能的错误。可以尝试在处理过程中突然中断事务,看看会发生什么情况,看订单是否完成;或是尝试中断用户到服务器的网络连接,或者尝试中断Web服务器到信用卡验证服务器的连接,在这些情况下,系统能否正确处理这些错误,是否已对信用卡进行收费。如果用户自己中断事务处理,在订单已保存而用户没有返回网站确认的时候,需要由服务提供商致电用户进行订单确认。1

测试工具由于Web页数数目巨大且变动频繁,对其测试如果单靠手工是无法进行的,必须有测试工具的参与[5],它们在保障Web应用的功能、性能方面起了重要的作用。

1.界面测试工具

一般对于Web界面测试工具有Selenium。Selenium直接运行在浏览器中,就像真正的用户在操作一样。可测试与浏览器的兼容性——是否能够很好地工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持的浏览器包括IE,Mozilla和Firefox等。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。

2.功能测试工具

针对每一个的测试都有各种不同的测试工具,该文将对比较常用和综合测试的3种工具——Winrunner,Rational Robot,QTP。

Winrunner7.0是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,Winrunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。

Rational Robot是Rational的产品之一,提供了软件测试的功能和许多类似机器人的重复过程,供测试用,可以让测试人员对.NET、Java、Web和其他基于GUI的应用程序进行自动的功能性回归测试。是一种对环境的多功能的、回归和配置测试工具,在该环境中,可以使用一种以上的IDE和(或)编程语言开发应用程序。可以很容易的使手动测试小组转变到自动测试上来。使用IBM Rational Robot进行回归测试是早期步入自动化的很好的一步,因为它易于使用,并且可以帮助测试者在工作的过程中学习一些自动处理的知识。

QTP是QTP Professional的简称,是一种自动测试工具。使用QTP可执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。

3.性能测试工具

负载性能测试工具的原理通常是通过录制、回放脚本、模拟多用户同时访问被测试系统,制造负载,产生并记录各种性能指标,生成分析结果,从而完成性能测试的任务。

主流的负载性能测试工具有:QA Load,Load-Runner,Web load和WAS(Microsoft Web Application Stress Tool),下面将主要介绍和对比这这4款工具。

Load Runner:一种较高规模适应性的自动负载测试工具,它能预测系统行为,优化性能。强调是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,可更快的确认和查找问题。能支持最宽范的协议和技术,为特殊环境量身定做地提供解决方案。

QA Load:Compuware公司的QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。QALoad是QACenter性能版的一部分,它通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能。QACenter汇集完整的跨企业的自动测试产品,中国IT室验实专为提高软件质量而设计,可以在整个开发生命周期、跨越多种平台、自动执行测试任务。

Webload:是RadView公司推出的一个性能测试和分析工具,它让Web应用程序开发者自动执行压力测试;通过模拟真实用户的操作,生成压力负载来测试Web的性能,用户创建的是基于JavaScript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量Web应用程序在真实环境下的性能。

Microsoft Web Application Stress Tool是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响2。

本词条内容贡献者为:

孙锐 - 教授 - 合肥工业大学