




已阅读5页,还剩58页未读, 继续免费阅读
(计算机软件与理论专业论文)基于tuxedo的自动化测试框架的研究及实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 软件测试工作在软件开发的整个过程中占有极其重要的地位。为了克服手工 测试的一些困难,提高软件质量和测试效率,测试过程的自动化被广泛地引入进 来。它以其自动化程度高、实用性强等特点,引起了人们的广泛重视,已经成为 软件测试的发展方向。 目前,国产软件与国际先进软件相比,在质量和成熟度上还有一定差距。尽 管国外软件也存在不少b u g ( 软件错误) 和漏洞,但很少存在由于低级失误而出现 的软件产品质量问题。但是国内软件由于低级错误面造成的严重产品质量问题却 不时发生。引入自动化软件测试,不仅能够节约软件测试的人力成本,而且对于 提升软件测试质量也有非常积极的意义。 亿e d o 是一个非j a v a 语言开发的企业级事务处理的中间件,主要应用于高端 的分布式事务处理领域。它的测试面临多平台的复杂测试环境,还需要高稳定性 和高效性,显然手工测试是不能够满足需求的。本文鉴于亿o d o 测试的实际需求, 基于开源的s t a f ( s o f l w a r c 陷t i n ga l l t o m a t i o nf 瑚m e w o 出) 构建了一个分布式的、 易扩展的、完全自动化的t u 删。测试框架一一a = 丌e ( a u t o m 娟ct u x e d o 融 e n 咖姗饥t ) ,并实现了这一框架。在栅的设计和开发过程中,应用了基于s t a f 的s t a x 构件实现了x m l 的解析并封装了c d o 所有的通用命令,使得整个 a n e 框架具有统一的a p i 和高度的一致性,为后续版本的完善提供了可扩展性。 实现了包括配置测试环境、编译、执行、发送测试结果和产生测试报表的全自动 测试功能。 论文的内容主要分为三个部分:第一部分是自动化测试概述,详细阐述了自动 化测试的理论、a t l m 方法学。第二部分是测试需求分析以及测试工具的选择。 第三部分详细介绍了筒广r e 的具体设计与实现。 关键词:软件自动化测试,自动化测试生命周期方法学,瞰e d o 回归测试, s 脚,a r r e a b s 订a c t a b s t r a c t s o 行l a 化t 幽gi sv a 了i m p o r t a n ti i lt l l ee n t i r e r w a 他d e v e i o p m e n tp r o c c d 眦- e i n o r d e rt 0o v 咖m em eh a r d s t l i p so fm 锄u a l 懈t i n g 锄di m p r o v et l l cq 岫l i t yo f n w a 陀 锄de 伍c i c yo ft e s t i n 吕踟t o l n a t e d 1 f t w 嗣啪t 髂t i n gi si n 仃硼u c e di n t 0 髋t i n g p m 饯;d u r e c o m p a 茸e dw i mm e 砬e m a t i o n a l f l w a r e ,胁a r ed e v e l o p c di nc h i n ah 邪l o t so f q u a l i t ) ,孤l dm a t u r i t yp r o b l e i i l s b e c 孤腮eo f j u l l i o r 锄璐,l e 他a 他l o t so fs 丽o u sq u a l i t y p b l 锄s 如u n di nc l l i i 把s o 脚a r e s om ei i l 删u c t i o no fa u 幻m a t e ds o 凡v a r ct 骼t i n g c 觚to i l i y 蛆v et i l ec o s to f s o f t 、硼托t 懿t i i l 吕b u ta l s 0i l l l p m v et l l eq u a l i t yo f s 0 脚撇 t u x e d os y s t c mi sa na l t e 印d s e 仃龇b 酞嫩o nm i d d l e w a 陀b a s o do nn o l l j a v ai 狮g u a g e w l i i c hi s 舭m o s tw i d e l yd 印l o y o d 昀i l s a c t i o np l a t 向锄如r b u i i d i n gt l i 咖p 柏哪锄c e a n dr e l i a b l ed i s 曲u t c x l 印p l i c a t i o n s 1 kt i e s to f1 、。d oh 部t 0m e c t 晰t l lt l l en e x i b l e c o m p l e bd i s t r i b u t e dt c s ta i r :0 姗e n lm 加u a lt e s t i r l gt a k 岱m o 他托s o m c ew k c h 锄 n i d tb ea c 伏删a n d l ee x i 吼e dt e s t 丘砒玳瀚,0 r kc 狮n o tm a tc _ ht 也【e d 0s 耐a lt 髓t 锄啊r 0 脚m e i l _ t a c c o r d i i l gt o 也er e q u 确n e n to ft h x e d 0t c s t i n & 、eb r i i 培f o n a f dat 豁t 胁l e w o d 【南r o d ow l l i c hi sn a m c da n e ,卸d 呻l e m e n ti tb y 粕a l y z 吨a n d c o m p 疵l gm ew a yo f 硼t o n m t e dt e s 缸强e u i i n g i ed 嚣i 印姐di i l l p l 锄锄t a t i o no f 棚,s w c o m 】p o n e n ti s 髑。d 幻p a r s e ) ( 1 la n de n c a p 蹦a t ea n 吐l ec 0 咖o n 咖m a n dl l s e di i lr n e d 0 mm i sw a ka = 丌e 劬m 明,o r kh 嬲u r i i f o 肌a p i 锄d h i g h c 0 哪i s t e n ( 够 1 1 l i s 岫i s 啪b cd i v i d e di i 哟吐u 优p a n s 1 kf i r s tp a no f t 量l i st h 伪i sd 髓1 0 n s 仃纰e s 璩也e 0 巧o fa u t c 啦曲e d 憾;t i i l ga n da t u m 甜l o d o l o g y 1 ks e c o n dp a r to f 也i st h e s i s d e s c r i b 铭h o wt 0 幽s e t e s 痂 玛t 0 0 l s t h e l i r dp a r to f 也i st l l 岱i sd 锄。碰仃a t 船m ed e t a i l d e s i 盟柚di m p l e m c i l _ t a 五o no fa 舯限 k e y w o r d s :a u t o m a t e ds o 胁a f et 瞄t i i l 吕a t l mm 劬o d o l o 鼢r e g f e s s i o nt e s to f 瞰c d o , s 脚:a 兀 e 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他入已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:珲堪礁l 日期:力谚年歹月衫日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 日期:凇眵年r 月彤日 第一章软件测试概述 第一章软件测试概述 随着软件产品在各个应用领域的普及,软件的质量问题逐渐成为人们关注的 焦点。质量不过关的软件产品在使用中可能出现各种意想不到的问题,不但影响 匝常的操作、增加使用成本,甚至会产生严重的灾难性的后果。另一方面,软件 的质量问题也会增加软件开发商的维护费用,影响其信誉和形象,甚至导致经济 或法律纠纷。因此不论软件用户还是开发商都希望尽可能提高软件的可靠性,得 到优质的软件。 然而,完美无缺的软件是不存在的,有错是软件的必然属性。导致软件错误 的原因是多方面的,开发商对用户要求认知的不深刻、软件本身的复杂性、软件 开发工具存在的局限、软件开发中的人为错误、时间压力等等都会影响产品的开 发,从而导致软件开发成本、进度和质量上的失控。 经过软件专家和相关人员的研究和分析,发现软件的质量问题仅仅通过开发 人员的认真和仔细是不能消除的,程序语言的更新换代对提高软件的可靠性也收 效甚微。随着软件工程学的兴起和软件开发的工程化,人们认识到新的语言、先 进的技术和完善的管理仍然不能杜绝软件中的错误,而软件测试则在这一工程化 的过程中逐渐担负起评价和发现错误的责任,成为软件开发的重要部分。统计表 明,在典型的软件开发项目中,软件测试的工作量往往占软件开发工作总量的4 0 ,并因此而开销3 0 5 0 的总成本,其重要性不言而喻。 1 1 软件测试的目的 1 9 8 3 年,正e e 提出了软件工程标准术语,软件测试定义为:“使用人工或 自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求 或是弄清预期结果与实际结果之间的差别【i 】。 该定义明确提出了软件测试以检验是否满足需求为目标。软件测试不以发现 错误为唯一目的,查不出错误的测试并非没有价值。 g 砌1 f o r dj m y e f s 在其所著的低a no f s 0 胁a r et e s t i n g 一书中罗列了以 下4 条测试观点: 1 ) 软件测试是为了发现错误而执行程序的过程。 电子科技大学硕士学位论文 2 ) 测试是为了证明程序有错,而不是证明程序无错误。 3 ) 一个好的测试用例在于它能发现至今未发现的错误。 4 ) 一个成功的测试是发现了至今未发现的错误的测试。 由软件测试的定义以及上面的4 条观点,我们总结出了软件测试三条最主要 的目的: 1 ) 证明我们所做的产品正是客户所需要的。 2 ) 确保编码人员正确理解设计的意图。 3 ) 通过回归测试来保证目前运行的程序在将来仍然可以正常工作。 1 2 软件测试的历史 软件测试的历史反映了软件开发自身的发展演变【2 l 。长期以来,软件开发侧重 于在大型或小型计算机平台上开发与大型数据库系统有关联的大型科学计划和国 防部计划。在这一阶段,软件测试方案写在文件上。测试工作的目标是控制流路 径、复杂算法的计算以及数据操作。一组有限的测试程序可以有效地测试整个系 统。测试工作一般在项目进度的最后时刻才着手进行,最后时刻的测试工作是由 当时最合适的人完成的。 个人计算机的发展,引发了商业软件开发的爆炸性发展。在这种情况下,商 业软件在激烈竞争下求生存和发展,在产品市场上适者生存,计算机用户将生存 下来的软件当作事实上的标准。逐步壮大的联机系统替代了批处理方式操作,因 为几乎可以用任何方式调用联机系统中的作业流,所以联机系统的测试工作要求 以不同的方式进行测试设计。 客户服务器体系结构是通过使用前端用户界面应用程序开发工具和后端数据 库管理系统应用程序存储,利用联网的个人计算机的普遍可用性实现的。“客户 服务器一说明了两个软件处理流程之间的关系。其中,客户计算机请求一个由服 务器计算机执行的服务,一旦服务器完成了所要求的功能,它便要向客户机发回 结果。尽管客户机和服务器可在一个单一的机器上运行,但通常在由网络连接的 分散的计算机上运行。 客户月艮务器应用的流行给测试带来了新的复杂局面。测试工程师不再像过去 那样使用单一系统上工作的单一的、封闭式应用程序。相反,客户服务器体系结 构涉及三个不同的部分:客户、服务器和网络。迄今为止几乎没有制定出客户服 务器标准,平台问的互连增加了出错的可能性。因此,测试涉及到服务器与网络 2 第一章软什测试概述 的性能以及跨越三个部分的整个系统的性能和功能。 伴随着客户服务器体系结构带来的复杂局面,图形用户界面屏幕的特性带来 了另外一些挑战。图形用户界面替代了基于字符的应用,并通过减少j j 户对指令 了解的详细程度或软件功能背景的程度,从而使几乎任何人都可以使用软件。图 形用户界面涉及用户屏幕窗口内的信息表示。用户屏幕窗口包含可妓选用的对象 因此用户可以使用对象控制其逻辑。这些屏幕能将对象友示为图杯群g 似乎能 无穷尽地变幻。这种方法称为事件驱动环境,它与基于主机的过程环境截然不同。 考虑到客户服务器应用的性质,就选择对象的方法而论,存在着相当大的随 意性。一般来说,在应用程序内部没有明确的路径,可以用不同的顺序选择对象。 相反,通过一定数量的路径调用和模块执行,测试程序则不容易执行所有哥能的 功能。因此,测试工作要求更庞大而且更详尽的规划。要求测试人员更熟悉放测 试的应用程序,并且具有与平台与网络有关的更专业的技能要求( 也适用于正在使 用的自动化测试工具) 。 自那以后,支持屏幕捕捉和回放的自动化测试工具日益成熟并且能力越来越 强。具有各种特性的自动化测试工具不断涌现。此外,尽管软件自动测试不断涉 及传统的测试管理功能,如需求跟踪、测试计划、测试场景和脚本开发,但它还 是日益成为一种编程行为。 1 3 自动化软件测试与手动测试的比较 软件测试的工作量很大,据统计,测试时间会占到总开发时间的4 0 ,一些可 靠性要求非常高的软件,测试时问甚至占到总开发时间的6 0 1 5 j 。但测试却是在整 个软件过程中极有可能应用计算机进行自动化的工作,原因是测试的许多操作是 重复性的、非创造性的、需要细致注意力的工作,而计算机最适合于代替人类去 完成这些任务1 3 。 软件自动化测试是相对手工测试而存在的【。提出自动测试就是希望能够通过 自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的 是减轻手工测试的劳动量,从而达到提高软件质量的目标。主要是通过所开发的 软件测试工具,脚本等来实现,具有良好的可操作性、可重复性和高效率等特点。 要理解为什么要进行自动化测试,可以从两个方面考虑。 手工测试的局限性: 1 ) 通过手工测试无法做到覆盖所有代码路径。 3 电子科技大学硕士学位论文 2 ) 简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、 重复性,工作量往往较大。 3 ) 进行系统负载、性能测试时,需要模拟大量数据或大量并发用户等各种应 用场合时,很难通过手工测试束进行。 4 ) 进行系统可靠性测试时需要模拟系统运行十天、几十天。以验证系统能 否稳定运行,这也是手工测试无法模拟的 5 ) 如果有大量( 几千) 的测试用例需要在短时间内 l 天) 完成,手工测试几乎 不可能做到。 自动测试化的优势: 1 ) 可以使某些测试任务比手工测试执行的效率高,并可以运行更多更频繁的 测试。 2 ) 对程序的新版本可以自动运行已有的测试( 回归测试) ,特别是在频繁地修改 许多程序的环境中,一系列回归测试的开销应是最小的。 3 ) 可以执行一些手工测试困难或不可能做的测试,例如对于2 0 0 个用户的联 机系统,用手工进行并发操作的测试几乎是不可能的,但自动测试工具可以模拟 来自2 0 0 个用户的输入。客户端用户通过定义可以自动回放的测试,随时都可以 运行用户脚本。 4 ) 更好地利用资源。将繁琐的任务自动化,如重复输入相同的测试输入,可 以提高准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计 更好的测试用例。另外,可以利用夜晚或者周末空闲的机器执行自动测试。 5 ) 测试具有一致性和可重复性。对于自动重复的测试可以重复多次相同的测 试,如不同的硬件配置、使用不同的操作系统或数据库等,从而获得测试的一致 性,这在手工测试中是很难保证的。 回一旦一系列测试已经被自动化,则可以更快地重复执行,从而缩短了测试 时间,使软件更快地推向市场。 7 ) 增加软件信任度。一旦得知软件通过强有力的自动测试后,软件发布时对 其的信任度也高( 假设已做过很好的测试) 。 自动化测试的优势虽然很多,但是也有一定的局限性,盲目的进行自动化测试, 只会取得事倍功半的效果。 自动化测试的局限性: 1 ) 软件测试1 0 0 自动化是不切实际的,自动化测试不能取代手工测试,手工 测试是不可或缺的基础。 4 第一章软件测试概述 2 ) 不能期望自动测试发现大量新缺陷:事实证明新缺陷越多,自动化测试失 败的机率就越大,发现更多的新缺陷应该是手工测试的主要目的。测试专家j 锄1 伪 b a c h 总结得到:8 5 的缺陷靠手工发现,而自动化测试只能发现1 5 的缺陷【。 3 ) 自动化测试工具本身不具有想象力:工具毕竟是工具,出现一些需要思考、 体验界面美观方面的测试,自动化测试工具就无能为力。 4 l 技术问题、组织问题,脚本维护:自动化测试的推行有很多的阻力,如组织 是螽重视、是否成立这样的测试团队、是否具备这样的技术水平,对于测试脚本 的维护工作量很大,是否值得维护等等问题都必须要考虑。 “水能载舟,亦能覆舟”,在清楚地分析了自动化测试的利弊之后才能有的放 矢的进行自动化测试的工作,这样有利于避免在自动化测试中迷失方向。 1 4 本文完成的工作 t l e d o 是b e a 公司的一款交易中间件产品【3 】,它主要是提供一个基础的框架去 帮助建立、运行和管理一个三层客户服务器模式的应用,大大缩短了应用开发的 时间,提高了应用开发的成功率。t u x c d 0q a 组的主要工作是进行t 呱e d o 的回归测 试,产品功能的增加使得回归测试的工作量越来越大,测试周期越来越长,原有 的测试框架已经远不能满足公司对测试效率和测试质量的要求。为了更有效的完 成回归测试,t u x e d oq a 组决定开发新测试框架一a 1 r r e( a u t ( 脚撕ct 弧e d o 协t e n v i r o n m e n t ) ,以从根本上解决现有测试框架效率低,需要大量人为干预的现状。 基于上述问题本文完成以下工作: 1 ) 研究学习自动化测试的引入和改进过程。 2 ) 研究测试组现有的测试框架m c g a t 奄t ,分析t u ) 【e d o 回归测试的流程和特点, 研究测试组对测试的改进需求。 3 ) 分析当前的测试工具和测试方法,选择适合测试组要求的测试方法和测试 工具。 4 ) 为了弥补测试工具的缺陷,达到测试组对新测试框架的要求,分析并设计 自动测试框架甜r r e ( a u t o m 撕c o d o1 b te n v 的咖e i l t ) 。 5 电子科技大学硕士学位论文 第二章测试自动化生命周期概述 2 1 软件工程生命周期思想 2 1 1 软件生命周期阶段 软件生命周期阶段的划分方法与软件规模、种类、开发方式、开发环境以及 开发时使用的方法有关,应该遵循的一条基本原则,就是使各阶段的任务彼此白j 尽可能相对独立,同阶段各项任务的性质尽可能相同,从而降低各个阶段任务 的复杂程度,简化不同阶段之间的联系,有利于软件开发工程的组织管理。1 2 0 l 软 件定义、软件开发、软件维护组成了软件生命周期【4 2 l 。 2 1 2 软件定义时期 软件定义时期的任务是确定软件开发工程必须完成的总目标,确定工程的可 行性,导出实现工程目标应该采用的策略及系统必须完成的功能,估计完成该项 工程需要的资源和成本,并且制订工程进度裂2 2 1 。这个时期的工作通常又称为系 统分析,由系统分析员负责完成。需求分析阶段通常迸一步划分成问题定义、可 行性研究和详细分析需求【3 2 l 。 1 ) 问题定义及可行性研究 此阶段是软件开发方和需求方共同讨论,主要确定软件的开发目标及其可行 性。 问题定义必须明确要解决的问题是什么,通过问题定义阶段的工作,系统分析 员应该提出关于问题性质、工程目标和规模的书面报告。通过对系统的实际用户 和使用部门负责人的访问调查,分析员扼要的写出对问题的理解,征求用户意见 之后,统一对问题的理解,最后得出一份双方都满意的文档。 在问题定义阶段提出的对工程目标和规模的报告通常比较含糊。可行性研究阶 段应该导出系统的高层逻辑模型,并且在此基础上更准确、更具体的确定工程规 模和目标。然后分析员更准确的估计系统的成本和效益,对建议的系统进行成本 效益分析。 2 1 分析需求 6 第一二章测试自动化生命周期概述 在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需 求分析目的是为了确定:为了达到用户的要求和系统的需求,系统必须作什么, 系统必须具备哪些功能【硼。在需求分析阶段确定的系统逻辑模型足以后设计和实 现目标系统的基础,因此必须准确完整的体现用户的要求。 需求分析阶段应该由用户参加,必须提出完整准确的系统逻辑模璎并经过用 户确认。 需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件开发项目 的成功打下良好的基础。“唯一不变的是变化本身”,同样需求也是整个软件开发 过程中不断变化和深入的。因此必须制定需求变更计划来应付这种变化,以保护 整个项目的顺利进行【。 2 1 3 软件开发时期 软件开发时期具体设计和实现在前一个时期定义的软件,它通常由以下四个 阶段组成:计划、设计、编码和测试【1 3 1 。其中前两个阶段又称为系统设计,后两 个阶段称为系统实现。 l _ ) 计划 好的软件设计将为软件程序编写打下良好的基础【2 6 j 。这个阶段的任务是如何解 决问题。从开发规模和开发成本上考虑,有三种可能的方案: a ) 低成本的解决方案,系统只能完成最必要的工作。 b ) 中等成本的解决方案,系统不仅能够很好的完成预定的任务,使用起来很 方便,而且可能还具有用户没有具体制定的某些功能和特点。虽然用户没 有提出这些具体要求,但是系统分析员根据自己的知识和经验断定,这些 附加功能是应该有的,或是不能缺少的。 c ) 高成本解决方案,系统具有用户可能希望有的所有功能和特点。 系统分析员应该使用系统流程图或者其他工具描述每种可能的解决方案,估 算各种方案的成本和效益,还应该在充分权衡各种方案利弊的基础上,推荐一个 较好的系统方案,制定实现所推荐系统的详细计划。 2 ) 设计 设计阶段的任务就是给出问题求解的每一步骤,给出怎样具体的实现这个系 统的描述【蚓。 这个阶段的任务不是编写程序,而是设计出程序的详细规格说明,这种规格 7 电子科技大学硕士学位论文 说明的作用很类似于其他工程领域中常见的工程蓝图,应该包含必要的细节,是 程序员编写代码的依据。 3 1 编码 这个阶段的任务是用程序设计语言写出正确的、容易理解的、容易维护的程序 模块代码。在程序编码中必须要制定统一的,符合标准的编写规范,以保证程序 的可读性、易维护性提高程f 的运行效丰。 4 1 软件测试 这个阶段的任务是通过各种类型的测试,使软件达到预定的要求。最基本的测 试是单元测试、集成测试和验收测试【2 7 1 。所谓单元测试就是使用白盒测试方法, 在制定测试方案之后进行,并给出测试结果【3 6 1 。集成测试是根据设计的软件结构, 把经过单元测试的模块装配、连接起来,在装配的过程中测试。验收测试是根据 系统的规范和功能要求,有用户参加的测试、验收。在测试中需要建立详细的测 试计划并严格按照测试计划进行测试,以减少测试的随意性。 2 1 4 软件维护时期 软件维护是软件生命周期中持续时间最长的阶段【2 i l 。在软件开发完成并投入 使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用 寿命,就必须对软件进行维护。维护时期的主要任务是使软件持久地满足用户的 需要。具体地说,当软件在使用过程中发现错误时应该加以改正,当环境改变时 应该修改软件以适应新的环境,当用户有新要求时应该及时改进软件以满足用户 的新需要。 维护阶段的任务是通过各种必要的维护活动使系统持久地满足用户的需要。 有四类维护活动: 1 ) 改正性维护,即诊断和修改正在使用过程中发现的软件错误 2 ) 适应性维护,即修改软件以适应环境的变化 3 ) 完善性维护,即根据用户的要求改进或扩充软件使它更完善 4 ) 预防性维护,即修改软件使将来的维护更加方便。 每一项维护活动都应该经过提出维护要求或报告问题、分析维护要求、提出 维护方案、审批维护方案、确定维护计划、修改软件设计、修改程序、测试程序、 复查验收等一系列步骤,实质上是经历了一次压缩和简化了的软件定义和开发的 全过程。维护活动应该编写文档资料,加上必要的注释。 8 第_ 二章测试自动化生命周期概述 2 2 测试自动化定义 。新的软件应用程序要马上交付使用。”“现在就需要完成那些新功能。一开发 和测试人员总是被要求在紧缩的进度内用最少的资源交付产品,并被要求降低成 本。有报告显示,9 0 以上的开发人员耽误了交货日期,6 7 的开发人员常常错过 最后期限。此外,9 1 的开发人员在开发周期后期不得不取消关键功能以赶上最后 期限瞄j 。产品投放市场的早晚可能影响到产品的生死存亡以及公司的生死存亡。 解决以上问题的主要途径之一是通过自动化测试软件来实现测试的流水线化。 为了达到在最短的进度内充分测试软件的目标,一些企业选择测试自动化。测试 自动化的定义是:通过使用自动化测试工具,按照测试工程师的预定计划进行自 动的测试,能自动检查被测对象响应的测试【2 9 l 。 测试自动化在许多情况下提供很大的价值,如测试脚本被重复使用的地方或测 试脚本子程序被生成后被许多测试脚本重复调用的地方。在回归测试和压力测试 中,可重用脚本可能运行很多次,自动化测试有很高的回报。 自动化测试对增量型软件开发的综合测试提供了巨大价值【2 6 1 。每一个新的构件 都引发相当多的新测试,而且可重用先前开发的测试脚本。假定需求和软件不断 变更和增加,那么,软件自动测试则作为一个重要机制,能确保软件每次重构的 准确性和稳定性。 测试自动化涉及到测试流程、测试体系以及脚本集成等各方面。要实施测试自 动化,不仅是技术、工具的问题,也是一个公司和组织的文化问题。首先要有公 司从资金上的支持,其次要有专门的测试团队去建立适合自动化测试的测试流程、 测试体系,再次就是编写、集成、发布自动化测试包和进行自动化回归测试的过 程。 自动化测试具有测试效率高和测试过程可完全重现的优剧1 5 l 。但也存在前期耗 用的工作量较大、对测试人员的技术水平要求较高和需要对测试脚本程序进行维 护的缺点。自动化测试通常要求测试人员了解所测试的软件功能,并有编程能力, 至少会使用一种高级语言,而且有一定的系统设计的能力。 2 3 测试自动化的生命周期 测试自动化过程也是一种软件开发过程,要像其他“软件开发项目 一样对待 “测试自动化项目 。软件自动化测试流程包含完整的软件开发流程框架。自动化 9 电子科技大学硕士学位论文 测试的生命周期体现了软件工程的生命周期的各个阶段,在自动化测试开始之后, 分为需求分析阶段,计划阶段、设计阶段,实现阶段,集成阶段,维护阶段和退 役阶段【捌。 每个环节的具体概述如下 1 ) 需求分析。分析并选定要进行自动化测试的软件测试用例,明确测试目的。 详细分析手工测试过程,分析所选测试用例自动化的可行性。并考虑所选定的自 动化测试工具是否支持测试用例的自动化,考察测试用例是否会被重复使用,对 其进行自动化测试是否有价值。 2 ) 自动化测试计划。完成包含测试策略的测试计划,制定自动化测试进度表 和相关文档,并将缺陷跟踪和测试环境维护形成文档。 3 1 自动化测试设计。确定测试程序由哪些模块组成以及模块问的关系。给出 设计程序的详细规格说明,包括命名规约等。 4 ) 自动化测试脚本开发。生成或编写在自动化测试计划中定义的自动化测试 用例。 5 ) 自动化测试脚本测试。目的是确保整个自动化测试按照既定意图运行。 6 ) 自动化测试维护。在自动化测试生命周期结束之前,根据测试人员的反馈 和测试组的改进性意见,进行必要的修改和维护,总结经验教训,并对自动化测 试过程进行评估。评估自动化测试成果和测试流程的质量。 7 ) 自动化测试退役。自动化测试生命周期的终结。 2 4 软件自动测试生命周期方法学的过程 自动测试生命周期方法学代表了实旖自动测试的结构化方法f 2 】。自动化测试生 命周期方法学反映了现代快速应用开发工作的好处,在这种情况下,这些工作吸 引了用户参与每一个采用增量方式构建的软件版本的分析、设计和开发工作。 图2 1 是软件自动测试生命周期方法的引入以及实施过程图。为了遵循生命周 期方法学,测试工程师在系统生命周期的早期就参与工作,从业务分析到整个需 求阶段以及每一软件构件的设计和开发阶段。早期参与可使测试组对需求规格说 明和软件设计进行详尽的评审,更全面地了解业务需求和需要,设计最适当的测 试环境并产生更严格的测试设计。 1 0 第二章测演臼动化生命周期概述 2 4 1 自动测试的确定 图2 一l 自动测试生命周期方法学 若要决定是否引入自动测试,需要经过下面考虑: 1 ) 企业需求分析 企业要根据自身的实际情况分析是否应该引入自动测试,若企业已经确定其最 近的测试是无效的,企业的需求分析已经进行,结果表明目前的测试过程需要改 进,企业正在寻求可重复高效率且不易出错的测试方法,则表明应该引入自动测 试。 2 ) 克服不正确的自动测试期望 自动测试观念伴随着高期望值,对技术与自动化的要求更高。一些人认为自动 测试工具能完成一切事务,从测试计划到测试执行,不需人工干预,但是目前的 工具还没有这种能力。要引入自动测试,需要注意不要进入以下误区: a ) 工具能自动产生全面综合的测试计划,同时也支持测试设计与测试执行。 b ) 一个测试工具可以支持所有的操作系统环境。 c ) 引入自动测试工具可马上减轻测试工作。 d ) 测试进度可以马上缩短。 c ) 测试工具简单易用。 f ) 可以应用于所有手动测试,改进所有测试。 曲可以使测试覆盖率达到1 0 0 。 3 ) 认识自动测试的好处 当正确地实施自动测试并遵循严格的过程时,自动测试可提供若干好处。对于 l l 电子科技大学硕士学位论文 给定的企业需求,测试工程师必须评估潜在的好处是否符合所要求的改进标准, 在项目中实施自动测试是否仍然是合适的。已经确定自动测试有下列三大好处: a ) 生产出可靠系统 i 使用测试工具可以有助于生成可测试的需求。 i i 可使测试工程师无人值守的运行回归测试。 i i i 有助于改进堰力测试,识刺系统的薄弱环节。 b ) 改进测试工作质量 可增加测试的深度和广度。可以改进回归测试、多平台兼容性测试、软件配 置测试等。可以实现几小时后测试,并能执行手工测试无法完成的测试。 c ) 减轻测试工作量并缩短测试进度 最初,因为需要完成一些建立的任务,可能会感到测试工作量增加。但当自 动测试工具实施第一次重复之后测试工具投资回报将显现出来。因为自动测试 在制定测试计划时会比较复杂,但在以后的测试程序开发、执行、结果分析、错 误状态,纠正监视、报告生成阶段都节省了大量时问。 4 ) 获得管理部门的支持 当然,通过一系列分析之后,必须通过上级管理部门的支持才能实现这些计 划。测试工程师需要向管理人员发送测试工具的信息,提高他们对项目采用自动 测试的期望。若有需要还可以通过成本效益分析使管理部门确信潜在的投资回报。 2 4 2 测试工具的获取 在得到决策者支持以后,测试工程师需要经过以下几步选择合适的测试工具: 1 ) 审查企业系统工程环境,制订一个工具的评审标准,确保测试工具与本企 业内部操作系统、编程语言以及随其他技术环境尽可能多的兼容。 2 ) 评审可以得到的测试工具。熟悉市场上可利用的不同类型的工具,选出一 个或多个特定的候选测试工具。企业需要决定哪些工具能够最有效的改进系统开 发过程。通过将当前的过程与目标过程进行比较、评估改进标志以及成本效益分 析来估算其有效程度。 3 ) 将对测试工具类型的需求转换为一个或多个特定的候选测试工具。基于测 试工具环境,测试小组需要开发一个测试工具规格说明和评估表格。将测试工具 的功能作为评估过程的一个因子。为需要的每一个功能加一个权重,在为每一种 产品的相应功能打分,最后计算出总分,选择出几个特定的候选工具。 1 2 第- 二章测试自动化生命周期概述 4 ) 尽管测试工具供应商可以担保测试工具的功能,但是在特殊环境下,工具 经常不能像期望的那样工作。测试小组需要选择一个应用开发项目作为试用工具 的项h 。选择的项目需求越多,评估领域范围就越宽。 5 ) 在确定测试工具以后,测试工程师需要与工具供应商联系产品演示事宜。 在演示过程中应该注意出现的任何问题或不能肯定的事项,对任何不能回答的 问题部应该跟踪,以确保工具的性能与广告中一致。 2 4 3 自动测试的引入过程 在项目中,缺乏使用测试工具的经验可能会带来很大的影响。我们需要制订 一个恰当的测试工具引入过程,这个是自动测试获得长期成功的必要条件。自动 测试的引入过程主要就是分析测试过程的目标、目的和策略,然后验证这个测试 工具是否能够支持大多数项目的特殊测试需求团】。一旦确定测试工具适合当前的 项目,就可以接着执行自动测试生命周期的其他部分。下面就是对测试工具引入 过程的描述: 1 ) 测试过程分析 分析企业的测试过程的目的是确定测试过程内在的测试目标、测试目的和测 试策略。 测试的主要目标是提高被测软件在各种条件下都能正常运行并达到所定义需 求要求的概率,从而尽可能发现错误,使最终用户满意【刀。自动测试的一个目的是 支持手动测试以实现这种测试目标。自动测试最终可以减少测试工作量、缩短测 试进度、产生可靠的系统、增强测试过程的可重复性。 一旦确定了测试目标,那么测试小组就必须定义测试工作要达到的更切合实际 的或特定的目的。确定测试目的以后,测试组就需要规划测试策略了。测试策略 可分为以下两种类型: 缺陷预防策略:在开发生命周期早期进行检测,有助于预防将错误从需求阶 段引入设计阶段,再从设计阶段引入代码阶段。主要包括约束条件检查、早期引 入测试、使用标准、审查和走查等方式。 缺陷检测策略:通过使用软件从而发现未知的错误。彻底测试系统,减少系 统错误运行带来的损害,从而降低系统维护费用及工作量。主要是代码审查走查 和产品交付测试。 2 ) 测试工具考察 1 3 电子科技大学硕士学位论文 在对测试过程进行分析之后,测试工程师就可以继续确定是否使用自动测试 工具,特别是要验证测试工具是否可以在实际环境中运行,并且能够满足系统需 求。 第一,要评审系统需求,验证自动测试工具是否可以支持用户环境。如果一 个原型或被测应用程序的一部分已经存在,那么测试组应当对这个应用进行全面 了解,然后便可以初步决定应用中哪些特殊部分可以采用自动测试。 第二,评审测试进度。判断进度中是否为引入工具留有足够的时问。理想情 况是在开发生命周期的初期便引入自动测试。 第三,给新项目组演示自动测试工具,以便相关人员了解工具的功能,这其 中包括程序开发人员、测试工程师、质量保证专家和配置管理专家。 第四,测试工具兼容性检查。将测试工具与应用程序安装在一起,确定两者 是否兼容。 第五,明确任务和职责。认真考虑测试组成员的技能和水平,保证他们已具 有适当的技能,能够应对测试工作的各个方面。并要考虑是否需要聘请专家对测 试组进行短期培训,使测试工具充分发挥作用。 测试工具考察完后,测试组就可以完成最后的必要性分析,决定在特定项目 中是否使用自动测试工具。 2 4 4 测试计划、设计与开发 1 ) 测试计划 测试计划是高效测试的基础。测试计划阶段特别注重确定测试的文档,制订 能够达到测试目的和支持测试环境的计划,编制测试计划文档【翊。 测试计划包含丰富的信息,其中包括项目的许多测试文档需求。测试计划概 要说明测试组的任务和职责、测试进度、测试设计活动、测试环境准备、测试风 险和偶发事件以及可接受的彻底测试的程度。测试计划的附录可以包括测试程序, 命名规则说明等。表2 1 提供了一个测试计划的大纲实例: 表2 一l 测试计划表 测试计划章节 题目 内容 1 o 介绍 1 1 目的测试计划的目的 1 2 背景项目背景信息 1 4 第二章测试自动化生命周期概述 1 3系统概述 系统描述,关键高风险功能 1 4 引用文档与测试有关的文档 1 5 主要进度事件、活动、可交付文档 2 0任务与职责 2 1项目组织项目组织图 2 2 项目任务及职责任务与职责 2 3 测试任务结构测试活动和工作分解结构 2 4 测试组资源测试组概况,培训需求 3 o 测试 3 1 范围顶层测试覆盖说明 3 2 测试方法 皇标目的和过程方法,测试参 致 3 3 测试策略测试策略 3 4 自捌试工具翥主茎兰| 蠹燃誉 3 5 验证方法验证方法 3 6 测试需求测试需求 3 7 测试设计测试设计,测试程序命名规约 3 8 测试开发开发体系结构 4 0 测试环境 4 - 测试环境配置 茎嘉喜霎设计、购买、安装、设 4 2 测试数据建立和维护测试数据 5 0测试执行 5 1 测试报告进展状态报告、度量、顺序列表 5 2 缺陷跟踪缺陷跟踪 5 3 配置管理配置管理 6 o详细测试进度详细测试进度 a测试程序验收测试程序 2 ) 测试分析与设计 软件测试自动化有其自身的开发周期。这种开发工作有其自己的策略、目标、 1 5 电子科技大学硕士学位论文 测试需求定义、分析设计和编码【i 】。测试开发如同开发应用软件一样也需要认真地 分析和设计。 测试需求分析,与软件丌发过程丰l j 似必须庄开始测试设计之前确定测试需求。 测试需求分析需要清晰地定义测试需求并形成文档,使所有工程人员理解测试工 作的基础i 州。测试需求说明是测试组进行下面的测试分析和测试过程设计的蓝图。 测试需求分折的步骤如下: 乱测试组评审测试目标、测试目的和测试策略。 b 确定方法。指定系统测试需求分析的方法,测试需求分析方法主要分为基 于设计的结构化方法和基于需求的行为方法。 c 测试需求分析。完成测试需求定义,从被测应用的不同系统需求中得出测 试需求。 测试设计。为保证测试的效率和效果,要制定和精心设计测试过程: a ) 测试活动模型定义。评审用于测试活动中的各种技术,测试组保证测试技 术与相关的测试需求相适宜。测试模型由描述测试范围的图形化说明组成,它至 少包括用于开发测试阶段和系统测试阶段的测试技术。 b ) 为特殊的项目构造测试体系结构,其目的是确定测试中测试的组织方法。 测试结构一般有两种表示方法。第一种是基于设计的测试体系结构,按照测试程 序逻辑分组,应用于开发测试阶段。第二种是基于技术的测试体系结构,将测试 模型中的各种技术与测试程序相关联,应用于系统测试阶段。 获取测试需求后,便开始测试程序设计: a ) 测试程序定义。在现实中要界定测试范围,测试程序定义不仅仅辅助测试 开发,而且有助于量化或约束测试工作。定义测试程序要识别在测试工作中需要 创建和执行的一组测试程序。设计包括以逻辑分组的形式组织测试程序和制定测 试程序组的命名规则。 b ) 测试程序映射,建立测试程序与测试需求说明间的联系。 c ) 自动手动测试映射,说明是使用自动测试工具执行测试程序,还是通过手 动方式执行测试步骤。 d ) 测试数据映射,反映每一个测试程序的测试数据需求。 3 ) 测试开发 在测试开发之前,要进行许多准备活动。测试开发体系结构为测试组清晰描 述了有效创建测试程序所需要的构件块。测试组可以修改并裁减测试开发结构, 1 6 第二章测试自动化生命周期概述 以达到特殊项目的要求。 技术环境应当支持测试开发活动,并为测试程序的开发提供便利【9 】。技术环境 可能包括工具资源及支持测试开发和执行所需的硬件和软件。 一旦完成环境设置及跟踪活动,就要准备进行最后的环境就绪检查,主要是 企业的自动测试基础设旌,以保证现有的测试代码能够用于该项目。 测试组需要分折或重用自动测试基本设施中已经存在的测试程序及脚本的潜 在能力。对于自动测试工具支持的各个测试程序,测试组需要研究自动测试基本 框架,以确定重用已存在测试程序的范围。 在创建一套完整的测试程序之前,创建表示不同脚本之间关系的输出或逻辑 流是很重要的。逻辑流应该反映测试计划及测试组的目标。它包括脚本的高级设 计以及集成的考虑。 在开发自动测试程序之前的另一个活动就是手工执行测试程序。在该过程中, 测试工程师对与系统特殊功能有关的测试程序进行一次手工逐步执行,然后基于 输出结果,确定是否自动执行与之相关的测试程序。 对于某个工程师开发的测试程序,进行同行评审是很有价值的。其目的是发 现缺陷、错误使用业务规则、违反开发标准、测试覆盖问题,以及检查编码,保 证测试程序开发预测和设计是一致的吲。 在开发测试程序的过程中,测试组需要确保对测试设计、测试脚本、测试数 据以及各个测试程序进行配置控制。通常在测试数据目录或测试数据库中维护可 重用测试程序和脚本的集合,这些测试数据构成了测试床。 2 4 5 测试的执行和管理 测试的执行过程分为以下几个步骤: 1 ) 按照测试计划中所提出的测试需求和测试准则搭建测试环境。 2 ) 按照测试进度执行测试过程,依次进行单元测试、集成测试、系统测试、 用户验收测试和回归测试。 3 ) 在测试执行结束后进行测试结果评估。例如,对测试实际输出和期望结果 进行比较分析。 4 ) 一旦认定实际结果与期望之间的差异来源于被测应用的问题,那么就可以 生成一个缺陷或软件问题报告。 5 ) 测试组在一个测试程序执行完之后必须承担一些额外的管理工作。例如, 1 7 电子科技大学硕士学位论文 对测试程序的执行状态形成文档并维护。 回测试组必须能够识别测试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届广东省惠州市博罗县九上化学期中考试试题含解析
- 连锁酒店店长培训
- 2026届江苏省常州市名校九上化学期中统考模拟试题含解析
- 化妆教学工作总结
- 2025年信息、零售和物流杂志:用人工智能塑造未来报告 INFOSYS CONSUMER,RETAIL,AND LOGISTICS JOURNAL SHAPING TOMORROW WITH AI
- 2026届安徽省滁州来安县英语九年级第一学期期末统考试题含解析
- 山东省新泰市实验中学2026届化学九年级第一学期期中综合测试试题含解析
- 安徽省合肥168中学2026届九年级化学第一学期期中调研模拟试题含解析
- 2025年(中级)电厂水化验员考试题库及答案
- 2025年工业机器人系统运维员考试题库及参考答案解析
- 农村建房技术培训课件
- 红十字救护员培训理论试题及答案
- 潍坊市2026届高三开学调研监测考试语文试题及答案
- 2025年新能源电动摆渡车景区运营绿色出行解决方案报告
- 安全素养提升培训考试题及答案解析
- 动量守恒定律模型归纳(11大题型)(解析版)-2025学年新高二物理暑假专项提升(人教版)
- 2025股权转让合同签订股权认购协议书
- 某小区改造配电室(电力)工程监理大纲
- Z20+名校联盟(浙江省名校新高考研究联盟)2026届高三第一次联考化学及答案
- 医疗器械配送应急预案模板(3篇)
- DB65-T 4803-2024 冰川厚度测量技术规范
评论
0/150
提交评论