(检测技术与自动化装置专业论文)web应用系统测试有效性的研究与应用.pdf_第1页
(检测技术与自动化装置专业论文)web应用系统测试有效性的研究与应用.pdf_第2页
(检测技术与自动化装置专业论文)web应用系统测试有效性的研究与应用.pdf_第3页
(检测技术与自动化装置专业论文)web应用系统测试有效性的研究与应用.pdf_第4页
(检测技术与自动化装置专业论文)web应用系统测试有效性的研究与应用.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

w e b 应用系统测试有效性的研究与应用 摘要 随着i n t e r n e t 的普及与推广,b s 模式w e b 应用系统成为现在 应用程序开发的首选模式。在构建w e b 应用系统过程中,面向w e b 应 用系统的测试是一项重要、艰巨且富有挑战性的工作。面向w e b 应用 系统的测试与传统的软件测试不同,不仅需要检查和验证是否按照需 求规格说明书的要求运行,而且还要测试w e b 应用系统在不同的浏览 器上的显示是否符合要求、与不同的数据库连接是否有效等。更重要 的是在性能、安全性、可用性等方面,w e b 应用系统测试面临诸多困 难。 一 作者在一年半的软件测试研究与实际应用中,对w e b 测试有了比 较深入的了解,并在具体项目0 n l i n eg a t ew a y 中运用所研究的内 容对o n l i n eg a t ew a y 系统进行了功能测试、可用性测试等,并使 用自动化测试工具l o a d r u n n e r 对项目进行了性能测试。论文根据作 者在测试工作中遇到的问题,总结了w e b 常见故障模型,其中包括 w e b 表单测试、性能测试、安全测试、可用性测试等应注意的问题, 对w e b 测试工作者有一定的借鉴意义。作者在论文中指出获得w e b 测 试的最大有效性一个有效途径就是把测试工作完全融入软件开发过 程中,强调了进行有效的测试管理对保障测试成功的重要性,并给出 了一些进行测试方案设计的方案方法,对软件测试工作的理论研究有 一定的推进作用。 关键字:w e b 测试有效性测试w e b 故障模型安全测试 s t u d ya n da p p l i c a t l 0 n 0 nw e ba p p l i c a r l 0 ns y s t e m se f f e c t i v et e s t a bs t r a c t a l o n gw i t ht h ei n t e m e tu n i v e r s a l i t ya n de x p a n s i o n b sm o d ew 乩 a p p l i c a t i o ns y s t e m b e c o m e st h eh e a d o ft h e a p p l i e dp r o c e d u r e d e v e l o p m e n to fn o wt oc h o o s et h em o d e i ns e tu pt h ew 曲a p p l i c a t i o n s y s t e mp r o c e s s t h et e s tt h a t f a c e st ot h ew 曲a p p l i c a t i o ns y s t e mi saw o r k o fc h a l l e n g ew i t hh u g ea n df u l lo fi m p o r t a n c e ,h a r dw o r k f a c et ot h et e s t a n dt h et r a d i t i o n a ls o f t w a r et e s td i s s i m i l a r i t i e so ft h ew 曲a p p l i c a t i o n s y s t e m ,n o to n l yn e e dt ob ec h e c k e da n dv e r i f i e da c c o r d i n gt ot h er e q u e s t s p e c i f i c a t i o nm a n u a l ,b u ta l s on e e dt ot e s t e di nt h em a n i f e s t a t i o no ft h e d i 髓r e n tb r o w s e rw h e t h e rm e e t st h er e q n e s t 1 i n kw i t hd i f i e r e n td a t a b a s e w h e t h e rv a l i da n dm o r ei m p o r t a n ti nt h ef u n c t i o n ,s a f e t y , e a s i i yu s ee t c , t h ew e ba p p l i c a t i o ns y s t e mt e s tf a c e sm a n yd i m c u l t i e s t h ea u t h o rh a sb e e nf a m i l i a rw i t ht h ew e bt e s t i n ga f t e ro n ea n da h a l f y e a r s t e s t i n gs t u d y d u r i n gt h ep r o j e c to n l i n eg a t ew a y , t h ea u t h o r t e s t e dt h er e s e a r c hr e s u l tb yt e s t i n gt h es o f t w a r ea tt h ef u n c t i o n ,e a s yu s e e t c a f f e r w a r d sim a d eu s eo ft h ea u t o m a t i o nt e s tt o o ll o a d r u n n e rt o c a r r y0 nt h ep e r f o r m a n c e t e s tt ot h eo n l i n eg a t ew a y s y s t e m t h e s i s s u m su pt h ei m p o r t a n tb r e a k d o w nm o d e lo fw e bi n c l u d et h ef o t i nt e s t p e r f o r m a n c et e s t ,s a f e t yt e s ta n de a s yu s et e s te t c ,a c c o r d i n gt ot h e p r o b l e m sw h a tt h ea u t h o rm e e t si nt h et e s tw o r k t h e t e s t e ro rt e s t i n g r e s e a r c h e rw i l lg e ts o m e t h i n gf r o mt h i st h e s i s t h ea u t h o ra l s op o i n to u ti t i su s e f u lf o re n s u r i n gt h ee f f i c i e n tt e s t i n gt h a tt h et e s t i n gs h o u l d c o m p l e t e l ym e l ti n t ot h es o f t w a r ed e v e l o p i n gp r o c e s sa n de m p h a s i z et h a t t h ev a l i dt e s tm a n a g e m e n ti st h es u c c e s s f u lt e s t i n g sg u a r a n t e e ,a n dg i v e o u ts o m ep i e c e so fs u g g e s t i o nt om a n a g et h et e s t i n gp r o g r e s s i ti su s e f u l t ot h er e s e a r c ho fs o r w a r et e s t i n gt h e o r i e s k e yw o r d s :w e b t e s t i n g e f f e c t i v et e s t i n gw e bf a u l tm o d e l s a f e t yt e s t i n g 独创性( 或创新性) 声明 本人卢叫所呈交的论文是本人在导师指导f 进彳的研究工作及取得的研究成果。尽我所 知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰 写过的研究成果,也小包含为获得北京邮电大学或其他教育机构的学值或证一t s 而使用过的材 料。与我一l 司工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢 意。 申请学位论文与资料若有不实之处 本人签名:至缝 本人承担一切相关责任。 f i 期: 婆竺! ! 呈a 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保 留并向固家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权书。非保密论 文注释:本学位 本人签名: 导师签名: 适用本授权书。 日期: 兰型笸,兰! 呈g 日期 63 、2 9 北京邮电火学 w e b 应用系统测试有效性的研究与应用 1 1 课题的背景 第一章绪论 科学技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量 自然成为人们共同关注的焦点。不论软件的生产者还是软件的使用者,都生存在 竞争的环境中,软件开发商为了占有市场,必须把产品质量作为企业的重要目标 之一,以免在激烈的竞争中被淘汰出局。 随着i n t e r n e t 的普及与推广,w e b 技术逐渐应用到商业、工业、银行、财 政、教育、政府和娱乐等行业,广泛影响着我们的日常工作和生活。由于w e b 应 用系统部署的便利性( 浏览器作为客户端) ,原先基于客户端n 务器( c s ) 模 式的应用系统正逐步过渡到浏览器n 务器( b s ) 模式b s 模式w e b 应用系统 成为如今应用程序开发的首选模式。 在构建w e b 应用系统过程中,面向w e b 应用系统的测试( 含验收) 是一项重 要、艰巨且富有挑战性的工作。面向w e b 应用系统的测试与传统的软件测试不同, 不仅需要检查和验证是否按照需求规格说明书的要求运行,而且还要测试w e b 应 用系统在不同的浏览器上的显示是否符合要求、与不同的数据库连接是否有效 等。更重要的是在性能、安全性、可用性等方面,w e b 应用系统测试面临诸多困 难。 1 2 课题研究的内容和意义 作者对w e b 测试进行了深入的研究,提出了w e b 有效测试方案,总结了w e b 测试中的故障模型,特别对w e b 测试管理、功能测试、性能测试等进行比较细致 的论述。 w e b 系统因其与其它软件比较有其特殊性,比如:w e b 具有分布、异构、并 发和平台无关的特性,因而w e b 测试要比普通程序的测试复杂得多。国内外对 w e b 测试有较多的论述,但如何进行有效的w e b 测试却没有定论。有关文章对w e b 测试有效性的研究也只局限于测试用例的设计采用何种方法,但对一个系统进行 成功的测试,包含了方方面面,比如测试管理、测试内容的确定、测试小组的组 建等都是非常重要的,而测试用例的设计只是其中一点。作者总结了在o n l i n e g a t ew a y 项目中得出的测试经验,论述了自己对如何进行有效的w e b 测试的方 法,并提出应用w e b 故障模型可以提高测试效率。 北京邮电大学 w e b 应用系统测试有效性的研究与应用 1 3 课题的来源和作者所作的工作 本课题以公司项目o n l i n eg a t ew a y 应用系统测试为基础,研究了国内外 w e b 应用测试技术的发展动态,了解和掌握了软件测试的基本理论、思想和技术, 对基于w e b 应用的功能测试、性能测试、可用性测试和安全性测试,进行了比较 深入的研究。从2 0 0 4 年9 月进入课题开始,作者以“w e b 应用系统测试有效性 的研究与应用”为题,开始进行硕士论文准备工作。在导师的悉心指导下,确定 了课题研究的主要内容,在一年半的时间里,作者完成了以下工作: 阅读并分析了有关软件测试的资料及相关学术论文,对w e b 应用的软件测试 技术的概念、特点等进行了详细的研究和分析; 运用掌握的w e b 应用的测试理论和实现机制,对w e b 应用系统的故障模型进 行了归纳年口总结; 应用相关理论对o n l i n eg a t ew a y 系统进行了充分有效的测试,其中包括 功能测试、性能测试、安全测试、兼容性测试、可用性测试等,编写了大量 的测试用例。 1 4 本论文的章节安排 本论文主要内容共分八个部分,总结了课题的研究成果,提出了应用w e b 故 障模型可以进行更有效的测试的理论。 第一章绪论。主要介绍w e b 测试的概念与课题研究的方向以及作者所作的 工作; 第二章w e b 应用系统的特点与测试内容。主要分析了w e b 应用系统测试与 传统软件测试的不同,并对w e b 应用系统需要进行的测试内容进行了简要的分 析; 第三章有效的w e b 测试过程与管理。作者查阅了有关测试过程管理与软件 工程的相关资料并结合自己所作的工作,提出了测试过程的有效的管理过程是 w e b 有效测试的前提; 第四章保障w e b 测试有效性的方法。总结了工作中遇到的问题,对w e b 测 试具有一定的指导意义; 第五章w e b 应用系统软件o n l i n eg a t ew a y 介绍。简要介绍了被测试软 件o n l i r eg a t ew a y 的体系结构。 第六章o n l i n eg a t ew a y 测试方案。具体介绍了测试过程,包括安装测 试、功日j , t j 试、性能测试、可用性测试等: 第七章w e b 应用故障模型。对以前所作的工作进一步作了总结与深化: 第八章总结和课题的发展方向。作者对论文作了进步总结,并对以后的 北京邮电大学 w e b 应用系统测试有效陛的研究与应用 工作及课题的研究方向提出了自己的想法。 3 北京邮电大学 w e b 应用系统测试有效性的研究与应用 第二章w e b 应用系统特点及测试内容 2 1w e b 应用软件与传统软件不同点 服务器 一 :嘉j固 薜 莲亘 c - 图2 一l w e b 体系结构图 由图2 1 我们可以看出,与传统软件相比,w e b 应用有很多独特的地方,其 中对测试有影响的方面主要有以下几点: 1 w e b 应用的用户数量巨大,并要求能提供对w e b 资源的跨平台全局访问, 需要有并发处理事务的能力,因而需要进行多用户的性能测试: 2 使用环境不尽相同:硬件设备、网络连接、操作系统、中间件、服务端 支持、浏览器等都有所不同,形成了异构、自治的工作环境,这就需要考虑兼容 性测试; 3 着重于信息的发布。大多数传统软件强调的是运算的功能,而在w e b 上 主要是信息的搜索和获取,这就需要通过测试来保证信息的正确显示。 总之,w e b 具有分布、异构、并发和平台无关的特性。传统的测试方法已经 不能完全胜任对w e b 的测试,需要一套独特的测试体系。我们可以把w e b 看成是 一个使用方便、接受全局访问、具有图形化界面的数据库的前端。由于w e b 应用 具有多层体系结构,客户、数据通信、硬件以及服务器之间的依赖关系又非常复 杂,使得在每层内以及各层间都有可能发生故障。在客户机端,由于浏览器的型 号、版本有很大的不同,以及对应的显示技术各不相同,使得有些信息往往不能 正常地显示,从而产生兼容性问题以及显示故障;在服务器端,可能存在超链接 不可达或者根本不存在的问题,影响用户的使用和评价;服务器、数据库的负载 能力有限,在用户访问达到高峰时,响应时间太长甚至不接受用户的访问,这些 都直接影响到用户的使用。 4 北京| i | | f 电大学w e b 应用系统测试有效性的研究与应用 2 2w e b 应用系统自, o i n 试内容 w e b 测试主要通过功能测试、性能测试、兼容性测试、安全性测试与可用性 测试来发现w e b 系统的故障。 2 2 ,l 功能测试 功能测试就是结合规格说明的要求,保证功能上正确无误。实现用户功能需 求是对软件系统最基本的要求,所以软件功能测试也是所有测试任务的基础。抛 开与传统软件系统功能测试的相同之处,w e b 应用系统功能测试主要包括以下五 方面的内容:链接测试、表单测试、c o o k i e 测试、设计语言测试、数据库测试。 在制定测试计划、设计测试策略、选择测试方法和分配人力资源等方面,功能测 试往往是考虑最多的因素。 2 2 2 性能测试 作为一个网络用户,通常遇到的问题是单击一个链接或者提交一个表单,需 要相当长的时间才能得到服务器反馈的页面。这样的w e b 应用系统即使功能再强 大,也会因为性能问题失去用户。在如今的w e b 应用系统研发中,性能测试的地 位逐步提高。w e b 应用系统性能测试主要包括3 个方面的内容:速度测试、负载 测试、压力测试。 速度测试:对于最终的w e b 应用系统用户而言,最关心的性能问题是:访问 w e b 应用系统页面时,多长时间才能显示出所需的页面。通常情况下,如果 响应时间超过5 秒,用户就可能无法忍受。影响响应的原因有很多,例如: 应用程序服务器需要从数据库的大量数据中检索信息、服务器硬件( 内存、 c p u 等) 、页面文件大小和网络连接带宽影响等,有些w e b 应用系统有超时的 限制,如果响应速度太慢,用户可能还没有浏览内容,就需要重新登录了; 负载测试:负载测试是为了测量w e b 应用系统在一定负载情况下的系统性能, 通常得出的结论是w e b 应用系统在一定的硬件条件下可以支持的并发用户数 目或者单位时间数据( 或事件) 的吞吐量。在进行负载测试前,需要定义标 准用户( 或称作活动用户) 的概念,定义执行哪些典型的系统流程,定义负 载测试执行总时间,定义抓取哪些事务的平均响应时间,定义用户可以接受 的平均响应时间( 通常为5 秒) 。测试时,增加用户数量,平均响应时间就 会增加,当达到用户可以接受的平均响应时间这个临界点时,即是此系统可 以支持的并发用户数。在一些w e b 应用系统中,也可以采用吞吐量作为负载 指标。例如,银行在固定的时间会结算交易情况,并发生交易报表,此时报 表系统就可以采用每秒可产生报表页数这个吞吐量值作为衡量指标; 北京邮电大学w e b 应用系统测试有效性的研究与应用 压力测试:对w e b 应用系统进行压力测试,类似于对普通机械、电子产品进 行的破坏性试验。方法是实际破坏w e b 应用系统,测试系统的反应。压力测 试是测试系统的限制和故障恢复能力,也就是测试w e b 应用系统会不会崩溃, 在什么情况下会崩溃,崩溃以后会怎么样。在w e b 应用系统性能测试过程中, 常常将压力测试和负载测试结合起来。在负载测试的基础上,增大负载量, 直到系统崩溃。 2 2 3 安全性测试 软件系统的安全性向来都是人们关注的话题,安全性方面的技术一直在矛与 盾的较量中成长。作为w e b 应用系统,受其应用范围的影响,常受到病毒和非法 入侵的攻击,数据传输会被非法截获和伪造传递,所以安全性受到关注。了解安 全漏洞信息,避免w e b 应用系统中出现的漏洞被入侵者利用;及时升级补丁程序, 提高系统安全性。w e b 应用系统的安全性测试区域主要有: 现在的w e b 应用系统基本采用先注册,后登录的方式。因此,必须测试有效 和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制, 是否可以不登录而直接浏览某个页面等; w e b 应用系统是否有超时的限制,也就是说,用户登录后在一定时间内( 例 如1 5 分钟) 没有点击任何页面,是否需要重新登录才能正常使用; 为了保证w e b 应用系统的安全性,日志文件是至关重要的。钡4 试相关信息是 否写进了日志文件、是否可追踪; 当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性; 服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用,所以,还 要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。 2 24 配置和兼容性测试 谈到w e b 应用系统配置和兼容性测试,最容易想到的是浏览器配置和兼容性 测试。因为w e b 应用系统通常需要支持多个主流的w e b 浏览器,而最终用户面对 的也是这些不同的浏览器。针对浏览器的配置和兼容性测试在w e b 应用系统测试 中必不可少,并且占了w e b 应用系统客户端配置和兼容性测试的大部分时间。 w e b 应用系统多采用分布式体系结构,服务器端通常包括w e b 服务器组件、 应用程序服务器组件和数据库服务器组件。服务器还可能运行在不同的操作系统 上,并且这些组件、操作系统等可以有不同的配置方法,所以针对服务器的兼容 性测试往往因为测试矩阵表的庞大而让人望而却步。所以设计有效的测试用例, 精简庞大的测试矩阵是w e b 兼容性测试的要点。服务器端配置和兼容性测试,具 北京| | _ j 电大学w e b 应用系统测试有效性的研究与应用 体内容如下:应用程序服务器、w e b 服务器、数据库服务器、防火墙、操作系统 和硬件兼容性:客户端配置和兼容性测试,具体内容如下:浏览器、小型防火墙、 操作系统和硬件兼容性。 2 2 5 可用性测试 满足用户需求,易于用户使用的w e b 应用系统才是好的系统。w e b 应用系统 最终要面向w e b 用户,系统给用户的印象是非常重要的,如果网站不规范、很难 使用或者部分功能不能运行,将会使用户对网站失去信心,最终失去用户。 w e b 可用性测试的基本内容:导航测试、整体界面测试、图形测试、内容测 试、帮助系统测试、功能测试及整体效果测试。 2 2 6 安装测试 安装是大部分软件产品实现其功能的第一步,没有正确的安装根本谈不上正 确的执行,因此安装测试同样很重要。安装测试至少要包含3 步:安装被测软件、 运行安装后的软件和卸载被测软件。 北京邮电大学 w e b 应用系统测试有效性的研究与应用 第三章有效的w e b 测试过程管理 为了对w e b 进行有效的测试,我们需要用有效的管理对测试过程中的各个环 节进行控制。为了进行有效的测试管理,我们应主要从以下几个方面进行考虑。 3 1 及早进行需求文档的测试 最有效的测试工作应该始于项目的开始阶段,远远早于程序代码的编写阶 段。首先需要检验的是需求文档,只有如此,在项目的后续阶段测试工作才能专 注于保证应用程序代码的质量。在项目生命周期的早期,详细设计和编码工作之 前,消除需求工作中的缺陷能够使昂贵的返工工作降到最低。 软件应用程序或者系统的需求说明书必须非常详细地描述它的功能。与提供 需求的人员进行交流是确定需求的工作中最具挑战性的工作之一。每条需求必须 阐述得准确和明确,这样它的读者对需求的理解才会完全相同。 如果使用了一致的方法来撰写需求文档,那么任何需求收集人员就有可能有 效地参与需求过程。一旦某条需求浮出了水面,那么通过详细咨询相关人员这条 需求就可以被测试和澄清。我们可以利用各种各样的需求测试来保证每条需求是 恰当的,并且大家对它的含义有相同的理解。 3 2 制定合理测试计划 测试成功的基石是有效的测试计划。为了适应开发过程或者提出对过程的改 进意见,编制合适的测试计划需要对企业文化和企业软件开发过程有所理解。考 虑到必须为测试的实施预留时间,所以在软件生命周期中,计划的编制应该尽早 开始。为了估计所需的资源阻及得到必要的采购、通过雇佣人员计划和获得测试 工具、测试所需的支撑软件和硬件,及早地了解手头的任务是非常重要的。及早 编制测试计划,我们就能够进行测试进度和预算的估计工作,并最终将其加入软 件开发的整体计划。 只有彻底地了解可能对测试目标造成影响的所有部分,才能编制出有效的钡4 试计划。此外,为了选择最有效和最恰当的测试策略,还必须具有测试经验并对 测试规律有所了解。测试经验、测试规律也就是作者第七章总结的故障模型。 在设计测试策略期间,我们必须考虑风险、资源、时间和预算上的限制。为 了估计所需的资源和它们所起的作用,还必须对估计技术和估计技术的实现有所 了解。估计测试工作量有好几种方法,其中包括比率法和与以前相似任务的工作 量进行比较。如果完全从零开始,那么要完成估计工作是相当不容易的。正确的 北京邮电大学w e b 应用系统测试有效性的研究与应用 估计有助于组成一支高效的测试队伍,并且使得项目发行时间与测试组的工作进 度一致。 33 组成高效的测试组 测试组能力的高低会极大地影响测试工作的成败。一个高效率的测试组应该 同时具备与目前软件问题相关的技术知识和领域专业知识。对测试组来说,只精 通完成测试任务所需的测试技术和测试工具还不够,根据软件问题域的复杂度, 测试组还应该包括对问题域有深入了解的人员。他们可利用白盒知识制作出测试 数据,并且能够高效地实现测试脚本和其他测试机制。 除此以外,测试组还必须结构合理,每个成员必须被赋予角色和职责,并且 分工明确,分配的原则是使得测试人员在执行测试时相互之间重叠的职责最小。 分配测试资源的一种方法是细化应用程序的功能性部分和非功能性部分。测试组 需要的角色数量可以多于成员数量,这是测试经理应该考虑的问题。 对任何测试组来说,不断地评估每位成员的有效性对保证测试工作的成功是 非常重要的。对测试人员进行评估需要调查他们在多方面的表现,其中包括发现 缺陷的类型与遗漏缺陷的个数和类型。只根据发现缺陷的数量来评价一个测试工 程师的表现是不全面的。在评估中应该考虑许多因素,例如:所测功能的复杂度、 时间限制、测试工程师的角色和职责、经验等等。只有用合理的标准对测试组成 员进行规范地评估才能提高整个测试工作的有效性。 要正确有效地测试应用程序,所需要的不仅仅是简单地模拟和重现用户动 作。不了解系统的内部构架和组件,只通过用户界面进行测试的方法就是典型的 黑盒测试。黑盒测试本身并不是最有效的测试方法。要全面地验证应用程序在功 能方面的正确性就需要设计和实施最有效的测试策略,这就要求测试组必须对系 统内部有一定程度的了解。基于这种了解,测试组就能够设计出更有效的测试方 案,并能更高效地发现缺陷。在测试个系统或者应用程序时,如果直接把系统 的各种模块和层次作为测试目标,那么这种测试方法就叫做灰盒测试。 了解了组成整个系统的组件和模块,就可以减轻测试组的工作量,而且测试 组可以把注意力集中在缺陷的特定区域或者层次上,从而提高开发人员修正缺陷 活动的有效性。黑盒测试人员只能报告缺陷的结果或者症状,原因是他们必须依 赖用户界面显示的错误消息或者其他信息,例如:“无法生成报告”,同时黑盒测 试人员也很难确定缺陷的漏识别和缺陷的误识别,而灰盒测试人员不仅能通过用 户界面看到错误信息,而且还掌握了诊断错误的工具并能报告缺陷产生的原因。 了解系统构架还能使测试人员抓住测试工作的重点,针对性地测试应用程序中在 构架上的敏感区域,例如:数据库服务器。 北京邮电火学 w e b 应用系统测试有效性的研究与应用 测试组必须参与需求文档的编写过程,与此同等重要的是测试组还必须参与 应用程序系统构架的评测。这样测试组在项目生命周期的早期就能发现潜在的可 测试性问题。例如:一个应用程序的系统构架中过多地使用了第三方的产品,这- 会给系统测试和缺陷诊断带来麻烦,因为测试组所属的组织并不能控制这些组件j 的源代码并对它们进行修改。测试组必须尽量发现这类问题,以便在确定有效的 测试策略时把这些问题考虑在内。过于复杂的构架也会导致缺陷难以定位和重 现。 如果系统实现得很好,那么系统本身就会在许多方面简化测试过程。日志和 跟踪机制在开发和测试工作中对追踪应用程序的行为帮助极大。此外,即使是在 应用程序发行以后,不同的工作模式( 如调试模式和发行模式) 也有助于发现和诊 断应用程序中存在的问题。 测试组了解系统构架有好几种方法。最好的方法莫过于在开发人员提出备选 的构架时,测试组参与对构架和设计的评审。应该鼓励测试人员评审系统构架和 设计文档,并且向开发人员提出问题。每次版本升级后测试人员参与对系统构架 变化的评审也非常重要,这样他们才不会遗漏任何影响测试工作量的因素。 : ” 3 4 跟踪测试的执行 测试执行阶段在上述各个阶段的工作完成后进行。我们已经有了测试策略、 测试计划、设计并开发完成的测试过程以及可以操作的测试环境,现在该执行测 试了。 如果系统的开发工作还在进行,并且已经有了可供测试的软件版本,那么为 了执行测试、跟踪发现的缺陷并提供关于测试工作进度的信息和度量,测试组必 须制定一个详细的测试工作流程。 下面讨论的这几条涉及到在测试执行期间的许多团队,其中包括测试组、开 发组、产品管理人员和其他组。所有这些组的工作就是为了保证能够发现缺陷、 为缺陷划分优先级和纠正缺陷。 3 4 1 隔离测试环境和开发环境 在测试组准备实施测试策略时,测试环境的建立是非常重要的。测试环境必 须要和开发环境分离开,这是为了避免无法追踪软件的变化。但是实际情况却经 常不是这样:为了节省费用,测试组并不能获得独立的测试环境。 虽然由于预算有限,经常无法建立一个独立的测试环境,但是采用某些节省 费用的方法,我们还是能够建立起一个经济上可以负担的、独立的测试环境。例 如:降低性能和容量。在一个测试环境中,可能并不需要带有大容量的硬盘和内 北京邮电大学w e b 应用系统测试有效性的研究与应用 存的高性能的主机。大多数测试活动可以使用低配置的机器,如果需要,我们可 以用外推法估计软件在高性能的硬件平台上的性能。但是因为外推法是一种不准 确的性能测量方法,它只能得出在产品环境中实际性能的一个近似估计,所以只 有当预算不允许配备产品级的测试机器时,我们才推荐采用这种方法。如果需要 精确的数字,那么性能的度量应该来自产品级的硬件。 使用活动硬盘。测试不同的配置并不需要多台机器或者完全安装所有的配 置,包含多个分区的活动硬盘使得一台机器能够容纳多个软件配置,这样就节省 了费用和时间。建立一个共享的测试实验室。为了分担测试环境的费用,若干软 件项目可以共享一个测试实验室。 3 4 2 追踪测试工作的执行 一个软件项目所涉及的所有人都希望知道测试何时结束,为了能够回答这个 问题,需要对测试的执行进行有效的追踪;为了完成这项工作,我们需要收集数 据或者度量来显示测试进度;为了确保软件成功,度量有助于确定何时必须完成 改正工作。此外,利用这样的度量,测试组能够预测应用程序的发行时间。如果 发行日期已经确定了,那么这些度量可以用于测量完成率。 在测试执行周期中,。进度的度量需要反复收集。有关进度的度量包括: 测试过程执行状况= 已经执行的测试过程数量n 试过程总数。这个执行状 态度量由已经执行的测试过程数量和计划中测试过程的总数相除得出。通过检查 这个度量值,测试组可以确定尚未执行的测试过程比例。这个度量本身提供的信 息并不能反映应用程序的质量。它提供的信息只能反映测试工作的进度,不包括 有关测试是否成功的信息。 追踪测试过程执行的最好方法是制作一个包含正在测试的版本的标识符、所 有测试过程的名字列表、为每个测试过程分配的测试人员以及完成比例的矩阵, 这个矩阵每天更新,它测量出成功执行的测试过程的步骤与计划执行测试过程步 骤的总数的比率。许多测试管理工具或者项目管理工具有助于使这个过程自动 化。 北京邮电大学 w e b 应用系统测试有效性的研究与应用 第四章保障w e b 测试有效性的方法 4 1 重点测试软件基本能力 w e b 同其它软件一样,都要向用户提供功能和服务,测试人员必须了解这些 功能,并清楚完成这些功能所需要的操作步骤和输入内容,以及对应各种不同的 输入软件运行的结果。 w e b 软件具有高度的复杂性,如果想在大量的通过测试中测试出问题,肯定 收效甚微,有效的测试方法是重点测试软件的基本能力。软件具有的基本能力有 以下4 种: 、软件从其环境中接收输入的能力。软件应只接收它能处理的输入,错误和非 法输入必须由软件界面或由嵌入在软件中的其他错误检查代码过滤掉。测试 人员主要是测试软件能否防止接收无效值,并测试有效输入的非法组合能否 迷惑该软件。非法但经过加工处理过的输入或输入组合最终会导致软件失 效,这是测试人员的最好测试点: 软件生成输出,并提交的能力。软件必须只能产生用户能够接收的输出。如 果软件在输出设备土向用户显示数据, 出不仅在格式和数量上应该是正确的, 那么数据必须在已定义的范围内。输 而且在逻辑上也应该是正确的。允许 2 0 0 3 年2 月2 9 日这个日期的日历是错误的,其格式和类型正确,但输出无 效。不熟悉闰年规则的测试员无法发现其中的缺陷。发现与输出相关的缺陷 常常需要广博的知识。区分正确和不正确的输出常常是个大问题,因此必须 对问题非常熟悉,以便能列举错误回答,并尽力保证不产生这样的错误回答: 软件具有以一种或多种数据结构形式存储数据的能力。软件能以一种或多种 数据结构形式存储输入值或计算结果,可以在计算或输出生成的使用中检索 这些数据。有关数据的主要测试问题在许多方面与输入问题类似。必须可接 收单个数据值,而且须与被测应用程序存储的其他数据能够相互融合。测试 人员的职责就是针对数据结构进行输入,往里增加、从中获取、将其上溢、 将其下溢,并做一些操作,搅乱数据结构,从而使系统失效; 软件使用输入和存储的数据执行计算的能力。即使所有输入、输出和存储数 据都在其合法限制范围内,仍有可能会使系统失效。例如,计算x = x + l 同样 会使程序崩溃,如果该计算执行次数足够多,则分配给变量x 的内存就会产 生溢出。 北京邮电大学w e b 应用系统测试有效性的研究与应用 4 2 获得有效的测试数据 在建立详细的测试设计期间,测试用例中会加入对测试数据的需求,有效的 测试策略要求细心收集和准备测试数据。如果测试数据很糟,就会影响测试效果。 反过来,好的测试数据有助于提高测试质量。正确的选择测试数据的内容还可以 减少维护的工作量。 测试数据的设计必须使得每个系统级的需求都能经过测试和验证。测试数据 的需求评审应该关注数据的几个关键方面,其中包括: 测试组必须考虑支持测试工作所需的数据库记录的数量和规模; 在测试执行期间要关注测试数掘的完整性。测试组在测试过程中,必须能分 离数据、修改所选的数据,并且能使测试数据恢复到初始状态。还要保证当 几个测试人员同时执行测试时,任何一项测试不能干扰其他测试所需的数 k ,j 据; 创建的数据集合应能够反应应用程序所在领域的特定“条件”; 测试数据的范围与数据的精确度、相关程度和完整程度之间是有关联的。测 试人员必须验证,对于特定目的的查询,查询结果中记录的内容是否合法, 并且还要验证查询结果是否有遗漏,是否包含错误的数据。 4 3 随机测试能提高缺陷发现率 软件测试员在工作中积累的经验和直觉是不可言传的,必须经过长期的积 累。运用现在学到的全部技术进行测试,仍有可能遗漏重要的软件缺陷,这是无 法更改的事实。随着实践过程的逐步提高,学习测试不同类型和规模的产品,就 会得到各种技能和技巧,可以更加有效地找出软件缺陷。重新开始测试新软件就 能很快找出以前遗漏的软件缺陷。 无经验的用户,是指一个不熟悉软件的人面对程序时,会做出不合规则的操 作。他们会输入程序员无从想象的数据;会在中途变卦,退回去执行其他操作; 在进入程序的某个界面以后,用鼠标单击不应该单击的东西。这些无经验的用户 都不遵循任何规则,也不做任何假定。学习无经验的用户,可以发现测试小组完 全遗漏的缺陷。 4 4 重点关注已发现缺陷的模块 在已经发现缺陷的地方再找缺陷,是因为哪个地方找到的软件缺陷越多,就 说明那里的缺陷越多。如果发现在不同的特性中找出了大量边界条件方面的软件 缺陷,那么明智的做法是着重对所有特性的边界条件进行测试。如果报告软件缺 北京邮电大学 w e b 应用系统测试有效性的研究与应用 陷是“启动一终止一再启动2 5 5 次导致软件失效”,测试员拿到修复后的软件重 新测试时,一定要重新执行同样的测试,并测试2 5 6 次以上。 4 5 把好单元测试关 ! 二 单元测试的对象是经过软件设计并编码的一个个程序模块,单元测试的依据 是根据详细设计的描述制定的单元测试计划。 4 51 开发的同时进行单元测试 随着极限编程开发方式的流行,在软件开发之前开发单元测试程序的观念也 被证明是有效的。在实现软件组件之前开发单元测试有许多好处。首先,最明显 的好处是单元测试强迫软件的开发方式能够满足每一条需求。当软件提供的功能 都成功地通过了单元测试时,我们才能认为软件完成了,并且通过单元测试需求 也得到了增强和检查。第二个好处是把开发人员的精力集中在解决主要矛盾,而 不是开发一个也能满足需求的、巨大的解决方案。第三个好处是通过单元测试可 以推测开发人员的实现目标。如果开发人员对需求的理解有问题,那么这种误解 会在单元测试代码中有所反映。 为了正确地利用这种技术,大部分需求文档必须在开发之前准备好。这样做 的原因是:在对某一特定功能进行详细的需求规格说明之前就开发软件可能是有 危险的。需求应该定义得尽量详细,这样开发人员才能容易地确定需要的对象和 功能。开发人员可以根据需求文档为组件制订单元测试的总策略,其中包括对成 功情形和失败情形的测试。为了简化单元测试的开发工作,开发人员必须重视用 基于接口的方法来实现组件。优秀的软件工程做法是围绕接口,而不是围绕组件 内部的机理来设计软件。注意组件或者软件接口不同于用户界面,后者是通过图 形化或者文本化的途径呈现给用户或者从用户取得信息。组件的接口通常由函数 组成,这些函数可以被其他组件调用,并且能够根据一组输入值完成特定的任务。 如果函数的名称、输入和输出已经确定并且达成了一致,那么就可以开始实现组 件了。 在实际工作中,总是在第一步就创建单元测试是很困难的。在某些情况下, 单元测试的开发和软件实现必须同时进行。采用这种方法有很多原因:从需求出 发不能立即设计出最好的组件接口或者由于突出的问题或其他非需求的因素而 没有全部完成需求。在这种情况下,还是应该尽量预先为组件定义完整的接口, 并针对接口中已确定的部分开发单元测试。组件剩余部分和相关的单元测试可以 随着组件开发工作而逐渐进行完善。 需求的更新应该按照如下步骤进行处理:首先,单元测试需要按照新需求进 北京邮电大学w e b 应用系统测试有效性的研究与应用 行修改,此时可能需要为组件接口新增一些函数、提供新的输入或者返回新的输 出;为了配合单元测试的开发工作,接口更新时要提供新增部分的实现说明,这 样使得单元测试能够进行。最后,组件自身通过更新来支持新的功能,每当开发 人员完成了一个满足新需求的新组件时,必须同时提供更新后的单元测试, 4 5 2 单元测试框架可提高单元测试的效率 单元测试代码在编写之后要定期地更新、维护和执行,要求每次生成必须执 行相应的单元测试。当项目的进度表非常紧张,快速纠正错误的压力非常大,有 时要求的周期是几分钟。更新单元测试程序,使当前层次编译通过看起来是一件 麻烦事,在特殊时刻简直就是浪费时间。但是我们必须认识到:磨刀不误砍柴功, 用很短的时间来更新单元测试,就能在随后的调试和查找缺陷中节省许多时间。 如果压力很大并且源代码修改频繁,那么这种节省尤其重要。 一 ,、 单元测试中的主要问题是不一致性。许多软件工程师都没有采用一种统一的 和结构化的方法进行单元测试。标准化和流畅的单元测试减少了它们的开发时 间,如果所有人的行为是一致的,那么管理单元测试程序会更容易。例如:当遇 到错误或者处理命令行参数时,单元测试的行为应该是可以预测的。如果在单元 测试中使用了些标准,那么生成环境就能根据这个结果判断生成过程是否应该 继续。如果没有使用标准,那么不同的开发人员可能会使用不同的返回值,这样 就使情况变得复杂了。 一种完成这种标准化工作的方法是创建一个单元测试框架。这是一个处理命 令行参数和报告错误的系统。例如: f r a m e w o r k a d d t e s t ( c r e a t e o r d e r t e s t ) : f r a m e w o r k i d d t e s t ( g r e a t e c u s t o m e r t e s t ) ; f r a m e w o r k a d d t e s t ( c r e a t e i t e m t e s t ) : 以上每个测试都是单元测试程序中的一个函数。框架通过依次调用这些函数来执 行所有这些测试,同时处理单元测试开发时间短,因为只需要编写和维护每个层 次中的单个测试,不需要它们都支持错误处理和其他执行逻辑。公共的单元测试 函数只在框架中编写一次。每个单元测试程序只实现测试函数,所有其他功能借 用框架的代码。 单元测试框架中可重用的部分应浚存放在其他地方,需要时单元测试程序可 以调用它们。 4 6 合理使用自动化测试工具 自动化测试工具能够增强测试工作的效率,但是要实现这个愿望,必须了解 北京 l i | j 电大学w e b 应用系统测试有效性的研究与应用 使用工具带来的问题,并且选择一个和当前系统环境兼容的工具。选择的工具要 和当前的任务相匹配,并能够帮助测试实现自动化,这些也是非常重要的。在开 发生命周期中的各个阶段,有许多可供利用的测试工具,其中包括非常著名的记 录回放测试工具。 国内有些观点认为使用自动化测试工具一定会提高测试效率,事实并非如 此。自动测试是一门技术,如果缺乏合理的计划和风险分析,执行自动测试可能 比执行手工测试的开销还要大。因此,如果希望从自动测试中获得收益,除了需 要考虑测试工具的选择外,要考虑如何在测试中用好所选择的工具。 4 6 1 自动化测试工具的选择 因为在软件开发工作中使用的技术很多,市场上可用工具也很多,虽然提供 商可能会承诺工具和许多w e b 应用技术兼容,但是最好还是检验一下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论