




已阅读5页,还剩52页未读, 继续免费阅读
(通信与信息系统专业论文)关键字驱动的自动化测试系统的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 软件测试是软件开发的关键过程之,对于确保软件产品的质量也有着十分 重要的作用。软件自动化测试技术研究的目的是在无人干预的情况下自动测试软 件,提高楚个软件测试的效率。对于当前功能强大的软件系统,人们希望通过自 动化测试技术来显著提高软件测试的效率,因此对自动化测试技术的研究是具有 实际意义的。 正是在这个前提之下,本文首先介绍了软件测试的研究背景、国内外发展状 况和自动化测试发展历程。接着阐述了自动化测试的基本理论和自动化测试脚本 技术。针对当前所使用的数据驱动自动化测试系统中脚本无法灵活适应软件业务 变化的缺陷,论文提出了基于关键字驱动脚本技术的自动化测试系统,并对其进 行了详细的研究。文中通过实例对关键字驱动自动化测试系统的测试流程做了较 完整的描述,并以自主研发的自动化测试平台为依托,应用关键字驱动脚本技术 进行自动化测试。通过自动化测试效率的对比可以预见,由于关键字驱动自动化 测试系统适应了软件业务的发展,其必将带来测试效率的进一步提高。 关键词:软件测试自动化软件测试 脚本关键宇驱动 a b s t r a c t s o r w a r et c s t i n gi sak c yp r o c e s si ns o r w 盯ed e v e l o p m e n ta i l da ni m p o n a l l l t 叩p r o a c hf o rg u a r a i l t e e i l l gt 1 1 eq u a l i t ) ro f s o r w a r e t i l er c s e a r c ho fa u t o m a t e ds o f m a r e t e s t i n gt e c l l i l o l o g yi si no r d e rt ot e s ts o r w a r ca u t o m a t i c a l l y 埘t 1 1 0 u th u m a no p e r a t i o n b e c a u s et h ef h n c t i o no fs o f h a r es y s t e mh a sb e e np o 、v e r 蛳,p e o p l ep a ym o r ea n e n t i o n t ot h ep o i n th o wt oi m p r o v et l l et e s t i n ge 伍c i e n c yb yu s i n g 也ea m o m a t e dt e s t i n g t e c l l i l o l o g y s oi ti sm e a i l i n g 矗l lt or e s e a r c ht l l ea u t o m a t e dt e s t i n gt e c l l l l o l o g y b a s e do nm ec o n d i t i o n ,f i r s t ,t h ep 印e ri 船o d u c e ds o 脚a r et e s tb a c k g r o l l n d ,m e p r e s e n td o m e s t i c 趴di m e m a t i o n a lc u r r e n ts i t u a t i o n o ft l l e d e v e l o p m e n ta i l d t h e d e v e l o p m e mc o u 如e 0 fa m o m a t c dt c s t i n g s e c o n d ,也eb a s i cm e o r ya n d s c r i p t t e c h n o l o g yo fa u t o m a t e ds o r w a r et e s t i n ga r ep r e s e m e di nm ep 印e lb e c o u r s et h e s c r i p tc a ni l o ts m a n l ya d a p tt l l ec h a n g eo fs o f t w a r es e r v i c ei nd a t a d r i v e na u t o m a t e d t e s t i n gs y s t e m ,k e ”v o r d d r i v e na u t o m a t e dt c s t i n gs y s t e mi sp m p o s e da n dd e t a i l l y r e s e a r c h e d 访t l l ep a p e r t h et c s 血gn o wo fk e y w o r d 一“v e na u t o m a t e dt e s t i n gs y s t e m i sc o m p l e t e l yd e s c r i b e db yas 锄p l e t h ea u t o m a t e dt e s t i n gb a s e do nk e y w o r d - d r i v e n s c r i p tt e c l l i l i q u ei sa l s oe x e c u t e di nas e l f - r e s e a r c h e da u t o m a t e dt e s t i n gs y s t e m a c c o r d i n gt ot l l ec o m p a r i s o no fm et e s t i n ge m c i e n c y i ti ss h o w n 血a tk e y w o r d - d r i v e n a u t o m a t e dt e s t i n gs y s t e m 谢l la d a p tt h ed e v e l o p m e n to fs o f t w a r es e i c ea n da c h i e v e t l l el l i g h e rt e s t i n ge 伍c i e n c y k e y w o r d :s o f t w a mt e s t i n g a u t o m a t e ds o f t w a r et e s 佃g s c r i p t k e y w o r d - d r 押e n 创新性声明 y8 5 9 0 3 9 本人声明所呈交的论文是我个人在导师的指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中 不包含其它人己发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均己在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文 在解密后遵守此规定) 本学位论文属于保密。在一年解密后适用本授权书。 本人签名:篮宴 日期: j f 口j 弓, 第一章绪论 第一章绪论 1 1 软件测试的研究背景和国内外发展状况 在i t 产业迅速发展的今天,硬件在质与量方面的飞速发展给人们留下了深刻 的印象。相对而言,软件在数量方面同样发展迅速,但是软件的质量却一直是令 人头疼的问题。随着软件规模的扩大,对于质量的保证已经成为一项异常艰苦的 工作,因此对软件进行有效的测试就成为保证软件质量最重要和最有效的方法。 软件测试是保证软件质量的重要手段,也是软件开发过程中的一个重要环节。 软件测试工作做得怎样,直接决定了软件产品质量的好坏。大量统计资料表明, 软件测试阶段投入的成本和工作量往往要占软件开发总成本和总工作量的4 0 到5 0 甚至更多。随着软件应用范围的扩大,软件复杂度的提高以及软件设计技 术的不断发展,软件开发规模越来越大,处理的问题越来越复杂。相对来说传统 的软件测试技术和方法已无法满足大型的、复杂的软件测试需要。因此软件测试 技术的研究就成为当前软件界的重点和难点,有关软件测试技术的研究和软件测 试工具的开发越来越受到业界的重视。同时,面对传统手工测试速度太慢,效率 太低的缺陷,人们想到了自动化测试,想通过脚本程序的运行让测试工作自动进 行,进而提高软件测试的效率。 软件自动化测试作为软件测试的一个重要组成部分,它能完成许多手工测试 无法实现或难以实现的测试,例如基于c l i e n t s e r v e r 的压力测试或w e b 系统的测 试。正确、合理地实施自动化测试,能够快速、彻底地对软件进行测试,从而提 高软件质量,生产出可靠的系统:改进测试工作质量,节省经费;减轻测试工作 量,缩短产品发布周期。 早在5 0 年代,人们刚开始开发较大型软件时,从几个大型软件项目的失败中 就意识到了软件危机的存在。自从2 0 世纪7 0 年代以来,国内外许多学者和组织 在软件测试方面进行了大量的研究工作。1 9 7 2 年6 月在美国北卡罗来纳大学召开 量首届软件测试正式技术会议,成为软件测试技术发展中的一个重要里程碑。自 此之后,软件测试作为软件工程学科的个重要分支,随着软件的发展而发展, 产生了许多经典的软件测试技术和软件测试流程管理规范。 美国的m e e 、a c m 等组织制定了一系列软件测试规范,国外的许多大学( 如 c 唧e g i em e l l o n 、华盛顿大学等) 、研究机构( 如m a t i o n a ls o f 【、a r et e s t i n gl a b 等) 和公司( 如s o f t w a r ef e s e a r c h 、m e r c u r yi n t e r a c t i v e 、r a t i o n a lc o r p o r a t i o n 等) 进行了大量软件测试的研究和应用工作。其中c a r n e g i em e l l o n 大学侧重于回归测 关键字驱动自动化测试系统的研究 试和c l i e 州s e r v e r 测试技术的研究,g e o r g em o s 趾侧重于基于规范的测试自动生 成和面向对象测试技术。目前比较流行的软件测试工具集有:w e b 测试工具: m e r c l l r yi n t e r a c t i v e 的w i n r 哪e r 、q t p 、l o a d r 哪e r ,m mr a t i o n a l 的r o b o t , c o m p u 、v a r ec o m p a n y 的q a r l m 等。嵌入式测试工具:a t t o l t e s t w 越也公司 的a t t o l t e s t w a r e ,m e 仃o w e r k s 公司的c o d e t e s t 等。数据库测试工具:l 0 2 i c w o r k s 公司的t e s t b ”e s 等。内存泄漏测试工具:i b m r a t i o n a l 的p 谢母等。协议 测试工具:s p i r e m 公司的a b a c u s 系列等。网络路由测试工具:s p i r c m 公司的 s m a n b i t 等。 国内的软件产品测试技术起步较晚,在人力、物力上投入与国外相比差距较 大。北京大学、北京航空大学进行了一系列软件分析和测试工具的研究和开发, 研制了一系列的程序理解工具和测试工具,比较具有代表性的工具有s a f e p r o c c + + ,s 疵p m j a v a 。航空计算机研究所、南京大学在嵌入式系统测试方面进行 较多工作,开发了一些静态分析工具和测试用例自动生成工具。西北工业大学在 航空软件仿真测试以及c s 系统的测试方面进行许多研究工作并取得了一系列成 果。 1 2 软件自动化测试的发展和课题的提出 随着应用软件程序规模的不断扩大,业务逻辑的不断复杂,软件系统的可靠 性无法通过手工测试来全面验证,据美国计算机市场分析调查机构c a 向e rg r o u p 统计,世界上仅有1 6 r 2 的应用软件系统较为完善和成功。手工测试的局限性越 来越多的暴露出来。软件测试的工作量虽然很大,但许多操作都是重复性的、非 智力创造性的工作,因此应用自动化测试可以对整个测试工作的质量、成本和周 期带来非常明显的效果。自动化软件测试由于其高重用性、高可靠性等诸多优点 而得到了广泛关注,成为越来越多的开发机构设计和研究的热点问题,这也促进 了自动化测试的发展。 到目前为止,自动化测试的发展主要经历了三个阶段:第一代基于录制回放 机制的自动化测试、第二代基于脚本技术的自动化测试以及第三代关键字驱动模 式的自动化测试。随着自动化测试的发展,脚本的重用性和测试效率等方面都有 了明显的提高。 1 第一代自动化测试:基于录制,回放机制的自动化测试。如图1 1 所示。 第一代自动化测试是使用测试工具快速录制完成对软件某方面的测试,然后 进行简单必要的调整,在下次测试时便可使用此次录制的脚本来进行回放,以达 到测试自动化的目的。这种机制的测试方法其实不是真正有效的自动化测试解决 方案,当应用程序发生变化时,前面录制的脚本将被作废,必须重新录制。 第一章绪论 第一代自动化测试的优点:简单易用,不需过多的编程技能,任何测试工程 师都可快速上手。 第一代自动化测试的缺点:脚本基本不可重用,难以维护,对结果的验证不 易实现。 图1 1 第一代自动化测试图示 第一代自动化测试的有效使用领域是批量配置方面的测试,可以使用录制回 放的方法进行大批量的配置,这样会极大的节省测试时间和提高测试效率。第一 代自动化测试的脚本技术是“线性脚本技术”。 2 第二代自动化测试:基于脚本技术的自动化测试。如图1 2 所示。 第二代自动化测试的主要突破是在录制脚本的修改和编程上,自动化测试研 究者把脚本进行修改、提取和抽象,从而提高了脚本的可重用性。在第二代自动 化测试里,自动化测试研究者已经考虑如何可以把数据从测试脚本里剥离出来, 以提高对脚本的再利用,减少脚本的维护代价。第二代自动化测试的脚本技术经 过了一个发展过程:从结构化脚本技术向共享脚本技术过渡,又在慢慢向数据驱 动脚本技术过渡。 第二代自动化测试的优点:脚本的可重用性提高;开始考虑自动化测试的一 致性和规则性。 第二代自动化测试的缺点:有太多的脚本在此期间开发出来,冗余太多;数 据和输入脚本还没有完全剥离分开,维护的代价非常高。 关键字驱动自动化测试系统的研究 图1 2 第二代自动化测试图示 3 第三代自动化测试:关键字驱动模式的自动化测试。如图1 1 所示。 第三代自动化测试强调手工测试设计和自动化测试设计。理想的做法是在工 作中把二者分开来做,但实际上却又紧密结合。第三代自动化测试里引入了关键 字驱动的概念,以描述性的方式开发设计自动化测试脚本。第三代自动化测试是 自动化测试的发展方向,它提出了在手工测试设计阶段即引入自动化思想,通过 数据库里的关键字来描述测试逻辑,为后续的自动化实现提供一个简单实现的基 础,这在另一程度上也加大了对手工测试工程师的技能要求。 图1 3 第三代自动化测试图示 在第三代自动化测试里,自动化角色被明显的划分为:测试设计者、自动化 第一章绪论 开发者、支撑脚本设计维护者和测试执行者。第三代自动化测试的提出和发展以 s d t 公司为旗帜,其中首推s d t 的u i l i f i e d t e g t p r o 。 关键字驱动脚本技术将测试软件的业务逻辑从测试脚本中脱离出来,克服了 数据驱动技术对业务无法灵活适应的缺点,实现了关键字驱动技术所带来的数据、 业务和脚本三者的分离,提高了自动化测试的效率。本文就是针对关键字驱动脚 本技术在自动化测试系统中如何应用进行研究,并对其系统实现进行了详细的说 明。通过在自主研发的自动化测试系统中进行测试得出的效率对比图,可以预见, 关键字驱动脚本技术可以明显改善测试的效率。 1 3 论文的工作安排 目前,软件测试被关注的程度逐渐加深,因此如何提高软件测试效率,确保 软件的可靠性,稳定性等已经成为当前关注的热点之一。由此诞生了自动化软件 测试,为手工测试提供有益的补充。本文主要研究的是软件自动化测试技术,关 注于第三代自动化测试即基于关键字驱动的自动化软件测试系统的应用研究。 论文的工作安排如下: 第一章绪论,介绍了软件测试的背景、国内外发展状况、自动化测试的发展、 课题的提出和论文的工作安排。 第二章主要介绍了自动化测试技术。包括自动化测试的相关理论及其优缺点。 第三章介绍了自动化测试中的关键技术,即脚本技术。介绍脚本技术及其设 计,并对目前主要应用的脚本技术进行阐述和对比分析。 第四章和第五章是本文的工作重点一关键字驱动自动化测试系统的研究。包 括关键字驱动自动化测试系统的结构和各个模块的实现,重点讨论了测试数据文 件的设计。在此基础上,将关键字驱动的脚本技术和自主研发的自动化测试系统 a t s ( a u t o m a t e dt e s t 啦s y s t e m ) 相结合进行研究。通过自动化测试效率对比图, 证明了脚本技术的发展提高了自动化测试系统的测试效率和测试用例的可靠性。 从而可以预见关键字驱动脚本技术必将进步改善自动化测试系统的性能。 虽后,通过结束语对论文进行总结,并对关键字驱动自动化测试系统的发展 进行展望。 第二章自动化测试技术 第二章自动化测试技术 2 1 软件测试概述 软件测试i l j 是为了发现错误而执行程序的过程。或者说,软件测试是根据软 件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例( 即输入数 据及其预期的输出结果) ,并利用这些测试用例去运行程序,以发现程序错误的过 程。 软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对 它做必要的测试( 称为单元测试) 。模块的编写者与测试者是同一个人。编码与单 元测试属于软件生存期中的同一个阶段。在这个阶段结束之后,对软件系统还要 进行各种综合测试,这是软件生存期另一个独立的阶段,即测试阶段,通常由专 门的测试人员承担这项工作。 软件测试的主要目标是提高被测应用在各种条件下都能正常运行并达到所要 求的概率,从而尽可能发现错误,最终使用户感到满意。测试的目标应在计划过程 中及早提出,并进行明确定义,从而保证测试过程的有效性和软件的质量。不同 的应用软件有不同的测试行为和方法,要根据自己的实际情况制定相应的目标。 以下是软件测试应遵循的原则: 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。 不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软 件开发的各个阶段中。坚持在软件开发的各个阶段的技术评审,这样才能在开发 过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐 患。 测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。 测试以前应当根据测试的要求选择测试用例( t e s tc a s e ) ,甩来检验程序员编 写的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输 出结果。 程序员应避免检查自己的程序。 程序员应尽可能避免测试自己编写的程序,程序开发小组也应尽可能避免测 试本小组开发的程序。如果条件允许,最好建立独立的软件测试小组或测试机构。 这点不能与程序的调试( d e b u g g m g ) 相混淆。调试由程序员自己来做可能更有效。 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。 合理的输入条件是指能验证程序正确的输入条件,不合理的输入条件是指异 关键字驱动自动化测试系统的研究 常的,临界的,可能引起问题异变的输入条件。软件系统处理非法命令的能力必 须在测试时受到检验。用不合理的输入条件测试程序时,往往比用合理的输入条 件进行测试能发现更多的错误。 充分注意测试中的群集现象。 在被测程序段中,若发现错误数目多,则残存错误数目也比较多。这种错误 群集现象,已被许多程序的测试实践所证实。根据这个规律,应当对错误群集的 程序段进行重点测试,以提高测试投资的效益。 严格执行测试计划,排除测试的随意性。 测试之前应仔细考虑测试的项目,对每一项测试做出周密的计划,包括被测 程序的功能、输入和输出、测试内容、进度安排、资源要求、测试用例的选择、 测试的控制方式和过程等,还要包括系统的组装方式、跟踪规程、调试规程,回 归测试的规定,以及评价标准等。对于测试计划,要明确规定,不要随意解释。 应当对每一个测试结果做全面检查。 有些错误的征兆在输出实测结果时已经明显地出现了,但是如果不仔细地、 全面地检查测试结果,就会使这些错误被遗漏掉。所以必须对预期的输出结果明 确定义,对实测的结果仔细分析检查,抓住征候,暴露错误。 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方 便。 2 2 自动化测试的概述 自动化测试 2 0 1 就是利用策略、工具以及产出等,减少人工介入到非技术性 ( u n s k i l l e d ) 、重复性( r e p e t i t i v e ) 、冗长( r e d u n d a n t ) 的测试活动里,从 而达到无人监守完成测试,并自动产生测试报告,分析测试结果等一系列活动。 自动化测试是一个专业领域,拥有一套自己完整的实施操作步骤流程。自动化测 试已经具有3 0 、4 0 年的发展经历,随着技术的进步,这个领域还在不断的自我完 善和改进。在西方国家( 美国、欧洲等) ,自动化测试有着非常庞大的研究机构和 协会,而我国最近1 0 来年才开始认识到其重要性,因此发展较为缓慢,技术比较 落后。 自动化测试在起步阶段是一项耗费人力物力而回报见效很微弱的工程,但如 果实施方法得当,自动化测试能增强软件测试的规范化和标准化;减少浪费在重 复性手工测试工作上的时间;创建优良可靠的测试过程,减少人为错误;增强测 试的覆盖率以及产品质量。然而,测试自动化不能完全代替手工测试,立即降低 测试投入,提高测试效率,保证1 0 0 的测试覆盖率,补偿劣质的测试过程。因 此,我们需要对自动化测试形成正确的认识,切不可好高骛远,脱离实际的认为 第二章自动化测试技术 实施了测试自动化,就可以克服从前的一切问题。 2 3 1 自动化测试的计划 2 3 自动化测试的设计 测试计划j 是高效测试的基础,自动化测试生存周期方法学( 枷m ) 中的测试 计划要素包含了测试所需的所有活动以及验证过程是否以有效方式组织和应用方 法学、技术、人员、工具和设备。图2 1 表示测试计划所包含的各方面的具体内 容。有效使用测试工具需要在测试计划和测试脚本时做大量的工作,测试计划需 要概要说明测试组的任务和职责、测试进度、测试设计活动、测试环境准备、测 试风险和偶发事件以及可接受的彻底测试的程度。测试计划附录可以包括测试程 序、命名规范说明以及测试程序与需求之间的步骤跟踪矩阵。同时,测试计划应 融合a t l m 各阶段输出的结果。a r l m 的测试计划阶段特别注重确定测试的文档, 编制能够达到的测试目的和支持测试环境的计划, 编制测试计划文档。 1 _ 测试环境准蔫酝冀”k 。一。_ 。 自动化测试决策i | l _ 一 自动化澍试歪鬃选型k , 一一一一j r 一一一一“1 。 测试辩隧叠i 卜+ ,+ 。 f 一一。一点。_ _ _ 二i 立_ _ _ _ 1 一 测试工具目 八过程f 一一。 测试度量曩_ | ;:i 丽舀嚣蠢压控1 p 测试霈求发其管理。 、缺陷跟踪与报告l r 一 、f 一_ 配鼹管理 、卜测试执行 。一 任务与职责 ! 、卜? 测试开发 测试努耩与设计 图2 1 测试计划图示 自动化测试也包含着种种复杂性,一个稳定的测试计划有助于分解测试的复 杂性,减少测试的风险。优秀的测试计划包括:以简单术语描述测试项目:计划 项目的日程安排;评估项目的风险;设置项目的沟通计划;确定项目的所需资源。 关键字驱动自动化测试系统的研究 2 3 2 自动化测试的策略 自动化测试的策略就是确定哪些测试实行自动化测试,以及何时采用自动化 测试。人们对自动化测试的一个误区就是将测试尽可能的实行自动化,并且越早 越好。通常的理解是,自动化测试程度越高,自动化测试工具的利用率越高,我 们从中获取的投资收益就越大。实际上,我们从自动化测试工具获得的收益应该 体现在测试质量上,而不是数量上,选择哪些测试实行自动化,如何开发执行测 试脚本,要比究竟多少测试实行自动化要重要的多。 实行自动化的测试通常分三个步骤: 1 提取适合自动化的测试。 2 评估每个自动化测试的时间消耗。 3 根据测试目标确定自动化测试的优先顺序。 首先,制订表格提取适合自动化测试的项目,这里的原则是挑选最能获得投 资回报的测试项。表现在:1 ) 最能缩短时间周期;2 ) 最能减少风险;3 ) 最能提 高测试精度。 自动化测试既不能解决软件测试中的所有问题,也不意味任何软件测试都可 以自动化。要成功地实现软件测试自动化,需要周密的计划和大量艰苦的工作, 软件测试自动化的开发人员首先必须清楚地认识到该自动化什么。以下几条可以 作为自动化软件测试的标准: l 、自动化回归测试 从软件测试自动化的目的知道,软件测试自动化所获得的好处来自于自动化 测试工具的重复使用,回归测试应该作为自动化的首要目标。软件自动化测试的 设计和开发人员应该自动化那些在每个软件再版都要进行的测试。也就是仅仅自 动化那些需要重复的测试,一次性的测试是不值得自动化的。 2 、自动化对稳定的应用进行测试 在自动化对某一个应用的测试之前,首先应该确定该应用是否稳定。对一个 在将来可能发生变化的应用进行自动化是没有必要的,因为该应用一旦改变,相 应的自动化测试代码就要随之改动,所以应该只自动化稳定应用的测试。 3 、自动化没有时间依赖性的测试 不要自动化与复杂的时间问题相关联的测试。自动化一个与复杂时间问题相 关的测试的工作量是自动化不具备时间依赖性的测试的工作量的许多倍。作为软 件测试自动化的开发人员必须清醒地认识到:如果一个测试很难自动化,那就应 该把它留给手工测试。1 0 0 的自动化并不是追求的目标,把一些过于复杂的测试 仍然用手工方式进行是合理的。 4 、自动化重复性测试 第二章自动化测试技术 如果一个测试经常重复使用,并且使用这个测试不方便,那么就应该考虑自 动化这个测试。 5 、自动化已经实现的手工测试用例 在对软件测试自动化前,通常已经有许多实现的、详细的手工测试用例,从 中选择可以自动化的手工测试用例进行自动化。 6 、合理限制自动化的范围 前面已经提到l o o 的自动化并不是追求的目标。过大追求自动化的范围只 会取得适得其反的后果。软件测试自动化的开发人员应该在一个合理的可以进行 自动化的范围内投入精力,在能力许可的情况下,再逐步扩大测试自动化的范围。 然后,评估自动化测试的时间。目前没有简单的数学模型判断自动测试和手 工测试的时间消耗比例。但是据估计,开发一个自动化测试的时间,是手工测试 的3 到l o 倍,对于复杂的测试,甚至更长。因此,初次实施自动化测试的时间消 耗,要比熟悉工具和测试流程后需要的时间更长,在评估自动化测试的时间消耗 时,一定要将其考虑在内。所以,一般挑选时间消耗比例大的测试优先实行自动 化测试。 最后,确定自动化测试的优先顺序。这里最重要的原则就是采用迭代的方式 确定自动化测试的执行顺序。首先确定每个迭代的目标,挑选最能获得投资回报 的测试,例如冒烟测试几乎总是能立即获得时间和资源上的回报;再挑选最容易 开发脚本、最容易理解的测试实行自动化,之后逐渐扩展并迭代。 2 3 3 自动化测试体系结构 从软件自动化测试的适用范围以及实现机制,可以总结出软件测试自动化的 几个关键要素: 要测试什么软件; 要被测试的软件的构件或者特征是什么; 被测软件系统的运行环境是什么: 被测试软件系统的对外提供的接口是什么: 数据的输入格式是什么以及结果的扑获 根据软件自动化测试的实现体制以及软件测试自动化中的关键要素,可以描 绘一个软件自动化测试的体系结构,并可以从以下两个方面对该体系结构进行描 述: 说明体系结构的各个要素以及要素之间的联系的结构描述。通过该结构描 述,可以说明自动化测试过程中信息及其控制、流动的情况。 关键字驱动自动化测试系统的研究 说明体系结构中事件流顺序的描述。通过该描述,可以知道什么事件在 何时启动了什么过程。 可以用图2 2 说明这两个方面描述的软件自动化测试的体系结构: 图2 2 自动化测试体系结构 2 4 自动化测试工具 基于图形用户界面的自动化测试工具在软件测试自动化领域发挥着巨大的作 用。在测试人员运行应用程序的同时,通过测试工具将他所有动作,包括键盘操 作,鼠标点击等操作捕获下来,生成一个脚本文件,这个脚本后续可以被“回放”, 即将上一次的所有操作重复执行一边,实现自动运行和测试。在实际测试工程中, 需要根据测试需求对脚本进行一些必要的修改,如选择不同的测试数据,插入检 查点进行跟踪调试等。 自动化测试工具具有如下一些特征: l 、支持脚本化语言 自动化测试工具支持脚本化的语言,例如v b 、c 语言等,脚本语言功能越强 大,就越能够为测试开发人员提供灵活的使用空间,而且有可能一个复杂的语言 写出比被测软件还要复杂得多的测试系统。 2 、对程序界面中对象的识别能力 自动化测试工具能够将程序界面中的所有对象进行区分并标识,这样脚本文 件才能具有更好的可读性,更高的灵活性和更大的修改空间。如果只支持通过位 置坐标来区分对象,它的灵活性就差多了。自动化测试工具不仅要识别使用通用 开发工具( 如d e l p h i ,m f c 等) 编写的程序界面内的所有元素,而且还应该尽量 多的识别那些使用不太普及的开发工具或库函数编写的程序界面。 3 、支持函数库 自动化测试工具应能够支持功能强大的函数库,确保脚本能够容易的实现对 函数的调用;同时,还要支持脚本与被调函数之间的参数传递。除了被测系统建 立库函数外,一些外部函数同样能够为我们的测试提供强大的功能,如w i n d o w s 程序中的d l l 文件的访问,c l i e 甜s e r v e r 程序中对数据库编程接口的调用等。 第二章自动化测试技术 4 、抽象层 抽象层用于将程序界面中存在的所有对象实体映射成逻辑对象,从而减少测 试维护工作量。同时,脚本执行时通过抽象层会自动使用新的对象标识。多数软 件界面采用自动搜索,建立对象的抽象层,也可以采用手工建立或进行一些定制。 5 、分布式测试的支持 一个软件测试项目通常需要多名测试人员协同工作,尤其在自动化测试中, 测试任务要同时打开一个文件时,会出现资源竞争问题,因此,如果测试工具不 支持测试,将很难保障这种协同测试工作的开展。分布式测试的最大好处是可以 事先执行的时间表,如在指定时间,指定设备上执行指定测试任务。 6 、错误处理 对于可以自动执行的测试任务,通常我们会在上班时间将任务制定好,下班 后启动任务执行,第二天上班在检查测试执行的结果。但是,经常会出现本来需 要执行的测试才执行了几分钟就因为异常错误而终止了,而且这种情况经常发生。 因此,测试工具应具有良好的错误处理系统,在错误出现时,跳过错误,运进行 相应的错误处理程序,然后继续执行下面的任务。 7 、调试器 调试器在自动化测试系统中的作用与软件集成开发环境中的作用类似,可以 有效地对测试脚本的执行进行跟踪核对,迅速定位问题。通常,调试器与测试环 境集成在一起,支持脚本的单步运行、设置断点、核对变量返回结果等。 b 、源代码管理 源代码管理不但对软件开发系统来说时很重要的,对自动化测试管理过程同 样重要。它可以帮助测试人员进行测试脚本库的导入、导出以及同时对几个项目 进行跟踪等。还可以对测试数据文件、测试脚本、对象层进行统一管理,给测试 工作带来很大的便利。 9 、支持脚本的命令行执行方式 如果能够通过命令行方式运行测试脚本,可以为测试的执行带来更大的灵活 行。如计算机启动时,程序b u i l d 后都可以自动启动测试脚本进行执行。 2 5 自动化测试的优缺点 - 自动化测试有许多优点: 1 对新版本运行回归测试,提高测试覆盖度,缩短测试时间。 2 可运行更多更频繁的测试。可以在较少时间内运行更多的测试:在多个平 台上的测试能够同时进行。 3 可执行一些手工测试困难和不可能做到的测试。例如,同时模拟2 0 0 个用 关键字驱动自动化测试系统的研究 户登陆网管系统,手工测试不可能模拟出来。 4 更好的利用资源。利用自动化测试无人职守的功能,可以有效利用现有资 源完成更多的测试,也是对测试成本的一种有效降低。 5 提高测试的复用性。 6 可以更快速的将产品发布到市场。 7 增加软件的信任度。一旦得知软件通过强有力的自动化测试后,客户会很 容易提升对产品的信任度。 - 自动化测试也在在缺点: 1 自动化测试不会比手工测试发现更多的缺陷。让工具做什么,是预先定义 好的,自动化测试不会类似智能化的帮助人发现更多的潜在问题,如果想 发现更多产品的缺陷,必须手工测试检查。 2 自动化测试在产品频繁变更的条件下的维护代价会很高。通常我们需要评 估在这种情况下是否还有必要和值得从事自动化测试。 3 通过自动化没有发现缺陷并不代表系统便没有缺陷。自动化测试的效率和 质量依赖于手工测试用例的质量,没有发现任何问题,并不表示真的没有 问题,自动化测试本身不会改进产品质量。 4 自动化测试对环境的依赖性要远远大于手工测试。在一个时时变更的环境 下是没有办法较好的实现自动化测试的。 5 自动化测试对于流程的要求也要远远大于手工测试。在一个不规范的或经 常变更的管理模式下,我们要对自动化的测试结果保持足够高的警惕性。 6 自动化测试对测试工程师的技能要求要比手工测试更高。需要测试工程师 不仅具有敏锐的观察力,还要同时具有足够的脚本编程能力,在一定程 度上加大了可自动化的难度。 7 对工具的依赖性较高。自动化实薤的好坏在很大程度上要依赖于我们所提 供的工具的功能和灵活性,一套好的自动化工具和架构可以很大的加速自 动化速度,然而因为工具选择问题最后自动化失败的例子比比皆是。 2 6 小结 本章介绍了自动化测试技术,包括软件测试和自动化测试的基础知识、自动 化测试的设计、自动化测试工具和自动化测试的优缺点。通过本章的介绍,我们 对自动化测试有了基本的认识,为后续章节介绍基于关键字驱动的自动化测试系 统的实现作了理论铺垫。 第三章自动化测试脚本技术 第三章自动化测试脚本技术 3 1 自动化测试脚本技术介绍 自动化测试脚本【2 4 】是交互应用或部分非交互应用的测试自动化中必要的组成 部分。自动化测试脚本需要包含必要的数据和指令是可以在测试平台上直接运行 的可执行代码。自动化测试脚本的编写其实就是编程设计,一个测试事例可以包 含多个测试脚本,同样,一个测试脚本也可以执行多个测试用例。从图3 1 可见, 虽然高级结构化脚本建立开销较大,但随着脚本使用的增加,其后续维护开销远 远低于简单脚本的维护开销。因此,自动化测试脚本的好坏直接关系到了自动化 测试的总开销。自动化测试脚本中的数据和指令包括: 同步( 何时进行下一个输入) ; 比较信息( 比较什么,如何比较以及和谁比较) : 捕获何种屏幕数据以及存储在何处: 从另一个数据源读取输入数据时从何处读取( 文件数据库及设备1 ; 控制逻辑信息( 例如,重复一组输入或根据输出值进行判断) : 建崴歼销 图3 1 脚本开销示意图 雏护扦铺 关键字驱动自动化测试系统的研究 3 2 自动化测试脚本设计 3 2 1 脚本设计的衡量标准 一般来说,衡量自动化测试脚本设计是否优良的衡量标准有以下几个方面: ( 1 ) 可维护性:指是否可以很容易使测试更新跟上软件升级的步伐。软件会变更或 升级是注定的事实,防止变更或升级造成自动化测试的维护工作量过大是很重 要的,否则整个测试自动化工作将可能被全面否决,甚至束之高阁。 ( 2 ) 高效性:效率是与成本紧密联系的,自动化测试的一个重要目标就是更经济地 运行测试。所以应该在测试和测试自动化的设计阶段全面审视各方面因素。在 科学合理的测试流程基础上利用优秀的自动化策略将自动化测试与手工测试 有机结合,才能实现效率最大化。 ( 3 ) 可靠性:指测试体制是否能给出精确而且可重现的结果。 ( 4 ) 兼容性:指是否允许测试用例为不同的测试目标而以不同的方式组合。 ( 5 ) 可用性:指定制或更改测试用例是否容易,测试人员或用户掌握和理解其使用 方法是否容易。 ( 6 ) 健壮性:指是否可以处理意外情况,而无需退出或终止测试,并尽力给出正确 有用的信息。 ( 7 ) 可移植性:只在不同平台上运行测试的能力。 这7 个衡量标准是相互制约的,因此,我们在设计自动化测试脚本时应根据软 件的特性综合考虑这7 个方面,有针对性的提高自己关注的衡量标准以实施符合 实际需要的自动化测试。 3 2 2 脚本设计的原则 自动化测试虽然带来许多的好处,但必须注意到随着软件的不断升级,自动 化脚本的维护工作量急剧增加。因此,在实施自动化测试的初期应对脚本进行精 心的设计,以减少自动化测试脚本的创建和维护的开销。一般来说,自动化测试 脚本设计应遵循以下原则: 1 完善齐备的注释;为用户和管理者提供帮助。 2 灵活和周密设计的功能:执行单个任务且可以熏复执行和重用。 3 良好的设计结构;应易读,易理解和易维护。 4 健全的文档;有助于复用和将来的维护。 5 全部运行支持机制;要保证所开发的所有脚本可以合并在一起运行成功。 6 独立运行支持机制:要保证每个脚本都可以单独运行尽量减少脚本之 第三章自动化测试脚本技术 间的依赖性和关联性。 表3 1 从测试脚本的不同属性对测试脚本的好坏进行了详细的对比。 表3 1 测试脚本比较 属性好的测试脚本差的测试脚本 脚本数量少( 少于一个测试事例一个脚本)多( 至少个测试事例一个脚本) 脚本大小小( 包括注释,不超过两页)大( 许多页单个脚本) 功能每个脚本有个明确单一的目的执行许多功能,甚至是整个测试事例 文档提供给用户或管理者的文档清晰,简洁无文档或文档不更新内容不详细 及时更新许多脚本可以完成不同脚本 复用性不好。每个脚本只能使用于单 复用性 的测试事例 个测试事例 结构易于理解因此容易修改。根据良组织混乱。修改困难,意大利面条式 结构化 好的编程经验,合理组织控制结构的代码 易于维护,软件变化只需对少数脚本做 较小的软件变化需要较大的脚本修 维护性 较小的修改改,修改脚本比较困难 通过对比可以看出,好的脚本设计在上述所列举的各种属性中都优于差的测试脚 本。由于上述属性,尤其是在复用性、结构化和维护性上对测试系统效率的影响 非常明显,因此,好的脚本设计对自动化测试系统是十分重要的。 3 3 自动化测试脚本 自动化测试脚本是自动化测试的核心部分,脚本编写的好坏直接关系着整个 测试用例的安全性,健壮性和可移植性,因此其按照实现方式和技术可以分为不 同的类型。通常的脚本可以分为以下几种:线性脚本、结构化脚本、共享脚本、 数据驱动脚本和关键字驱动脚本。下面将详细介绍这几种脚本技术。 3 3 1 线性脚本 线性脚本是通过测试工具进行录制手工执行的测试事例得到的脚本。这种脚 本包含了所有手工测试的操作步骤,如击键、功能键、箭头、控制测试软件的控 制键及输入数据的数据键等等。如果用户只使用线性脚本技术,即录制每个测试 用例的全部内容,相当于通过自动化测试工具去模拟手工测试步骤,则每个测试 事例可以通过脚本完整的被回放。线性脚本也可能包括比较,录制测试事例时, 可以添加比较指令或在回放脚本录制的输入时增加比较指令( 注:当增加比较指 关键字驱动自动化测试系统的研究 令时,往往手工运行1 0 分钟的测试事例,可能需要2 0 分钟或2 个小时的时间对 所录制的脚本进行编辑修改来保证对脚本的完整回放) 。 - 线性脚本的优点: 1 线性脚本不需要深入的工作或计划,只需坐在计算机前利用自动化测试工 具录制手工测试任务即可。 2 线性脚本可以快速开始自动化,测试工程师只需理解测试流程即可开展自 动化测试工作,同时也是树立测试工程师开始对自动化感兴趣最快速的方 法和技术。 3 线性脚本对实际执行操作可以进行审计跟踪。 4 使用线性脚本技术,用户不必是编程人员( 假设不需修改脚本,用户不必 关心脚本本身) 。 5 线性脚本提供良好的演示效果。 - 线性脚本的缺点: 1 过程繁琐:产生可行的自动化测试( 包括比较) 的时问比运行手工测试要 长2 到1 0 倍。 2 一切都依赖于每次测试所捕获的内容。 3 测试输入和比较,以及测试的数据和业务都是捆绑在脚本中的,不便 于修改测试数据和测试步骤。 4 脚本不能共享和重用。 5 由于线性脚本要求测试的对象相对比较的固定,因此容易受软件变化的影 响。 6 线性脚本修改代价大( 维护成本高) 。 7 如果回放脚本时发生了录制脚本时没有发生的事情,如来自网络的意外错 误消息,脚本很容易与被测试软件发生冲突,引起整个测试失败。 - 线性脚本的适用范围: 1 当测试事例只使用一次时,则无需对将要丢弃的脚本花费太多的功夫,线 性脚本便非常方便使用。 2 ,线性脚本适合在做培训或演示时,可以回放录制好的脚本来代替击键动 作。 3 线性脚本可以用于转换。如系统的某一部分发生变化,但从用户的角度不 能影响系统的工作,可以录制有用数据,替换软件或硬件,然后回放录制 过程可以使新系统恢复到初始状态。 4 线性脚本可以用自动编辑来修改自动测试,任何特定的修改只做一次,因 此一次性的脚本足以满足需求。 5 线性脚本可用于设置和清除测试,通过回放输入序列操作文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地暖验收知识培训总结
- 性育儿知识培训总结课件
- 实体店运营培训知识总结
- 浓情端午共话家园课件
- Nalmefene-Sulfate-d3-生命科学试剂-MCE
- Cy7-HA-biotin-5000-生命科学试剂-MCE
- 南京大学金陵学院《安全监控与测试技术》2024-2025学年第一学期期末试卷
- 安徽矿业职业技术学院《建模设计》2024-2025学年第一学期期末试卷
- 医疗器械配送应急预案模板(3篇)
- 济源消防知识培训方案课件
- 管道吊装方案范本
- 人事经理工作汇报
- 水质分析 题库及答案
- 2025-2030中国消费电子产业创新趋势及市场需求与投资回报分析报告
- 2025年广东省中考物理真题(含答案解析)
- 四川省自贡市2024-2025学年八年级下学期期末物理试题(含答案)
- 2025年土木工程建筑技能考试-工程造价技能大赛历年参考题库含答案解析(5套典型题)
- 2025年初中物理教师教材教法考试测试卷及参考答案(共三套)
- 2025年有限空间作业专项安全培训试题及答案
- 基于人工智能的产前诊断技术应用探索-洞察及研究
- 两性健康项目合作
评论
0/150
提交评论