(交通信息工程及控制专业论文)软件自动化测试技术的研究.pdf_第1页
(交通信息工程及控制专业论文)软件自动化测试技术的研究.pdf_第2页
(交通信息工程及控制专业论文)软件自动化测试技术的研究.pdf_第3页
(交通信息工程及控制专业论文)软件自动化测试技术的研究.pdf_第4页
(交通信息工程及控制专业论文)软件自动化测试技术的研究.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

(交通信息工程及控制专业论文)软件自动化测试技术的研究.pdf.pdf 免费下载

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

文档简介

韭夏至盟友堂亟堂焦j 金塞生塞揸要 中文摘要 信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量 成为人们共同关注的焦点。软件测试作为软件质量保障的重要手段,在整个软件 开发过程中占有非常重要的位置。而如何提高软件测试的效率和水平,关系着软 件开发的成本以及质量。 本文主要对软件自动化测试技术进行了研究。首先论述了软件测试的理论基 础以及自动化测试方法较传统的手工测试方法的优越之处,随后分析了自动化测 试技术的应用范围及条件,并提出了实现自动化测试所面临的问题。在此基础上, 以对m 的数据库开发平台产品r a t i o n a ld a t aa r c h i t e c t 的回归测试项目为例,研 究了自动化测试的设计与实现。通过对自动化测试框架的设计、测试脚本的开发 以及辅助测试工具的开发,明确了必须要根据软件的特性进行自动化测试的开发, 才能实现脚本的模块化和脚本重用。通过对测试结果的分析,得出了自动化测试 相对于手工测试的几点优势。同时,从理论上分析了测试工具采用的先进的数据 驱动技术和关键字驱动技术,并对测试工具从测试模型的体现和脚本的可重用性 两方面的改进,提出了相关的需求分析和设计。 文章最后,对当今软件测试领域出现和兴起的新技术进行了介绍,并对测试 领域的前景进行了展望。 关键词:软件自动化测试;测试框架;测试工具:数据驱动:关键字驱动 分类号:t p 3 1 1 5 j e 塞塞垣厶堂亟堂焦监塞旦s ! 曼i a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fi tt e c h n o l o g y , s o f t w a r ei su s e di ne v e r yf i e l d 1 1 他 q n a l i t yo fs o r w a r ei sn o wb e c o m i n gt h ef o c u so fa t t e n t i o n a sa l le f f e c t i v em e t h o do f s o r w a r eq u a l i t ya s s u r a n c e ,t e s t i n gh a sav e r yi m p o r t a n tp o s i t i o ni nt h ew h o l ep r o c e s s o fs o f t w a r ed e v e l o p m e n t l o t so fs t a t i s t i c si n d i c a t e dt h a ts o r w a r et e s t i n go f t e n a c c o u n t e dt om o r et h a n4 0p e r c e n to ft h et o t a lw o r k l o a do fs o f t w a r ed e v e m p m e n t i m p r o v i n gt h ee f f i c i e n c ya n dl e v e lo fs o f t w a r et e s t i n gc a nr e d u c et h ec o s t so fs o f t w a r e d e v e l o p m e n ta n de n s u r et h eq u a l i t yo f s o r w a r e t l l i st h e s i sm a i n l ys t u d i e dt h es o f t w a r ea u t o m a t i et e s t i n gt e c h n o l o g i e s f i r s t l y , i t i n t r o d u c e dt h eb a s i ct h e o r ya n dt e c h n o l o g yo fs o f l - w a r et e s t i n ga n dc o m p 盯e dt h e a u t o m a t i ct e s t i n gw i t ht h em a n u a lt e s t i n g t h e ni td e s c r i b e dt h ea p p l i c a t i o nf i e l do ft h e a u t o m a t i ct e s t i n ga n da n a l y z e dt h ep r o b l e m sw h i c ht h ea u t o m a t i ct e s t i n gw o u l db ef a c e d w i t h o nt h i sb a s i s ,t h i st h e s i st o o kt h er e g r e s s i o nt e s t i n gf o rr a t i o n a ld a t aa r c h i t e c ta s ae x a m p l et os t u d i e dt h ed e s i g na n di m p l e m e n t a t i o no ft h ea u t o m a t i ct e s t i n g t h r o u g h a n a l y z i n gt h ed e s i g na n dd e v e l o p m e n to fa u t o m a t i ct e s t i n gf r a m e w o r k , i tc l e a r e dt h a t t h ed e v e l o p m e n to fam o d u l a ra n dr e u s a b l et e s ts c r i p tm u s td e p e n do nt h es o r w a r c c h a r a c t e r i s t i c s t h e nt h r o u g ht h ea n a l y s i so f t e s tr e s u l t s ,i ts h o w e dt h a ta u t o m a t i ct e s t i n g h a sm o l ea d v a n t a g e st h a nm a n u a lt e s t i n g m e a n w h i l e ,t h i st h e s i sa n a l y z e dt h ed a t a d r i v e rt e c h n o l o g ya n dk e y w o r dd r i v e rt e c h n o l o g ya d a p t e db yt e s t i n gt o o l si nt h e o r ya n d d i dr e q u i r e m e n ta n a l y s i sa n dd e s i g nf o rt e s t i n gt 0 0 1 a tl a s t ,t h i st h e s i si n t r o d u c e ds o m ei l c wt e c h n o l o g i e so fs o f t w a r et e s t i n ga n d l o o k e df o r w a r dt op m s p e c t so f t e s t i n gf i e l d k e y w o r d s :s o r w a r ea u t o m a t i ct e s t i n g ;t e s tf r a m e ;t e s t i n gt o o l s ;d a t ad r i v e r ;, k e y w o r dd r i v e r c l a s s n 0 :r p 3 11 5 韭越煎厶堂亟堂位论奎 独剑性廛明 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研 究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或 撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证书 而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作 了明确的说明并表示了谢意。 学位论文作者签名: 柏舌i i 签字只期: 垆p 7 年,月斗日 学位论文版权使用授权书 本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特 授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索, 并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国 家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名: 嚆- l i l 签字日期:御口7 年,2 月 6 日 导师签名: 钾毫良洲 签字同期:免,7 年f 1 ,月z 6 同 致谢 本论文的工作是在导师赵会兵副教授的悉心指导下完成的,赵老师渊博的知 识、丌阔敏锐的思维、严谨求实的治学念度使我深深敬佩。在学习和科研实践中, 他经常高屋建瓴地从宏观上给我指出i ;i f 进的方向,而且在具体问题上给我以悉心 指导,使我受益匪浅。导师也用言行教会了我如何治学、做事和做人,这都将是 我终生享用不尽的财富。在此谨向恩师致以最衷心的感谢! 邱宽民副教授和赵林海副教授对于我的科研工作和论文都提出了许多的宝贵 意见,在此感谢他们对我的指导和帮助。 同时,感谢m m 中国软件开发中心g u a r d i a nt e a m 的赵乃岩、杨志宝、马吉 荣、崔晓慧、杨博、周利为我提供了优越的实习环境和技术指导,在生活上也对 我提供了无私的帮助和热心的关怀。 感谢和我一起学习和工作过的曾洁毅、王瑞、吴晓丹等同学,我们在一起进 行科研工作,共同讨论、共同进步,没有他们的帮助和鼓励,也就没有我的进步。 另外也感谢我的家人和朋友,他们的关心和支持是我前进的动力,我的每一 点进步都凝结着他们的关爱。 韭基窑煎塞堂亟堂位边室 绻逾 1 绪论 1 1 软件测试的重要性 随着i t 产业的飞速发展,软件产品同样发展迅速,然而软件的质量却一直是 令人头痛的问题。随着软件应用范围的扩大,软件复杂度的提高,以及软件设计 技术的不断发展,软件开发规模越来越大,需要处理的问题也会愈来愈复杂,软 件质量更是需要得到保证。由软件的质量问题而引发的重大灾难不乏其例,如1 9 9 9 年8 月,由于软件的缺陷使得美国最大的缘起交易电子贸易系统中断服务长达一 周。从而影响了7 0 0 0 0 个商业用户,时间长达八天。1 9 9 7 年1 月,一家主要的健康 产业公司进行大型数据库的转换,没有进行充分的软件测试,使计算机记账系统 出了问题,致使该公司的股票下跌了6 0 0 。由系统的软件故障所引发的事故不胜枚 举。使得软件危机曾经成为软件界甚至整个计算机界最热门的话题。 系统的问题越早发现,改正的成本越低,破坏性越小。在系统发布前,要尽 量多地把系统的问题找出来,其手段就是有计划、有组织地进行充分的测试。对 软件进行测试是保证软件质量最重要和最有效的方法。软件测试是对软件规格说 明、软件设计和编码的最后复审,目的是在软件产品交付前,尽可能发现软件中 潜伏的问题。正如任何生产过程都离不开产品质量检验一样,测试工作也是软件 开发过程中必不可少的环节。软件测试工作的好坏,直接决定着软件产品质量的 高低。 大量统计表明,软件测试的工作量占软件开发总工作量的4 0 以上,对于一些 要求高可靠、高安全的软件,测试费用可能相当于整个软件项目开发所有费用的3 至5 倍。根据软件工程原理与国内外实践成功的企业和项目的经验,软件产品测试 的经济规模至少要占软件产业项目的3 0 到5 0 以上,但目前国内的软件测试还做 得远远不够,只占n 3 到1 0 左右1 2 】。 1 2 软件测试的发展现状及研究的意义 早在5 0 年代,人们刚开始开发较大型软件时,从几个大型软件项目的失败中 就意识到了软件危机的存在。英国著名的计算机科学家图灵就曾给出程序测试的 原始定义。当时测试用例的选取方法是在随机选取的基础上,结合测试者的经验 或测试者的直觉判断,突出重点测试区域。1 9 7 2 年6 月在美国北卡罗来纳大学召开 韭塞窑亟叁堂亟堂僮论塞绪监 了首届软件测试j 下式技术会议,成为软件测试技术发展中的一个重要罩程碑。1 9 7 9 年g l e n f o r d m y e r s , 出, 版了( t h e a r to f s o f t w a r e t e s t i n g ) ,这本书总结了众多的测试 经典方法并第一次提出了软件测试的目的在于证伪,而非证真,也就是说测试就 是为了发现错误,这是测试观念的一次突破。7 0 年代中期j b g o o d e n o n g h 和s l g e r h a r t 首先提出软件测试的理论,从而把软件测试这一实践性很强的学科提高到 理论的高度,被认为是软件测试技术发展过程中具有丌创性的工作。 在软件测试理论发展的同时,相继提出了各种测试方法如路径测试、系统功 能测试、压力测试、性能测试、代数测试、符号测试、数据驱动测试、程序扰动 测试方法和数据流测试方法等。 6 0 年代末7 0 年代初,软件的矛盾同益突出,软件工程化的概念逐渐形成。1 9 6 8 年在北大西洋公约组织的学术会议上提出了“软件工程”的概念。软件工程分为 以下几个阶段的软件生存期:需求分析、设计、编码、测试和维护。同时,在软 件开发的实践中,人们还认识到,在开发初期发现并排除软件错误所付出的代价, 远比在完成编码以后经过测试发现错误并加以改j 下的代价小得多。从这个认识出 发,各种有关生存期前几个阶段的测试理论和测试方法应运而生。 自从2 0 世纪7 0 年代以来,国内外许多学者和组织在软件测试方面进行了大量 的研究工作,形成许多经典的软件测试技术和软件测试流程管理规范。 美国的i e e e 、a c m 等组织制定了一系列的软件测试规范,国外的许多大学( 如 c a r n e g i em e l l o n 、g e o r g em o s a n 、华盛顿大学等) 、研究机构( 如n m i o n a ls o f t w a r e t e s t i n gl a b 等) 和公司( 如r a t i o n a lc o r p o r a t i o n ,m e r c u r yi n t e r a c t i v e ,s o f t w a r e r e s e a r c h 等) 进行了大量软件测试的研究和应用工作。其o g c a m e g i em e l l o n 大学侧重 于回归测试和c l i e n t s e r v e r 测试技术的研究,g e o r g em o s a n 侧重于基于规范的测试 自动生成和面向对象测试技术。比较流行的软件测试工具集有s o f t w a r er e s e r c h 的 t e g w o r k s 、r a t i o n a l 的r o b o t 、m e r c u r yi n t e r a c t i v e 的w i n r u o n e r l o a d r u n n e r 等p 1 1 ”。 国内的软件测试技术研究起步比较晚,在人力、物力上投入与国外相比差距 较大。我国专门从事软件测试技术研究的单位也只有几家:中国软件评测中心、 北京航空航天大学软件工程研究所、航天工业总公司2 0 4 所、国防科工委系统所和 总参6 1 所等。 正是由于国内的软件测试工作做得不够,没有与国际上有关的标准和规范相 接轨,导致我们开发的绝大部分软件无法出口,不被国外的公司所接受。而同样 是亚洲国家的印度,其软件出口率己达到5 0 以上要改变这种现状,需要进行软 件测试技术的研究。 目前软件测试技术的研究主要向网络化、大型化和自动化方面发展,主要包 括c l i e n f f s e r v e r 系统、基于i n t c r n c t 的w e b 应用系统、嵌入式系统的软件测试技术研 2 j e 夏变通占堂亟堂位逾奎缝监 究和自动化测试工具的研制。 软件自动化测试作为软件测试一个重要的组成部分,它能完成许多手工测试 无法实现或难以实现的测试。但并非所有的测试都适宜自动化测试,自动化测试 应该根据软件开发的特性来设计和丌发。只有j 下确、合理地实施自动化测试,才 能够快速、彻底地对软件进行测试,从而提高软件质量,节省测试经费,缩短产 品发佰周期1 3 i 。 基于这个前提,本文对软件测试技术进行了研究。 1 3 本文的组织结构 本文在分析、借鉴和吸收大量文献资料的科研成果的基础上,结合本人在m m 中国软件开发中心实习期间参与的对r a t i o n a ld a t a a r c h i t c c t 数据库开发平台产品 的自动化测试项目的实践,完成了以下内容: 第一章:绪论。本章介绍了软件测试的重要性以及国内外软件测试技术的发 展现状,得出了进行软件测试技术研究的重要意义。 第二章:软件测试概论。本章首先概括了软件测试的基本理论,包括软件测 试的定义、软件测试的过程与方法以及软件测试的基本原则。然后将自动化测试 与传统的手工测试进行了比较。 第三章:自动化测试技术分析。本章主要分析了自动化测试技术。介绍了自 动化测试的生命周期、应用范围和条件,以及进行自动化测试的步骤,提出了进 行自动化测试所面临的问题测试工具的应用是进行自动化测试的关键,因此对 测试工具进行了分析。 第四章:数据库开发平台产品的自动化测试设计。本章结合对r a t i o n a ld a t a a r c h i t e c t 数据库开发平台产品的测试项目,完成了进行自动化测试的设计,搭建 了自动化测试的框架。深入分析了测试工具采用的数据驱动技术和关键字驱动技 术的基本原理,并对测试工具从测试模型的体现和脚本的可重用性两方面的改进, 提出了相关的需求分析和设计。 第五章:数据库开发平台产品的自动化测试实施。本章分析了r a t i o n a ld a t a a r c h i t e c t 数据库开发平台产品的自动化测试流程,研究了具体测试案例的实现方 法,并将数据驱动技术和关键字驱动技术应用于实践中。通过对测试结果的分析, 得出了在该项目中自动化测试相对于手工测试的几点优势。 第六章:测试的新技术对软件测试的影响分析。本章根据当前测试领域的技 术发展,有针对性地分析介绍了几种比较有发展前景的测试新技术,并分析了其 对软件测试的影响。 2 软件测试概述 2 i 软件测试的定义 从广义上讲,软件测试是指软件产品生存周期内所有的检查、评审和确认活 动,如设计评审、系统测试等。从狭义上讲,测试是对软件产品质量的检验和评 价,它一方面检查软件产品质量中存在的质量问题,另一方面,也对产品质量进 行客观的评价。 g f e nm y e r s 对软件测试提出过如下观点1 4 l : 1 测试是对一个程序的执行过程,其目的在于发现错误。 2 一个好的测试用例很可能是发现至今尚未察觉的错误。 3 一个成功的测试用例是发现至今尚未察觉的错误的测试。 可见,软件测试的目标在于以最少的时白j 和人力,系统地找出软件中潜在的 各种错误和缺陷。软件测试即是采用从无限执行域中适当挑选有限测试用例集, 对照预期指定的行为,动态验证程序实际行为的过程。它包括基本概念,测试级 别、测试技术、测试相关度量和测试过程管理等。 2 2 软件测试的过程与方法 2 2 i软件测试的过程 软件产品在交付使用之前,一般需要经过单元测试、集成测试、确认测试和 系统测试。当软件系统被修改或扩充后还需要进行回归测试。 具体的测试流程如图2 - i 所示: _ 谟叫塑堕队设甲姗学蠢 一模州亟田_ 审氲喇软m 亟吁枞商榭砸早困 可姊软件 一模块_ 门弓i i 引 + 图2 一i 测试流程 f i 9 2 - it e s t i n gp r o c e s s 下面分别对这四个测试步骤进行介绍: d 1 单元测试 单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查后, 便可以丌始单元测试。它又被称为模块测试,是最小单位测试。被测模块可分为 程序模块和功能模块。 一个完整的单元模块需具备输入、加工和输出三个环节,且每个单元都应该 有j 下规的规格说明。 单元测试是系统开发过程中进行的最低级别的测试活动。在单元测试活动中, 各独立单元模块将在与系统的其他部分相隔离的情况下进行测试。它集中对源代 码实现的每一个程序单元进行测试,检查各个程序模块是否正确实现了规定的功 能。其目的在于发现各个模块内部可能存在的各种错误。单元测试需要从程序的 内部结构出发设计测试用例,多个模块可以并行进行。它不仅要基于白盒测试, 同时也要基于黑盒测试。单元测试必须是可重复的,在代码修改、升级和产品维 护等阶段,所有的测试都必须在整个系统的生命周期中进行维护。 单元测试的主要任务包括:模块接口测试、模块局部数据结构测试、模块中 所有独立执行通路测试、模块的各条错误处理通路测试和模块边界条件测试。 2 集成测试 时常出现这样的情况,每个模块都能单独工作,但这些模块集成在一起之后 却不能正常工作,其主要原因是模块相互调用时接口会引入许多新问题。集成测 试是组装软件的系统测试,按设计要求把通过单元测试的各个模块组装在一起之 后,进行综合测试以便发现与接口有关的各种错误。集成测试也被称为组装测试 或子系统测试。 集成测试要考虑的问题有:在把各个模块连接起来的时候,模块接口的数据 是否会丢失:一个模块的功能组合是否会对另一个模块的功能产生不利影响:各 个子功能模块组合起来,能否达到预期要求的父功能;全局数据结构是否有问题: 单个模块的误差累积起来,是否会放大,从而达不到接收的程度。 选择什么样的方式把模块组装起来形成一个可运行的子系统呢? 通常有两种 集成方式:一次性集成方式和增殖式集成方式【6 】。 ( 1 ) 一次性集成方式,也称整体组装,首先对每个模块分别进行模块测试,然 后再把所有模块组装在一起进行测试,最终得到要求的软件系统。 ( 2 ) 增殖式集成方式,也称渐增式组装,首先对每个模块进行单元测试,然后 将这些模块逐步组装成较大的系统。在组装的过程中,一边连接一边测试, 以发现连接过程中产生的问题,最后通过增殖逐步组装成为要求的软件系 统。增殖式集成方式又有三种实现方式:自顶向下、自底向上和混和方式 3 确认测试 通过综合测试之后,软件已完全组装起来,接口方面的错误也已排除,这时 就可以开始对软件进行最后的确认测试。确认测试主要检查软件能否按设计需求 正常工作。即是否满足软件需求说明书中的确认标准。实现软件确认要通过一系 列黑盒测试。 4 系统测试 软件是在计算机系统上被执行的,软件丌发完成后应与系统中其他成分集成 在一起,进行一系列系统集成测试。系统测试的目的在于通过与系统的需求定义 做比较,发现软件与系统定义不符合或与其矛盾的地方,并发现与系统其他成分 的兼容性问题。系统测试用例应根据需求发现说明书来设计,并在实际运行环境 下运行盯。 5 回归测试 当系统的功能进行了修改或进行软件升级时,需要进行回归测试。回归测试是 在软件维护阶段,对软件进行修改之后进行的测试,它在转系统测试的预测试结 束后进行。回归测试目的是保证被测应用在系统被修改或扩充( 如用户功能增强或 升级) 后,各项功能依然正确。保证改动不会带来不可预测的行为或错误。测试方 法以黑盒测试为主。 此外,当被测系统或部件的运行环境发生变更时,如操作系统和硬件平台的 改变也应该执行回归测试。而回归测试的停止标准在于,新的测试结果与此前的 测试结果是一致的,或出现差异的原因仅仅在于程序版本的变更,且该差异并不 影响系统的功能。 回归测试用例类型: ( 1 ) 能够测试软件的所有功能的代表性测试用例 ( 2 ) 专门针对可能会被修改影响的软件功能的附加侧试 ( 3 ) 针对修改过的软件成分的测试 2 2 2软件测试的方法分类 软件测试的方法和技术是多种多样的,可以从不同的角度来分类。从是否需 要执行被测软件的角度来看,可分为静态测试和动态测试;从测试是否针对系统 的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。 1 静态测试与动态测试 静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助 静态分析的手段对程序进行检测,主要方法包括:人工测试与计算机辅助静态分 析方法。 动态测试是指通过运行程序发现错误,一般意义上的测试主要是指动态测试。 为了使测试发现更多的错误,需要运用一些有效的方法,一种是黑盒测试,即测 试产品的功能,一种是白盒测试,即测试产品内部结构及处理过程。 2 黑盒测试与白盒测试 黑盒测试也称功能测试或数据驱动测试,是在已知产品所应具有的功能的情 况下,通过测试来检验每个功能是否都能正常使用。黑盒测试在完全不考虑程序 内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能 是否按照需求规格说明书的规定j 下常使用,程序是否能适当地接收输入数据而产 生j 下确的输出信息,并且保持外部信息的完整性。黑盒测试着眼于程序外部结构、 不考虑内部逻辑结构、针对软件界面和软件功能进行测试。黑盒测试方法主要有 等价类划分、边界值分析、因果图、错误推测等,主要用于软件确认测试和系统 测试。 白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序, 检验程序中的每条通路是否按预定要求j 下确工作,而不考虑它的功能。白盒测试 是全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒测试的主要方法 有逻辑驱动、基本路径测试等,主要用于软件验证。 2 3 软件测试的基本原则 软件测试有一些基本的原则需要遵守: 1 千万不要将“测试”与“演示”混为一谈。测试是为了发现错误,而演示 只不过是把整个软件按照流程,操作执行一下。 2 所有的测试都应追溯到用户需求。这是因为软件测试的目标在于揭示错 误,而最严重的错误是那些无法满足用户需求的错误。 3 应该尽早制定测试计划,把“尽早地和不断地进行软件测试”作为软件开 发者的座右铭。由于软件的复杂性和抽象性,以及软件开发各个阶段的多样性等, 使得开发的每个环节都可能产生错误。所以不应把测试仅仅看作是软件开发的一 个独立阶段,应形成把软件测试贯穿到软件开发的各个阶段的观念,坚持软件开 发的阶段评审,以期尽早发现错误,提高软件质量。 4 测试发现的错误中有8 0 很可能源于2 0 的程序模块。这表明应当对错误 群集的程序模块进行重点测试,以提高测试投资的效益。 5 应从“小规模”开始,逐步转向“大规模”。这也就是为什么测试会涉及 生命周期的两个阶段的原因。 6 “彻底测试”是一种理想状态,穷举测试是不可能的,实际要考虑时间、 费用等因素,不允许无休止的测试。一个大小适度的程序,其路径组合是一个天 文数字,因此考虑测试程序执行中的每一种可能性是不可能的,当然,充分覆盖 程序逻辑并确保程序设计中使用的所有条件是可能的。 7 应该由独立的第三方进行测试。基于心理因素,人们不愿意否定自己的工 作:此外由于思维定势,也难于发现自己的错误。因此,为达到软件测试的目的, 应启用客观、冷静、严格的独立第三方。 8 测试应当循序渐进,不要企图一次性测试完,注意。欲速则不达”。软件 测试也和别的工作一样,需要一定的工作量、一定的耐性和方法,如果只注意速 度,那么可能会遗漏更多的错误,从而降低了软件测试的基本目的。 2 4 自动化测试与手工测试的比较 2 4 1自动化测试简介 自动化测试就是将现有的手工测试流程自动化,目的是减轻手工测试的劳动 量,从而提高软件质量。自动化测试流程至少应包含以下两个条件:l 、详细的测 试用例:根据业务功能需求和设计文档编写的测试用例包含可预料的预期结果:2 、 独立的测试环境:包含可恢复测试资料的测试环境,以便在应用程序每次更替后 可以重复执行这些预先编写好的测试用例。 根据软件质量工程协会关于自动化测试的定义:自动化测试就是利用策略、 工具等,减少人工介入非技术性( u n s k i l l e d ) 、重复性( r e p e t i t i v e ) 、冗长( r e d t m d a n t ) 的 测试活动。 2 4 2自动化测试与手工测试的比较 手工测试有着自动化测试所没有的优势一简单。任何一位开发人员都能够 进行手工测试。即便是用户,也很容易掌握手工测试,他们输入数据,并观察软 件的反应( 输出) ,从而判断行为是否正确。大部分的手工测试都是对输入和输出 的检验,是一个端到端的过程,能发现很多问题。但是,手工测试也存在不少问 题: 1 手工测试可能引入错误,人为的输入错误很容易发生,尤其在数据量大的 情况下。 2 大量重复性的手工测试可能使成本增加,如果考虑软件发生改动而需要重 复手工测试的情况,成本将会更高。 3 手工测试的覆盖面不广,只能够测试系统的输入和输出。 4 手工测试没有办法对组件进行隔离的测试,无法对不可视组件进行单独测 试,从而导致发现问题和解决问题的成本都太高。 自动化测试解决了手工测试的不足。虽然初始自动化测试的成本较高,但从 整个的开发过程来看,自动化测试所产生的价值远远超过其成本。其优势主要体 现在: 1 能够解决手工测试不能解决的问题。在压力测试中,可能要测试一个网站 的最大的承受能力,如果手工测试的话,需要设置许多客户端,同时向服务器发 送信息。如果在测试一个大型的网站,或许手工可能没有办法模拟。而利用自动 化测试以后,可以利用软件模拟不同的客户端向服务器发送大量的数据。 2 能够快速有效地验证错误修补。揭示错误的自动化测试通常能够立即在修 补过的代码上重新运行,并确认是使用了相同的输入和计算。 3 能够避免手工测试产生的测试过程信息的不一致,使生成的测试报告不一 致 4 能够快速调试,并减少错误的修补时间。开发人员可以重新运行测试实例, 以便产生新的问题,然后验证说明错误修补后可以工作。若不具备重新实施测试 的能力,那就难以判断修补是否完全地消除了错误。 5 能够提高测试人员的生产效率。测试人员有了更多的时间来设计测试,以 达到更大的覆盖,而不是花时间进入或重新进入测试。在测试人员休息的时候, 可以运行自动化测试软件进行测试,同时也提高了机器的使用效率。 6 能够解决手工测试容易出错的问题。手工测试的时候,不能完全保证数据 的准确性,而自动化测试可以避免测试中的人为因素。 7 运行冗长而复杂的测试时,自动化测试是必需的。某些测试序列可能包括 成百甚至上千条测试消息,这样的测试用手工设置和评价,常常是不可能的,为 了能够准确地重复了一个冗长序列,需要自动化测试。 软件自动化测试的出现,缩短了软件的开发周期,同时节约了人力物力,保 证了软件的质量。自动化测试提高过程管理的质量,同时节省用于产生统计数据 的时间。 9 3 自动化测试技术分析 3 1 自动化测试的生命周期 e l f r e i d ed u s t i n 提出了自动化测试生命周期方法学( a t l m a u t o m a t e dt e s t i n g l i f e c y c l e m e t h o d o l o g y ) 用于指导测试人员如何进行自动化测试。 a t l m 所述的各个阶段具体内容如下: 1 决定自动化测试 在这一阶段,对于测试团队来说,重要的是要进行测试计划,知道自动化测 试的预期结果和列出在币确执行自动化测试后的益处。同时,需要列出自动化测 试工具的备选方案,这对于获得管理层的支持是非常有帮助的。 2 选择测试工具 这个阶段指导工程师对自动化测试工具进行评估,并确定使用的测试工具。 由于测试工具应支持公司大部分测试需求,测试工程师应评审系统环境的其他部 门的需要,给出测试工具评估的标准。测试工程师需定义一个评估的范围来使用 这些测试工具,最后,测试工程跟厂家确定所需使用的测试工具。 3 自动化测试引入阶段 成功引入自动化测试到一个新的项目中需要以下两个步骤:测试过程分析和 测试工具考虑。 4 测试计划、设计和开发 在测试计划这个阶段中,测试团队应制定测试步骤和标准,包括测试环境所 需的软件、硬件和网络,还有测试数据需求,测试的日程安排,性能指标,以及 缺陷追踪流程和所使用的工具等。 在测试设计阶段需要确定所要执行的测试,以及执行这些测试的方法和条件, 同时,还应定义测试设计的标准。 测试开发阶段是为了使自动化测试可重用、可维护,必须定义和遵循测试开 发的标准。 5 测试执行和管理 测试团队必须根据测试的日常安排来执行测试脚本,并改善这些脚本。在这 个过程中还必须评审测试的结果,以避免错误的结果。系统的问题应通过系统问 题报告记录在案,并帮助开发人员理解和重现这些问题。最后,测试团队需要进 行回归测试来追踪和关闭这些问题。 6 测试项目评审 测试项目的评审必须贯穿于整个自动化测试生命周期,以利于测试活动的不 断改进,必须有相应的标准柬衡量评审的结果。 通过运用a t l m 中所概括的系统的方法,一个测试团队就能在测试资源受限 的情况下利用这一途径组织和执行测试活动,并且达到使测试覆盖率最大的目的9 】 i t o l ui i 。 3 2 自动化测试应用的范围及条件 虽然自动化测试有许多优势,但并不是所有的测试都适宜进行自动化测试。 要成功的实现软件测试自动化,软件测试人员要清楚的知道什么时候该自动化, 该自动化哪些方面。以下几方面可以作为考虑自动化测试的标准: 1 回归测试 从软件测试自动化的目的知道,软件测试自动化所获得的好处来自于自动化 测试脚本的重复使用,回归测试应该作为自动化的首要目标。软件自动测试的设 计和开发人员应该自动化那些在每个软件的版本中都要进行的测试。也就是自动 化那些需要重复的测试,一次性的测试是不值得自动化的。 2 对稳定的应用进行测试 由于自动化测试工具的非智能性,对于那些在测试中不稳定的应用,目前的 测试工具还不能做出识别并给出正确的判断,自动化测试脚本需要随着应用或对 象的变化而改动,会在脚本维护上花大量的时间,因而自动化测试也是不值得的。 3 对依赖于外部环境变化的测试不应进行自动化 对于那些依赖于外部环境变化的测试,由于环境的不确定性,会在很大程度 上加大自动化测试的难度,并且自动化执行成功的可能性也大大降低,因此没必 要将这样复杂的测试自动化i l ”。 3 3 自动化测试中遇到的问题 在实际测试工作中,自动化测试发挥了重要的作用。例如使用测试工具进行 自动操作方面的测试,可以节约时间或者更加合理利用资源,以及提高测试质量 等等。但是也发现了使用自动化测试时,不断出现的一些问题。 3 3 1测试工具的选择 在自动化测试的过程中发现,当使用某种测试工具对某项目进行自动化测试 到一定阶段时发现,测试工具不支持被测系统的丌发工具。这就造成了很多的错 误出现,其中一个主要的就是软件测试中,测试工具无法识别屏幕中的控件或某 些对象,为了能继续执行自动化测试,只好依据屏幕象素的相对位置来识别对象。 如果该窗同的大小或者位置发生了变化,则导致后面回归测试的失败。 不同的测试工具具有不同的优点和缺陷。所以,针对丌发的项目选择一款适 合的测试工具是很重要的【1 3 l “】 3 3 2测试人员的水平 测试人员需要判断何时、对哪部分进行自动化测试;对于所选测试工具,测 试人员可能需要进行自动化测试方法及工具的培训;根据测试需要,测试人员可 能需要为自动化测试做前期准备,进行系统测试和记录测试结果。 3 3 3测试环境的还原 自动化测试对测试环境的要求比较严格,开始每个自动化测试案例之前,需 要对环境进行初始化。 首先是数据冲突问题。有的被测程序需要一些基础数据,而在执行某些函数 的测试之i i i 没有产生这些数据。这就是函数的层次结构,这些函数必须以正确的 顺序执行。 其次是数据唯一性的问题。当使用一个数据记录添加到数据库后,在回放的 时候,再次使用相同的数据,就会出现冲突问题i ”1 。 3 3 4时间和工作量的估计 测试工作的目标是在尽可能短的时间内完成尽可能多的测试。在自动化测试 开始前需要明确自动化目标,对工作任务量进行估计,制定测试计划,人员安排 与规划等。自动化测试脚本的维护过程也可能是需要花时间的地方。因此可重用 的自动化测试脚本的质量也是关键的地方。这关系到测试人员的经验及编程能力 等问题。 3 4 自动化测试的步骤 使用不同的测试工具进行自动化测试虽然过程有所不同,但大体都是由以下 三个步骤组成: ( 1 ) 在被测试软件上录制测试过程并回放生成自动化测试脚本 ( 2 ) 增强、调试和改进录制的自动化测试脚本 ( 3 ) 执行自动化测试脚本完成自动化测试 下面分别介绍这三个步骤的主要内容及分析测试工具对其的影响: 1 在被测试软件上录制测试过程并回放生成自动化测试脚本 开始自动化测试过程的第一步是根据测试用例来录制测试活动的过程。首先, 需要对自动化测试工具和被测试的应用程序进行一系列配置,使得当测试人员在 被测试的应用程序中进行测试活动时,自动化测试工具能够捕获测试人员与应用 程序之间的所有交互( 一般为记录鼠标和键盘的活动) ,并根据这些交互生成可 重用的测试脚本,此时可以通过回放录制过程来验证。测试人员在这个阶段需要 考虑的一个关键问题就是,使用的测试工具是否有能力在应用程序的环境中捕获 所有与应用程序的交互。如果,测试工作需要在不同的操作系统上进行( 这在很 多的测试中是被要求的) 同样需要考虑测试工具对不同操作系统的支持情况。因 此,针对被测试应用程序选择合适的测试工具是关键。目前,市面上使用得比较 广泛的测试工具主要有m im e r c u r y 系列的q t p ( q u i c kt e s tp r o f e s s i o n a l ) 和i b m r a t i o n a l 系列的r a t i o n a lr o b o t 、r a t i o n a lf u n c t i o n a lt e s t e r 等。目前,它们都对不 同的操作系统有很好的支持。但每一款测试工具都不是十全十美的,不能解决全 部的问题,对于不能捕获的与应用程序的交互,需要通过编写相应的测试脚本来 实现。 2 增强、调试和改进录制的自动化测试脚本 自动化测试过程的第二步是增强、调试和改进录制的自动化测试脚本。需要 对录制好的脚本代码进行适当修改。如对校验点的修改,可以重新获取测试对象; 如对测试数据的修改,可以通过设置参数为这个脚本输入不同的数据集。如插入 新的测试脚本来实现那些不能捕获即不能被录制下来的与应用程序的交互等。为 了能实现多次回归测试,譬如,让同脚本运行3 次以上仍然成功。必须要保证 每次运行脚本前,测试环境都恢复到初始状态,这也需要编写初始化环境的脚本 来实现。以对数据库开发软件的测试为例,这就要求每次脚本运行前都有相同的 数据库环境,因此需要编写数据库恢复的脚本来保证测试脚本的可用性。另外, 为了增强测试脚本的通用性,即在w i n d o w s 上录制的脚本可以在l i n u x 、u n i x 等 其他操作系统上运行,也需要修改脚本来达到通用性。这也是自动化测试一个很 明显的优势。 3 执行自动化测试脚本完成自动化测试 通过对录制脚本的修改与增强,测试脚本一般都可以顺畅的执行下来。如果 是单个的执行测试脚本还没有显现出自动化测试的强大优势。一般需要批量执行 测试脚本,或者同时在多台不同的操作系统上执行这些测试脚本,将执行结果系 统的呈现出来。这就需要很好地协调测试脚本之日j 以及测试脚本与测试结果之间 的关系和好的测试管理软件的辅助了。目i j f ,一些测试产品已经将这些功能融合 在一起了。 虽然自动化测试的大体步骤相似但选择合适的自动化录制工具、测试脚本 的管理工具以及系统的b u g 管理工具对自动化测试的效率及对b u g 的及时处理 能力有很大影响7 】。 3 5 自动化测试工具分析 3 5 1测试工具介绍 软件系统测试需要各种测试工具的支持,目前的测试工具主要分为5 类:负 载压力测试工具、功能测试工具、白盒测试工具、测试管理工具和测试辅助工具。 1 负载压力测试工具 这类测试工具的主要目的是度量应用系统的可扩展性和性能,是一种预测系 统行为和性能的自动化测试工具。在实施并发负载过程中,通过实时性能监测来 确认和查找问题,并针对所发现问题对系统性能进行优化,确保应用的成功部署。 负载压力测试工具能够对整个企业架构进行测试,通过这些测试,企业能最大限 度地缩短测试时间,优化性能和加速应用系统的发布周期。工具主要有m e r c u r y i n t e r a c t i v e 公司的l o a d r u n n e r 、r a d v i c w 公司的w e b b a d 、m i c r o s o f t 公司的w e b a p p l i c a t i o ns t r e s st o o l 。 2 功能测试工具 通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先 给定的标准结果比较,功能测试工具能够有效地帮助测试人员对复杂的企业级应 用的不同发布版本的功能进行测试,提高测试人员的工作效率和质量。其主要目 的是检测应用程序是否能够达到预期的功能并工f 常运行。工具主要有m e r c u r y i n t e r a c t i v e 公司的w i n r u n n e r q u i e kt e s tp r o f e s s i o n a l 、i b m 公司的r a t i o n a l r o b o t f u n c t i o n a lt e s t e r 、c o m p u w a r ec o r p o r a t i o n 公司的q a r u n i ”l 。 3 白盒测试工具 白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码 级。根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。静态 d 测试工具直接对代码进行分析。不需要运行代码,也不需要对

温馨提示

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

最新文档

评论

0/150

提交评论