(计算机应用技术专业论文)bs结构软件自动化测试的研究与实践.pdf_第1页
(计算机应用技术专业论文)bs结构软件自动化测试的研究与实践.pdf_第2页
(计算机应用技术专业论文)bs结构软件自动化测试的研究与实践.pdf_第3页
(计算机应用技术专业论文)bs结构软件自动化测试的研究与实践.pdf_第4页
(计算机应用技术专业论文)bs结构软件自动化测试的研究与实践.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(计算机应用技术专业论文)bs结构软件自动化测试的研究与实践.pdf.pdf 免费下载

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

文档简介

中文摘要中文摘要软件测试属于软件工程的范畴,对于软件开发在经济、效率、维护方面有巨大的帮助作用,自动测试更是改进了软件测试的经济性、效率性和维护性,对软件工程给予有力的支持和帮助。实施软件测试自动化,对于大数据量的测试以及性能测试、压力测试等测试内容都有不可低估的作用。随着i n t e m e t 的日益普及,基于b ,s 结构的大型应用软件越来越多,如何应用自动化测试工具对这些应用程序进行自动测试成为日益迫切的问题。本文首先介绍了软件测试以及软件自动化测试的基本知识和内容,然后从自动化测试的角度分析了b s 结构软件的特点,对b s 结构软件自动化测试的流程、技术、方法等进行了深入研究和探讨,最后结合两个自动化测试工具给出了完整的自动化测试范例。两个自动化测试工具分别是美国m e r c u r y 公司的功能测试工具q u c i k t e s tp r o f e s s i o n a l8 2 和性能测试工具l o a d i u n n e r7 8 。关键词自动化测试b s 结构软件测试工具a b s n a c ta b s t 阳c ts o f t w a r et e s t i n gb e l o n g st o 廿l er a n g eo fs o f t 、a r et e c h i l 0 1 0 9 y ,a 1 1 dh a sm a d en _ e m e n d o l l s l yi m p a c tt o 也es o f t w a r cd e v e l o p m e n t n 蚯毫c t sm a n ya s p e c t so fs o f e w a r ed e v c l o p m e m ,s 1 1 c h 弱e c o n o m y ,e 伍c i e n c y ,m a i n t e n a n c ea 1 1 ds oo n a u t o m a t e dt e s t i n gi m p r o v e so nt l l ee c o n o m i c s ,e 伍c i e n c ya n dm a i n t e n a n c eo ft l l es o f t w a r ct e s t i l l g ,廿1 e r e f o r ep o w e r f m l ys u 珥o n s 也es o f t w a r et e c h l l o l o g 弘ht l l ea r e ao fh u g ei n f o m a t i o nt e s ta n dp r e s st e s t ,a u t o m a t e dt e s 血gw i l lb r i n ga ne b c tw i l i c hc a n n o tb em l d e r e 鲥m a t e d b e c a u s eo f t l l e 晰d e l yu s eo f t h ei n t e m e t ,m o r ea n dm o r el a r g e s c a l ei n t e m e t 印p l i c a t i o n sa r eb a s e do n 王l ss 帆j c n l r e ,s oh o wt 01 l s e 也ea 眦o m a t c dt e s t i i l gi m p l e m e n t st e s tt h e s e 岫e ta p p l i c a t i o n sh a sb e c o m ev e r yn e c e s s i t o l l s i n 血i sa r t i c l e ,丘r s t l yii i 血o d u c et h ee s s e n t i a lc o n t e ma n df c a t i 】r eo f 吐【es o f h a r et e s 血ga n da u t o m a t e dt e s 血g s e c o n d l y ,id i s c l l s st h cc h a r a c t e 商m co f 也eb ss o f t w a r e 自o mt h ev i e wo fa u t o m a t e dt e s 畦n g s p e c i a l l y 觚a l y z et h ef l o w ,t e c l l l l i q u ea n dm e a s u r eo ft h ea u t o m a t e dt e s t i n go ft l l eb ,ss o f t 、a r e f i n a l l y l l s i n gt w oa u t o m a t i cs o f t 眦t e s t i 】唱i m p l e m e n 乜,i 百v et h ec 锄p l e t ea i | _ t o m a 虹cs o r w a r et e s t i l l g笛a ne x 锄p l e t h e s et w oi m p l e m e 佻a r e 吐圯叫出r e s tp r o f e s s i o n a l8 2a 玎di ,o a d r 】n e r7 8 ,l 【e y w o r d :a m o m a t e dt e s 吐n gb ss o r w a r et e s t i n gi m p l 锄e m11111jlj1内容目录图2 1 软件测试的测试过程图目录图3 1b ,s 结构软件的三层体系结构图3 2 日临软件的自动测试流程图3 3b u g 跟踪流程图图4 1 缺陷管理系统结构图图4 2 缺陷管理系统的组成图4 3 功能测试流程图6图44性能测试流程图一3l图4 5 压力测试流程图图4 6 集合图图4 7 负载下的事务响应时间图4 8 用户并发图图4 9 事务响应时间概要图4 1 0 负载下的事务响应时间图4 1 l 用户、吞吐量和点击率关系图坞侈丝”勰如配钉钉箍钞钞卯内容目录图4 1 2 运行用户与系统资源关系图图4 1 3 摘要图4 1 4 网页细分图4 1 5 页面组件细分图4 1 6 页面下载时间细分卯船斛钳弱内容目录表目录表2 1 黑盒测试和白盒测试的比较8表41检查点分类37表4 2 添加缺陷测试结果统计表4 3 不同并发用户下的事务响应时问v i 4 55 2第一章引言1 _ 1 1 论文背景第一章引言第一节论文背景介绍和问题提出随着以计算机技术、通信技术和网络技术为代表的信息技术的飞速发展,人类已经进入信息时代,在这个时代,计算机软件产品已经应用到社会的各个领域“1 。作为计算机的灵魂,软件在其中起着举足轻重的作用。软件的失效有可能造成巨大的经济损失,甚至危及人的生命安全。例如,1 9 9 6 年a r i a n e5 运载火箭的发射失败等都是由软件故障引起的。“”。软件测试就是在软件投入运行前,对软件需求分析、概要设计、详细设计和编码的最终复审,是软件质量保证的关键步骤。忽略产品测试开发出来的产品,质量难以得到很好的保证,很多产品在正式交给用户使用后总是产生诸多问题,最重要的原因就是软件开发的管理水平不高,尤其是一直以来忽视了对软件产品进行必要和充分的测试。随着软件危机的不断出现以及人们对软件本质的进一步认识,软件测试的地位得到了前所未有的提高。测试已经不仅是软件开发中的一个阶段,而且贯穿于软件开发的整个过程。人们也认识到:在软件开发过程中,测试开始的时间越早,测试执行的频率越高,整个软件开发成本降低得越多旧。另外随着软件开发规模的扩大、复杂程度的增加,软件测试工作也越来越重要,其工作难度越来越大。软件测试技术的自动化是软件测试的发展趋势之一,它能完成许多手工测试无法实现或难以实现的测试。让测试人员从繁琐和重复的测试活动中解脱出来,专心从事有意义的测试设计等活动。采用自动比较技术,还可以自动完成测试用例执行结果的判断,从而避免人工比对存在的疏漏问题。设计良好的自动化测试;在某些情况下还可以实现“夜间测试”和“无人测试”嗍。在大多数情况下,正确、合理地实施自动化测试,能够快速、彻底地对软件进行测试,从而提高软件质量,节省经费,缩短产品发布周期0 3 。第l 页第一章引言1 1 2 当前自动化测试中存在的普遍问题虽说软件测试自动化已经成为国内软件工程领域一个众所周知的课题,软件测试从业者也都意识到软件测试这项工作走向成熟化、标准化的一个必经之路就是要实施自动化测试。1 。但是不可否认的是,在国内,软件测试的自动化仍然处于起步阶段,从对自动化测试的技术和实践层面来看,仍存在很多问题。1 ) 没有一套完整的自动化测试规范来指导测试实践虽然目前具有了一定自动化测试实施经验的企业陆续出现,但对如何组织和开展自动化测试,却没有形成一套合理的实施程序和标准来进行约束和规范。如何根据需求分析来制定测试计划,测试计划应该包括哪些内容,应该明确什么问题,并没有形成统一的意见;自动化测试的测试流程应该如何设计,测试用例如何规划,脚本设计应该注意什么问题,测试数据应该依据什么进行选取,也没有什么理论依据,很多时候都是根据测试人员的经验和想法自行决定,测试时可操作性不强,测试目的不明确,测试方法不科学等情况时有发生,而且往往还会出现重复测试、盲目测试等问题,严重影响自动测试的效率,不能充分发挥自动测试的优点。2 ) 对自动化测试的相关技术问题不够重视软件的自动化测试并不仅是简简单单的使用测试工具,还需要有良好的测试流程、全面的测试用例配合脚本的编写,如果对测试工具的了解缺乏广度和深度,必将导致工具使用效率低下,结果不理想。采用厂家提供的自动化测试工具时,由于厂家对客户的应用缺乏足够理解,很难提供强有力的技术支持和解决具体问题的能力,因此需要测试人员在使用过程中很好的将自动测试工具和被测试对象软件产品或系统结合起来,熟悉工具产品的特性和应用领域、熟悉测试流程和编程技术,能够根据技术环境的不断变化,不断改善测试策略和方案,实现测试工具使用的最优化。另外,自动测试也需要一定的手工测试经验,如果缺乏实践经验,测试组织不力,文档较少或不一致,测试发现缺陷的能力差,那是不可能发挥自动测试的效率的。“”1 。3 ) 没有形成一个良好的测试工具使用环境测试工具应用环境需要测试流程和管理机制做出相适应的变化,只有这样,测试工具才能真正发挥作用。例如,对于基于g u i 录制回放的自动测试来说,产品界面的改变对脚本正常运行影响较大。再者,白盒测试工具一般在单元测第2 页第一章引言试阶段使用,多数公司单元测试是由开发人员自己完成的,如果没有流程来规范开发人员的行为,在项目进度压力比较大的情况下,开发人员很可能就会有意识的不使用测试工具来逃避问题。所以,有必要将测试工具的使用在开发和测试流程中明确,如在项目各个阶段所提交的文档中必须包含某些测试工具生成的报告等,以此来保证良好的测试工具使用氛围4 1 。4 ) 其他一些组织和管理上的问题第一,对自动测试期望过高,认为自动测试可以解决面临的所有问题。必须明确自动化测试初期是需要花费比较大的成本开支的,并且自动化测试方案也不能解决所遇到的所有问题,当自动测试工具没有发现被测软件的缺陷时,要分析甄别,因为没有发现问题也有可能是由于测试工具本身不够全面或测试的预期结果设置不对造成的,测试人员对此必须有安全上的意识和能力。第二,测试工具引入盲目。不同的测试工具面向不同的测试目的,具有各自的特点和适用范围,所以不是所有优秀的测试工具都能适应不同目的的需求。第三,测试管理一片混乱。虽然实施了自动化测试,然而开发与测试之间,甚至与项目经理之间矛盾重重,出了事情不知如何追究责任。自动化测试虽然能勉强维持,但实旄成本比手工的还要大,工作量比从前更大4 “。第二节论文的结构安捧第二章简要介绍了软件测试的目的、原则、过程及方法,同时针对自动化测试,着重讨论了建立完善、高效自动化测试的一般过程和分析方法,最后对目前常见的几款自动化测试工具进行了简要介绍。第三章对基于b s 结构的软件自动化测试进行了研究和探讨。分析了b s结构软件进行自动化测试的可行性以及自动测试所面临的主要问题,对b s 结构软件自动测试的流程进行了设计,对其中需要重点注意的问题如测试计划文档、测试用例文档以及b u g 管理报告等进行了研究和分析,对自动测试过程中需要着重解决的脚本和数据设计问题提出了明确的解决方案。第四章结合机器智能研究所自行研发的基于b s 结构的缺陷管理系统( b m s )进行自动测试实践,利用m e c u r y 公司的功能测试自动化工具q u i c k t e s tp r o f e s s i o n a l8 o 和性能测试自动化工具l 。a d r u n n e r7 8 ,按照笔者在第三章提出的问题解决方法进行部分的功能和性能测试,对第三章所阐释的理论的方第3 页第一章引言法进行执行和验证。第五章进一步总结了自己工作的主要内容和意义,同时对自动化测试的未来发展进行了展望。第4 页第二章自动化测试的基本方法和工具第二章自动化测试的基本方法和工具第一节软件测试的基本知识2 1 1 软件测试的目的和原则简单地说,测试的最终目的是确保最终交给用户的产品的功能符合用户的需求,把尽可能多的问题在产品交给用户之前发现并改正。在可接受的开销下,提高对软件的信心。具体地讲,测试一般要达到下列目标“”“”:1 ) 确保产品完成了它所承诺或公布的功能所有用户可以访问到的功能都有明确的书面说明一一在某种意义上与i s 0 9 0 0 0 是同一种思想。书面文档的不健全甚至不正确,也是测试工作中遇到的最大和最头痛的问题,它的直接后果是测试效率低下、测试目标不明确、测试范围不充分,从而导致最终测试的作用不能充分发挥、测试效果不理想。2 ) 确保产品满足性能和效率的要求使用起来系统运行效率低( 性能低) 、或用户界面不友好、用户操作不方便( 效率低) 的产品不能说是一个有竞争力的产品。用户最关心的不是你的技术有多先进、功能有多强大,而是他能从这些技术、这些功能中得到多少好处。也就是说,用户关心的是他能从中取出多少,而不是你已经放进去多少。3 ) 确保产品是健壮的和适应用户环境的健壮性即稳定性,是产品质量的基本要求,尤其对于一个用于事务关键或时间关键的工作环境中。另外就是不能假设用户的环境( 某些项目可能除外) 。测试的原则我们一般称之为g o o d e n o u g h 原则,这是一个权衡投入产出比的原则,即不充分的测试是不负责任的,过分的测试是资源的浪费,同样也是不负责任的。我们的操作困难在于:如何界定什么样的测试是不充分的,什么样的测试是过分的。目前状况唯一可用的答案是:制定最低测试通过标准和测试内容,然后具体问题具体分析。对于相对复杂的产品或者系统来说,z e r ob u g 是一种理想,g o o d e n o u g h 是我们的原则。第5 页第二章自动化测试的基本方法和工具2 1 - 2 软件测试过程叶”1软件测试是由一组活动组成,这些活动能够预先被规划和以系统方式完成。由于软件开发的最小单位是单元模块,因此软件测试是从模块级( 单元) 测试开始,对于单元测试通过的模块可进行各模块之间的联合( 集成) 测试,对被集成的软件进行确认测试,对被确认的软件进行整个( 系统) 测试,最后进行验收测试。测试过程如图2 1 所示n 5 1 。图2 1 软件测试的测试过程1 单元测试单元测试是软件测试最基本的组成部分,它是对软件设计的最小单位( 程序模块) 进行正确性检查的测试工作,其目的在于发现各模块内部存在的各种差错。单元测试的内容包括:模块接口的数据流测试;局部数据结构的测试;模块中重要的执行路径;错误处理测试:边界测试。单元测试要点是进行单元模块所有数据项的正确性、完善性测试。主要关注模块的算法细节和模块接口间流动的数据,检查所操作的数据库表各字段数据存储信息的正确性、完善性( 位数、长度、正确与否) 及表中状态的正确性。2 集成测试集成测试是在单元测试的基础上,需要将所有模块按照设计要求组装成系统。集成测试有一次性成型的拼装和渐增式组装两种方式。集成测试的内容包第6 页第二章自动化测试的基本方法和工具括:把各个模块连接起来,检查穿越模块接口的数据是否丢失:一个模块的功能是否会对另一个模块的功能产生不利的影响;各子功能组合起来能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。集成测试要点是进行子功能模块子系统的业务逻辑流程正确性、完善性测试。3 确认测试确认测试又称有效性测试。它的任务是验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试的内容包括:在模拟环境( 开发环境) 下,运用黑盒测试的方法,验证所测软件是否满足需求规格说明书列出的需求;保证软件配置所有成分都齐全,各方面的质量都符合要求,具有维护阶段所必须的细节。确认测试通常使用清数据库测试法,即首先清数据库,由一个用户( 或测试人员) 在开发环境下的测试,也可以是在模拟实际操作环境下进行的测试。4 系统测试系统测试是将测试通过确认的软件作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行( 使用) 的环境下,对计算机系统进行一系列的集成测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方,它是对系统正确性、完整性的测试。5 验收测试验收测试旨在向软件的购买者展示该软件系统满足其用户的要求。它的测试数据通常是系统测试数据的子集。所不同的是,验收测试常常是在用户参与的情况下进行,这是投入使用前的最后测试。2 1 - 3 软件测试的方法从是否需要执行被测软件的角度,可以分为动态测试和静态测试。静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,为测试用例选取提供指导。动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果“。第7 页第二章自动化测试的基本方法和工具从测试是否针对系统的内部结构和具体实现角度,分为黑盒测试( 功能测试) 和白盒测试( 结构测试) 。黑盒测试不考虑程序的内部逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。白盒测试是利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试“。在规划测试方式时,通常需要把黑盒测试与白盒测试结合起来进行。表2 1 给出了黑盒测试和白盒测试两种方法的对比“”。表2 1 黑盒测试和白盒测试的比较 据程序的肉韶结构,掘 j 句自盘澍试2 i :2 蠡i 2 2 i试j譬譬翌鬈差鎏冀警程宝笠称南结构甜试或逻辑驱动谢试,震室舞譬慧裴鐾崔莹兰篓蕃揣黼拦嚣盏:蘩窭量集葛蠢塞罂謦妻j ! 磊釜盖:墨菇蕃越鼍篓亭籼罂箩怠窭袅黔菜鬲溅? 黼翟扩一测试聩批分避抒潞试1 “”“? 从软件测试过程中人的参与角度,可以分为手工测试和自动化测试。手工测试是采用人工的手段对软件实旖的测试,它是相对自动测试而言的,测试中主要是测试人员根据一些成熟的软件设计规则对软件的正确性进行检查,检验所进行的设计是否能满足需要。自动化测试是一项让计算机代替测试人员进行软件测试的技术,它对程序的回归测试更方便,可以运行更多更繁琐的测试,能够更好地利用资源,执行一些手工测试困难或不可能进行的测试,增加软件信任度,让产品更快面向市场。第二节自动化测试的基本方法和流程一个完整的自动化测试通常应该包括以下过程:测试需求分析和计划、选择自动化测试案例、计划和组织脚本开发、设计测试数据、运行测试脚本、测试评估和报告。1 测试需求分析和计划第8 页第二章自动化测试的基本方法和工具熟悉被测软件的系统平台及设置,应用目标和需求,决定测试内容,分析测试策略,决定采用的测试技术,对技术可行性进行研究,详细分析测试方法,定义各具体测试流程,提出测试方案,设计或选取适当的自动化测试工具。1 。2 选取自动化测试案例对测试案例进行区分,有些测试案例可以被自动化,有些测试案例根本不能被自动化,另外有一些案例虽然可以但完全没有必要被自动化,然后再选取当前最适合自动化的测试案例,分阶段实施。通常来说,下面测试案例最适合被首先自动化”:1 ) 重要的测试案例2 ) 对主要功能的测试案例3 ) 容易自动化的测试案例4 ) 很快有回报的测试案例5 ) 运行最频繁的测试案例3 计划和组织脚本的开发简单的捕获回放并非测试自动化。测试工具录制产生脚本是不能直接使用的,必须在此基础上采取添加判断和循环等控制结构、提取公用代码以供复用、采用数据驱动策略使脚本和数据分离等措施。因此,开发自动化脚本并非像想象那么简单,必须按照软件工程的方法对脚本开发进行计划和组织,这样才能使开发出来的脚本真正实用。4 设计测试数据应该对测试数据的来源进行统一规划,决定各种测试数据是来自文件、数据库还是测试工具提供的其它来源,并且组织人力对存取测试数据的代码进行模块化,使得测试工程师对测试案例进行自动化时可以专注于案例本身,而不必太过于分神存取各种不同来源的测试数据。更为重要的是,测试自动化的质量严重依赖于测试案例和测试数据本身的质量。因此,采用划分等价类、确定边界值等传统测试技术对设计测试数据是很有必要的o “。5 运行测试脚本启动测试工具执行测试脚本,根据运行情况对被测软件、测试脚本进行适当修改,并将结果保存在文件中。6 测试评估和报告测试报告是把测试的过程和结果写成文档,并对发现的问题和缺陷进行分第9 页第二章自动化测试的基本方法和工具析,为纠正软件中存在的质量问题提供依据,同时为软件验收和交付打下基础。测试脚本执行后,根据结果收集测试数据、评估测试工作,以确定是否满足测试停止条件。若满足,则撰写测试报告;否则,追加测试用例,继续进行测试。测试报告要突出四方面的内容:测试的一般信息、测试结果和结论、软件功能结论和系统的测试分析啪1 。第三节自动化测试常用工具介绍2 3 1 自动化测试工具的分类自动化测试通常借助自动测试工具进行,目前主流的测试工具主要有以下几类:1 负载压力测试工具这类测试工具的主要目的是度量应用系统的可扩展性和性能,是种预测系统行为和性能的自动化测试工具。在实旎并发负载过程中,通过实时性能监测来确认和查找问题,并针对所发现问题对系统性能进行优化,确保应用的成功部署。负载压力测试工具能够对整个企业架构进行测试,通过这些测试,企业能最大限度地缩短测试时间,优化性能和加速应系统的发布周期。2 功能测试工具通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先给定的标准结果比较。功能测试工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版本的功能进行测试,提高测试人员的工作效率和质量。其主要目的是检测应用程序是否能够达到预期的功能并正常运行。3 白盒测试工具白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级。根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接和生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。动态测试工具一般采用“插桩”的方式,在代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。第l o 页第二章自动化测试的基本方法和工具4 测试管理工具一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且测试管理工具还包括对缺陷的跟踪管理。测试管理工具能让测试人员、开发人员或其他的i t 人员通过一个中央数据仓库,在不同地方就能交互信息。5 测试辅助工具这些工具本身并不执行测试,但可以辅助其它测试工具进行测试。例如它们可以生成测试数据,为测试提供数据准备。2 3 2 常见测试工具介绍1 r a t l o n a lr 0 b o ti b m 软件集团旗下品牌,可以执行完整的功能测试和性能测试,帮助用户实现有效的自动化测试。r o b o t 可以监测到测试人员与应用程序之间的所有交互行为,并可以产生相应的测试脚本。目前,r o b o t 对几乎所有流行的应用环境多有良好的支持和工作表现。尤其是对象h t m l 、j a v a 和n e t 应用、v i s u a lb a s i c 、p o w e r b u i l d e r 、d e l p h i 、o r a c l e 表单和m f c 控件( 控件最常用在c 和c + + 的应用中) 有着非常强大的支持。通常的情况下,r o b o t 的通用录制机制可以支持多数的自定义控件。2 w i n r u n n e rm e r c u r yi n t e r a c t i v e 公司的一种企业级功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,w i n r u n n e r 能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。3 q u i c k t e s tp r o f e s s i o n a lm e r c u r yi n t e r a c t i v e 公司的一个功能测试自动化工具,主要应用在回归测试中。q u i c k t e s t 针对g u i 应用程序,包括传统的w i n d o w s 应用程序,以及现在越来越流行的w e b 应用,它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。第1 1 页第二章自动化测试的基本方法和工具4 a d v e n t n e tq e n 9 1 n ea d v e n t n e tq e n g i n e 是一个应用广泛且独立于平台的自动化软件测试工具,可用于w e b 功能测试、w e b 性能测试、j a v a 应用功能测试、j a v aa p i 测试、s o a p测试、回归测试和j a v a 应用性能测试。支持对于使用h t 扎、j s p 、a s p 、n e t 、p h p 、j a v a s c r i p t 、,b s c r i p t 、) ( m l 、s o a p 、w s d l 、e c o 唧e r c e 、传统客户端服务器等开发的应用程序进行测试,此工具以j a v a 开发,便于移植和提供多平台支持。5 s i l k t e s ts i l k t e s t 是一款对企业级应用进行功能测试的产品,可用于测试w e b 、j a v a或是传统的c s 结构。s i l k t e s t 提供了许多功能,使用户能够高效率地进行软件自动化测试。主要包括:测试的计划和管理;直接的数据库访问及校验;灵活、强大的4 t e s t 脚本语言,内置的恢复系统( r e c o v e r ys y s t e m ) ;以及具有使用同一套脚本进行跨平台、跨浏览器和技术进行测试的能力。6 c o m p u w a r eq a r u nc o m p u w a r eq a r u n 是一种自动化的捕捉和回放工具,不论是从应用系统、电子商务到e r p 与c r m ,都提供重要业务的功能测试。透过测试脚本的开发和测试执行的自动化,q a r u n 帮助测试人员和q a 管理人员更有效地工作,以加速应用程序开发与上线。q a r u n 集中储存所有测试对象的定义,因此这些对象可以重复被使用测试。这些对象包括测试脚本、检查、事件与记录等。提高测试可再用性的中心数据库所有的测试脚本、检查、事件和物件定义都储存在q a r u n 的中心数据库( c e n t r a l r e p o s i t o r y ) ,该资料库有助于修改的方便性并维护测试成果。该数据库可选择存放于m i c r o s o f ta c c e s s 、s q l s e r v e r 或o r a c l e 。7 t e s tp a r t n e r一个自动化的功能测试工具,它专为测试基于微软、j a v a 和w e b 技术的复杂应用而设计。它使测试人员和开发人员都可以使用可视的脚本编制和自动向导来生成可重复的测试,用户可以调用v b a 的所有功能,并进行任何水平层次和细节的测试。t e s t p a r t n e r 的脚本开发采用通用的、分层的方式来进行。没有编程知识的测试人员也可以通过t e s t p a r t n e r 的可视化导航器来快速创建测试并执行。通过可视的导航器录制并回放测试,每一个测试都将被展示为树状结构,以清楚地显现测试通过应用的路径。8 1 o a d r u n n e r第1 2 页,jjlj,r第二章自动化测试的基本方法和工具m e r c u r yi n t e r a c t i v e 公司的一款工业标准级负载测试工具,是一种适用于各种体系结构的自动负载测试工具,它能预测系统行为并优化系统性能。l o a d r u n n e r 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,l o a d r u n n e r 能支持广泛的协议和技术,为您的特殊环境提供特殊的解决方案。通过使用l o a d r u n n e r ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。9 t e s t d i r e c t o rt e s t d i r e c t o r 是业界第一个基于w 曲的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,t e s t d i r e c t o r 极大地加速了测试过程。第1 3 页第三章b ,s 结构软件自动化测试分析与设计第三章b ,s 结构软件自动化测试分析与设计第一节b ,s 结构软件自动化测试的基本问题3 1 1b s 结构软件简介b s 结构,即b r o w s e r s e r v e r ( 浏览器服务器) 结构,是随着i n t e r n e t 技术的兴起,对c s ( c l i e n t s e r v e r ) 结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过w 聊浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3 一t i e r 结构。b s 结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。在b s 体系结构软件中,用户通过浏览器向分布在网络上的服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。b s 结构简化了客户机的工作,客户机上只需配置少量的客户端软件。服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。浏览器发出请求,而其余如数据请求、加工、结果返回以及动态网页生成等工作全部由w e bs e r v e r 完成。实际上b s 体系结构是把二层c s 结构的事务处理逻辑模块从客户机的任务中分离出来,由w e b 服务器单独组成一层来负担其任务,这样客户机的压力减轻了,把负荷分配给了w e b 服务器m “。这种三层体系结构如图3 1所示。图3 1b ,s 结构软件的三层体系结构第1 5 页第三章b s 结构软件自动化测试分析与设计这种结构不仅把客户机从沉重的负担和不断对其提高的性能的要求中解放出来,也把技术维护人员从繁重的维护升级工作中解脱出来。由于客户机把事务处理逻辑部分分给了功能服务器,使客户机一下子”苗条”了许多,不再负责处理复杂计算和数据访问等关键事务,只负责显示部分,所以维护人员不再为程序的维护工作奔波于每个客户机之间,而把主要精力放在功能服务器上程序的更新工作。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。3 1 2 色s 结构软件自动测试的主要内容b ,s 结构软件的测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。一个完整的b s 软件测试需要从可用性、客户端兼容性、功能、性能、安全性、可靠性等多方面进行广泛的研究和分析。”。本文仅从自动测试的角度对b s 软件测试部分内容进行分析。1 功能测试功能一般包括后台数据的增删查改、用户输入输出校验、状态信息的显示和保存等,这些通常是通过c g i 程序、j a v a s c r i p t 程序、c 0 0 k i e s 等来协同完成的。测试要根据目标功能对包含程序逐一进行验证。功能测试的方法有很多,总体的功能验证可以通过引入测试工具来进行,利用测试工具来模拟网页表单的提交过程、后台数据的输入输出等,从而对一系列功能进行批量验证汹1 。1 ) 表单测试当用户给系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。当用户通过表单提交信息的时候,都希望表单能正常工作。如果使用表单来进行在线注册,要确保提交按钮能正常工作,当注册完成后应返回注册成功的消息。如果使用表单收集配送信息,应确保程序能够正确处理这些数据。要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。提交数据,处理数据等可以考虑自动化测试工具的录制功能,编写可重复使用的脚本代码,在实际测试中可以减轻测试人员工作量:2 ) 容量测试容量测试是使测试对象处理大量的数据,以确定是否达到了将使软件发生第1 6 页第三章b ,s 结构软件自动化测试分析与设计故障的极限。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。如果测试对象正在为生成一份报表而处理一组数据库记录,那么容量测试就会使用一个大型的测试数据库,检验该软件是否正常运行并生成了正确的报表。3 1 回归测试回归测试技术可以在测试的各个阶段出现,它是对以前的问题进行验证的过程,目的就是保证以前已经修复的b u g 不会再出现。许多b u g 都是在回归测试时发现的,在此阶段,我们首先要检查以前找到的b u g 是否已经更正了,经过修改的b u g 是否又产生了新的b u g ”1 。2 性能测试性能测试主要考虑服务器端在负载压力足够大的情况下,是否能保证性能长期稳定。这需要对服务器进行各种极限情况的测试,包括用户数目、运行时间、反复启停等情况的极限情况。这项测试通常能够找出系统的内存泄露或边界情况的问题,因为有些存在内存泄漏问题的程序,在运行一两次时可能不会出现问题,但是如果运行了成千上万次,内存泄漏得越来越多,就会导致系统崩滑嘲矧。1 1 性能评测性能评测是对系统响应时间、事务处理速率和其他与时间相关的需求进行评测和评估的测试。性能评测的目标是核实性能需求是否都已满足。实施和执行性能评测的目的是将测试对象的性能行为当作条件( 例如工作量或硬件配置)的一种函数来进行评测和微调。2 ) 负载测试在负载测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是测试当负载逐步增加时,系统组成部分的相应输出项,例如通过量、响应时间、c p u 负载、内存使用等如何决定系统的性能。负载测试是一个分析软件应用程序和支撑结构,模拟真实环境的使用,从而确定能够接收的性能的过程。例如:系统能允许多少个用户同时在线? 如果超过了这个数量,会出现什么现象?系统能否处理大量用户对同一个页面的请求?负载测试应该安排在系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个系统能同时处理的第1 7 页第三章b s 结构软件自动化测试分析与设计请求数量将远远超出这个限度,所以,只有放在i n t e r n e t 上,接受负载测试,其结果才是正确可信的。3 ) 压力测试压力测试也是一种性能测试,实施和执行此类测试的目的是找出因资源不足或资源争用而导致的错误。进行压力测试实际上是测试系统的限制和故障恢复能力,也就是测试应用系统会不会崩溃,在什么情况下会崩溃。如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷,而这些缺陷则可能由于争用共享资源( 如数据库锁或网络带宽) 而造成的。强度测试还可用于确定测试对象能够处理的最大工作量。压力测试的区域包括表单、登陆和其他信息传输页面等。第二节b ,s 结构软件自动化测试的流程设计3 2 1b s 结构软件自动测试流程b s 软件的测试一般可以从两个方面进行,从技术实现的角度和测试流程的角度。一般的b s 结构,无论是n e t 还是j 2 e e ,都是多层构架,有界面层,业务逻辑层和数据层,从技术实现的角度就是按照网络构架层的顺序进行测试,从测试流程的角度就是发现问题,分析问题,定位问题,最后解决问题。本文从测试流程的角度对b s 软件的测试方法进行研究。图3 2 是笔者针对b s 软件的自动化测试设计的操作流程图,其中实线部分是执行流程,虚线部分是相关文档。第1 8 页第三章b ,s 结构软件自动化测试分析与设计图3 2b ,s 软件的自动测试流程第1 9 页第三幸b s 结构软件自动化测试分析与设计3 2 2 测试计划文档一个高效的自动测试必须以一个好的测试计划作为基础。尽管测试的每一个步骤都是独立的,但是必定要有一个起到框架结构作用的测试计划。测试的计划应该作为测试的起始步骤和重要环节,具体应包括:产品基本情况调研、测试需求说明、测试策略和记录、测试资源配置、计划表、问题跟踪报告、测试计划的评审、结果等等。1 ) 产品基本情况调研。这部分应包括产品的一些基本情况介绍,如测试目的、产品的技术结构、产品规格、测试范围、项目信息等。2 ) 测试需求说明。这一部分要列出所有要测试的功能项,凡是没有出现在这个清单里的功能项都排除在测试的范围之外。3 ) 测试的策略和记录。这是整个测试计划的重点所在,要描述如何公正客观地开展测试,要考虑:模块、功能、整体、系统、版本、压力、性能、配置和安装等各个因素的影响。要尽可能的考虑到细节,越详细越好,并制作测试记录文档的模板,为即将开始的测试做准备。4 ) 测试资源配置。制定一个项目资源计划,包含的是每一个阶段的任务所需要的资源,当发生类似到了使用期限或者资源共享的事情的时候,要更新这个计划。5 ) 计划表。测试的计划表可以做成一个多个项目通用的形式,根据大致的时间估计来制作,操作流程要以软件测试的常规周期作为参考,也可以是根据什么时候应该测试哪一个模块来制定。6 ) 问题跟踪报告。在测试的计划阶段,我们应该明确如何准备去做一个问题报告以及如何去界定一个问题的性质,问题报告要包括问题的发现者和修改者、问题发生的频率、用了什么样的测试案例测出该问题的,以及明确问题产生时的测试环境。问题描述尽可能是定量的,分门别类的列举,问题分严重问题、一般问题和建议问题三类。7 ) 测试计划的评审。在测试真正实施开展之前必须要认真负责的检查测试计划,获得整个测试部门人员的认同,包括部门的负责人的同意和签字。8 ) 结果。计划并不是到这里就结束了,在最后测试结果的评审中,必须要严格验证计划和实际的执行是不是有偏差,体现在最终报告的内容是否和测试的计划保持一致。第2 0 页第三章b s 结构软件自动化测试分析与设计3 2 1 3 测试用例文档测试计划制定完毕后,要开始设计测试用例。测试用例是什么? 测试用例就是一个描述输入、动作、或者时间和期望结果的文档,其目的是确定应用程序的某个特性是否正常的工作。软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果等。1 ) 用例编号。测试用例的编号要按照一定的规则,采用项目名称+ 测试阶段类型( 系统测试阶段) + 编号的方式,这样便于查找测试用例,实现测试用例的跟踪。2 ) 测试标题。对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。3 ) 重要级别。定义测试用例的优先级别,可以笼统的分为“高”和“低”两个级别。一般来说,如果软件需求的优先级为“高”,那么针对该需求的测试用例优先级也为“高”;反之亦然。4 ) 测试输入。提供测试执行中的各种输入条件。根据需求中的输入条件,确定测试用例的输入。测试用例的输入对软件需求当中的输入有很大的依赖性,如果软件需求中没有很好的定义需求的输入,那么测试用例设计中会遇到很大的障碍。5 ) 操作步骤。提供测试执行过程的步骤。对于复杂的测试用例,测试用例的输入需要分为几个步骤完成,这部分内容在操作步骤中详细列出。6 ) 预期结果。提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。3 2 4b u g 报告j软件问题( b u g ) 报告是软件测试过程中最重要的文档。它记录了b u g 发生的环境,如各种资源的配置情况,b u g 的再现步骤以及b u g 性质的说明。更重要的是它还记录着b u g 的处理过程和状态。b u g 的处理进程从一定角度反映了测试的进程和被测软件的质量状况以及改善过程。一个好的b u g 报告要包括一下内容:1 ) b u g 编号。编号要按照项目名称+ 测试阶段类型( 系统测试阶段) + 编第2 l 页第三章b ,s 结构软件自动化测试分析与设计号的方式,便于测试人员跟踪。2 ) 报告者及创建时间。3 ) b u g 状态跟踪。图3 3 是假设一个团队在测试过程中发现b u g 后,对b u g 进行跟踪测试的跟踪流程图嘎i l 理搦迁小埘境玎蛀蠼孵试 姐。开艇巾越_痢 j圈_ 剖,上l霞妻l 旧m 垂h 耍蛩r = :j 习|1 矍:| | 蠹疵u。胃卜,l 划l图3 3b u g 跟踪流程图测试小组新建b u g ,状态为“待提交”;测试小组将b u g 将状态改为“待分配”,提交给项目经理;项目经理根据b u g 的详细情况,确定处理方案:将事务状态设为“待解决”,并分配给自己或开发人员;或者将事务状态设为“取消”或者“延后”,并分配给测试小组。项目经理或开发人员接到“待解决”的事务,根据处理方案处理事务,处理完毕后,将状态设为“待回归”,并提交给测试小组进行测试。测试小组回归测试时,应按处理方案进行测试,严格控制测试的质量。如果回归测试通过,将

温馨提示

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

评论

0/150

提交评论