软件自动化测试.ppt
《软件自动化测试.ppt》由会员分享,可在线阅读,更多相关《软件自动化测试.ppt(77页珍藏版)》请在三一办公上搜索。
1、软件测试基础教程,杜文洁 景秀丽 主编中国水利水电出版社,第七章 软件自动化测试,第七章 软件自动化测试,7.1软件自动化测试概述7.2 自动化测试的策略与运用7.3 常用自动化测试工具简介习 题,本章概要,软件自动化测试自动化测试的方法常用的自动化测试工具。,第七章 软件自动化测试,自动化测试定义及发展简史软件测试自动化的必然性软件测试自动化的引入时机国内软件自动化测试实施现状分析软件测试自动化的引入条件,第七章 软件自动化测试,7.1软件自动化测试概述,7.1软件自动化测试概述,计算机科学发展至今,最根本的意义是解决人类手工劳动的复杂性,成为替代人类某些重复性行为模式的最佳工具。而在计算机
2、软件工程领域软件测试的工作量很大,一般测试会占用到40%的开发时间;一些可靠性要求非常高的软件测试工作量巨大,测试时间甚至占到60%开发时间。而且测试中的许多操作是重复性的,非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务。因而进行自动化测试能够提高软件测试工作效率,提高开发软件的质量,降低开发成本和缩短开发周期。软件自动化测试是相对手工测试而存在的,主要是通过所开发的软件测试工具,脚本等来实现,具有良好的可操作性,可重复性和高效率等特点。已经成为国内软件工程领域一个重要领域;不言而喻,软件测试从业者都意识到软件测试这项工作走向成熟化、标准化的一个必经之
3、路就是要实施自动化测试。,第七章 软件自动化测试,自动化测试定义及发展简史,软件自动化测试就是使用自动化测试工具或手段,按照测试工程师的预定计划进行自动的测试,来验证各种软件测试的需求,它包括测试活动的管理与实施。目的是减轻手工测试的工作量,提高软件的质量。软件的自动化测试在过去一段时间中有长足的进步。每一代技术都解决了很多重要问题。第一代的自动化测试大概在90年代初期,透过硬件的方式录制键盘的输入并播放,但缺少检查点(checkpoint)的功能,由工具录制并记录操作的过程和数据形成脚本,通过回放来重复人工操作的过程。在这种模式下数据和脚本混在一起,几乎一个测试用例对应一个脚本,维护成本很高
4、。而且即使界面的简单变化也需要重新录制,脚本可重复使用的效率低,而且测试脚本很难维护。,第七章 软件自动化测试,自动化测试定义及发展简史,第二代的自动化测试则大约在90年代中后期开始的,这时已经由硬件转变成透过软件录制/播放(capture/playback)的方式产生测试脚本(script),并且也增加了检查点的功能,从数据文件读取输入数据,通过变量的参数化,将测试数据传入测试脚本,不同的数据文件对应不同的测试用例。在这种模式下数据和脚本分离,脚本的利用率、可维护性大大提高,但受界面变化的影响仍然很大。比较大的问题是测试脚本也是一种程序语言,所以测试人员也需 要懂程序语言,换句话说就是要会写
5、程序。而且当软件有变动时,测试脚本也需要同步更新,这对测试人员来说是一大挑战,测试人员常常就是整个测试脚本再重新录制一遍。第三代关键字驱动(keyword driven)的自动化测试,开始于2001年。主要是把测试脚本给抽象化(abstraction),让那些即使不懂测试脚本,不会写程序的非技术人员,也可以使用自动化测试工具建立自动化测试个案。关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。主要关键字包括三类:被操作对象(Item)、操作(Operation)和值(value),用面向对象形式可将其表现为 Item.Opera
6、tion(Value)。关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。,第七章 软件自动化测试,自动化测试定义及发展简史,第四代称为专注于业务需求的自动化测试(Mercury Business Process Testing)。弥补第三代自动化测试工具的不足,从测试脚本的设计、自动化、维护及文件存档都做一个全面且根本的进化,测试用例的设计被从测试工具中分离了出来,并且需要一个具有工具技能和开发技能的测试团队,使专业的测试自动化将技能的使用最优化的结合起来。,第七章 软件自动化测试,软件测试自动化的必然性,1手工测试有它的局限性通过手工测试无
7、法做到覆盖所有代码路径,简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性,重复性,工作量往往较大。许多与时序,死锁,资源冲突,多线程等有关的错误,通过手工测试很难捕捉到。进行系统负载,性能测试时,需要模拟大量数据或大量并发用户等各种应用场合时,很难通过手工测试来进行。进行系统可靠性测试时,需要模拟系统运行10年,几十年,以验证系统能否稳定运行,这也是手工测试无法模拟的。软件测试繁多、沉闷、耗时,对于产品型软件或需求不断更新的系统,每一版产品发布或系统更新的周期就只有短短的几个月,这就意味着开发周期也只有短短的数月,而在测试期间是每天或每几天要发布一个版本供测试人员测试,一个系统
8、的功能点少则上百多则上千上万,使用手工测试是非常耗时和繁琐的,这样频繁的重复劳动必然会导致测试人员产生厌倦心理、工作效率低下。,第七章 软件自动化测试,软件测试自动化的必然性,2自动测试的优势(1)适合做新版本执行回归测试对于产品型的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的目的。(2)具有一致性和可重复性由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,而这一点手工测试是很难做到的。由于自动化测试的一致性,很容易发现被测软件的任何改变。(3)更好的利用资源理想的自动化测试能够按
9、计划完全自动的运行,测试人员可以设置自动化测试程序在周末和晚上执行测试,白天上班的时候测试人员就可以收集测试所发现的缺陷,并交给开发人员修改,同时测试人员可以在白天开发新增功能的自动化测试脚本,或对已有的脚本不适合的地方进行修改。这样充分的利用了公司的资源,也避免了开发和测试之间的等待。,第七章 软件自动化测试,软件测试自动化的必然性,(4)解决测试与开发之间的矛盾通常在开发的末期,进入集成测试阶段,由于每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人员测试出错误的时间。事实上在叠代周期很短的开发模式中,存在更多的矛盾,但自动化测试可以解决其中的主要矛盾。(5)弥补手工测试
10、难实现的不足压力测试、并发测试、大数据量测试、崩溃性测试等,都需要成百上千的用户同时对系统加压才能实现其效果,用人来测试是不可能达到的,也是不现实的。在没有引入自动化测试工具之前,为了测试并发,组织几十号人在测试经理的口令下,同时按下同一个按钮,但如果需要更大的并发量,就很难实现了。,第七章 软件自动化测试,软件测试自动化的必然性,自动化测试较手工测试具有很多优点,它可以缩短软件开发测试周期,可以让产品更快投放市场;测试效率高,充分利用硬件资源;节省人力资源,降低测试成本;增强测试的稳定性和可靠性;提高软件测试的准确度和精确度,增加软件信任度。自动化软件测试工具使测试工作相对比较容易,但能产生
11、更高质量的测试结果。手工不能做的事情,自动化测试能做,如负载,性能测试。软件测试实行自动化进程,绝不是因为厌烦了重复的测试工作,而是因为测试工作的需要,更准确地说是回归测试和系统测试的需要。在过去的数年中,通过使用自动化的测试工具对软件的质量进行保障的例子已经数不胜数。到现在为止自动化测试工具已经足够完善了,完全可以通过在软件的测试中应用自动化的测试工具来大幅度的提供软件测试的效率和质量。在使用自动化的测试工具的时候应该尽早的开始测试的工作,这样可以使修改错误更加的容易和廉价,并且可以减少更正错误对软件开发周期的影响。通下表我们可以看出自动化测试与传统的手工测试在所有的方面都有很大的不同,尤其
12、是在执行测试和产生测试报告的方面。这个测试案例中包括1750个测试用例和700多个错误。,第七章 软件自动化测试,软件测试自动化的必然性,第七章 软件自动化测试,表7-1 手工测试与自动化测试的比较,软件测试自动化的必然性,目前软件开发过程中,迭代式的开发过程已经显示了比瀑布式开发的巨大好处,并已逐渐的取代传统的瀑布式开发成为了目前最流行的软件开发过程。在迭代开发中强调在较短的时间间隔中产生多个可执行、可测试的软件版本,这就意味着测试人员也必须为每次个迭代产成的软件系统进行测试。测试工作的周期被缩短了,测试的频率被增加了。在这种情况下,传统的手工测试已经严重的满足不了软件开发的需求。当第一个可
13、测试的版本产生后,测试人员开始对这个版本的系统进行测试,很快第二个版本在第一个版本的技术上产生了,测试人员需要在第二次测试时重复上次的测试工作,还要对新增加的功能进行测试,每经过一个迭代测试的工作量会逐步的累加。随着软件开发过程的进展,测试工作变得越来越繁重,如果使用手工测试的方法,将很难保证测试工作的进度和质量。在这种情况下应用良好的自动测试工具将势在必行。通过使用自动化测试工具测试人员只要根据测试需求完成测试过程中的所需的行为,自动化测试工具将自动生成测试脚本,通过对测试脚本的简单修改便可以用于以后相同功能的测试了,而不必手工的重复已经测试过的功能部分。,第七章 软件自动化测试,软件测试自
14、动化的必然性,其次,在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上,有很大一部分重复性强的测试工作,是可以独立开来自动实现的。最后,测试人员通常很难花费大量时间来学习新技能,这是目前国内测试从业者的现状,太多的企业为了节约成本而将刚刚走出校门的毕业生作为测试工程师,他们每日做着繁忙的重复工作,却无法深入学习测试技能。而软件测试自动化将改变这种局面,也是未来测试工程师或即将成为测试工程一项强有力的工作技能。可以说,实施测试自动化是软件行业一个不可逆转的趋势,如果在这个领域走在了前列,无论从企业的核心竞争力还是个人的工作技能来说,都有巨大的优越性,而国内众多的软件厂商也的确在纷至沓
15、来的着手开展着这项工作。,第七章 软件自动化测试,软件测试自动化的引入时机,自动化测试之所以能在很多大公司实施起来,就是有它适合自动化测试的特点和高的投资回报率。清晰、合理的判断哪些测试可以采用自动化是提高测试效率和质量的关键。1产品型项目产品型的项目,每个项目只改进少量的功能,但每个项目必须反反复复的测试那些没有改动过的功能。这部分测试完全可以让自动化测试来承担,同时可以把新加入的功能的测试也慢慢地加入到自动化测试当中。2增量式开发、持续集成项目由于这种开发模式是频繁的发布新版本进行测试,也就需要频繁的自动化测试,以便把人从中解脱出来测试新的功能。3能够自动编译、自动发布的系统要能够完全实现
16、自动化测试,必须具有能够自动化编译,自动化发布系统进行测试的功能。当然,不能达到这个要求也可以在手工干预的情况下进行自动化测试。4回归测试回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。5多次重复、机械性动作,将烦琐的任务转化为自动化测试自动化测试最适用于多次重复、机械性动作,这样的测试对它来说从不会失败。比如要向系统输入大量的相似数据来测试压力和报表。,第七章 软件自动化测试,软件测试自动化的引入时机,6需要频繁运行测试在一个项目中需要频繁的运行测试,测试周期按日算,就能最大限度的利用测试脚本,提高工
17、作效率。7能够充分利用休息时间测试的执行与控制,包括单机运行和网络多机分布式的运行,在节假日的运行,测试个案调用控制,测试对象,测试范围与测试版本的控制等。在进行自动化测试前,首先要建立一个对软件测试自动化的认识观.软件测试工具能提高测试效率,覆盖率和可靠性等,自动化测试虽然具有很多优点,但它只是测试工作的一部分,是对手工测试的一种补充。自动化测试绝不能代替手工测试,它们各有各自的特点,其测试对象和测试范围都不一样:在系统功能逻辑测试,验收测试,适用性测试,涉及物理交互性测试时,多采用黑盒测试的手工测试方法单元测试,集成测试,系统负载测试,性能测试,稳定性测试,可靠性测试等比较适合采用自动化测
18、试。那种不稳定软件的测试,开发周期很短的软件,一次性的软件等不适合自动化测试。工具本身并没有想象力和灵活性,根据报道,自动化测试只能发现15%的缺陷,而手工测试可以发现85%的缺陷。自动化测试工具在进行功能测试时,其准确的含义是回归测试工具,这时工具不能发现更多的新问题,但可以保证对已经测试过部分的准确性和客观性。多数情况下,手工测试和自动化测试应该相结合,以最有效的方法来完成测试任务。,第七章 软件自动化测试,国内软件自动化测试实施现状分析,当前国内软件企业实施或有意向实施测试自动化时面临的主要问题有如下几点:1认为自动化测试是个遥不可及的事情,很多小公司人员、资金、资源都不足,不必实施。热
19、血沸腾的实施测试自动化,购买了工具,推行了新的测试流程;但是时间不长测试流程又回到原来的模式。2公司实施了自动化测试;然而开发与测试之间,甚至与项目经理之间矛盾重重,出了事情不知如何追究责任;虽然还在勉强维持的自动化测试,但实施的成本比手工测试增加了,工作量比从前更大了,从而造成项目团队人员对自动化测试的怀疑3自动化测试实施相对比较成功,但或多或少还有些问题,比如工具选择不准确,培训不到位,文档不完备,人员分配不合理,脚本可维护度不高等,造成一种表面上的自动化测试流程,是一幅空架子。,第七章 软件自动化测试,国内软件自动化测试实施现状分析,产生这些问题主要目前国内的软件公司,很多还是处于获取资
20、本的原始积累阶段,我们不能说公司完全不重视测试,而是测试整体行业都没有被重视起来。公司高层有更需要重视的环节,例如寻找客户签订单,或者开发,这些是直接关系公司存亡的命脉性东西。更意识不到软件测试自动化的重要性;所谓凡事预则立,不预则废。一个软件企业实施测试自动化,绝对不是一蹴而就的,它不仅涉及测试工作本身流程上、组织结构上的调整与改进,甚至也包括需求、设计、开发、维护及配置管理等其他方面的配合。软件开发是团队工作,在这一领域要尤其注重以人为本;所以人员之间的配合、测试组织结构的设置非常重要,每个角色一定要将自己的责任完全担负起来,这也是减少和解决前述团队矛盾的必要手段。这对开展自动化测试的监督
21、和评估相当重要,也包括对工作产品的检查和人员的考核。一定要将自动化测试全面深入的贯彻到测试工作中,不能敷衍了事,不能做表面工作。,第七章 软件自动化测试,软件测试自动化的引入条件,1对软件测试自动化的正确认识自动化测试能大大降低手工测试工作,但决不能完全取代手工测试。完全的自动化测试只是一个理论上的目标,实际上想要达到 100%的自动化测试,不仅代价相当昂贵,而且操作上也是几乎不可能实现。一般来说,一个40-60%的利用自动化的程度已经是非常好的了,达到这个级别以上将过大的增加测试相关的维护成本。测试自动化的引入有一定的标准,要经过综合的评估,绝对不能理解成是测试工具简单的录制与回放过程。(1
22、)自动化测试能提高测试效率,快速定位测试软件各版本中的功能与性能缺陷,但不会创造性的发现测试脚本里没有设计的缺陷。测试工具不是人脑,要求测试设计者将测试中各种分支路径的校验点进行定制;没有定制完整,即便事实上出错的地方,测试工具也不会发觉。因此,制订全面、系统的测试设计工作是相当重要的。,第七章 软件自动化测试,软件测试自动化的引入条件,(2)自动化测试能提高测试效率,但对于周期短、时间紧迫的项目不宜采用自动化测试。推行自动化测试的前期工作相当庞大,将企业级自动化测试框架应用到一个项目中也要评估其合适性,因此决不能盲目的应用到任何一个测试项目中,尤其不适合周期短的项目,因为很可能需要大量的测试
23、框架的准备和实施而会被拖跨。(3)实施测试自动化必须进行多方面的培训,包括测试流程、缺陷管理、人员安排、测试工具使用等。如果测试过程是不合理的,引入自动化测试只会给软件组织或者项目团队带来更大的混乱;如果我们允许组织或者项目团队在没有关于应该如何做的任何知识的情况下实施自动化测试,那将肯定会以失败告终。,第七章 软件自动化测试,软件测试自动化的引入条件,2对企业自身现状的评估分析(1)企业规模企业规模没有严格限制。无论公司大小,都需要提高测试效率,希望测试工作标准化,测试流程正规化,测试代码重用化。所以第一要做到的,就是企业负责人开始,直到测试部门的任何一个普通工程师,都要树立实施自动化测试的
24、坚定决心,不能抱着试试看的态度。一般来说,一个软件开发团队应该符合如下条件则可以优先开展自动化测试工作:测试、开发人员比例要合适,例如1:1到2:3;开发团队总人数不少于10个。当然,如果只有三五个测试人员,要实施自动化测试绝非易事;但可以先让一个、两个测试带头人首先试着开展这个工作,不断总结、不断提高,并和层层上司经常汇报工作的开展情况,再最终决定是否全面推行此事。,第七章 软件自动化测试,软件测试自动化的引入条件,(2)产品特征一般开发产品的公司实施自动化测试要比开发项目的公司要优越些。原因很简单,就是测试维护成本和风险都小。产品软件开发周期长,需求相对稳定,测试人员可以有比较充裕的时间去
25、设计测试方案和开发测试脚本;而项目软件面向单客户,需求难以一次性统一,变更频繁,对开发、维护测试脚本危害很大,出现问题时一般都以开发代码为主,很难照顾到测试代码。但不是说做项目软件的公司不能实施自动化测试,当前国内做项目的软件公司居多。只要软件的开发流程、测试流程、缺陷管理流程规范了,推行自动化测试自然水到渠成。,第七章 软件自动化测试,软件测试自动化的引入条件,(3)软件自动化测试切入方式的风险正如前面所言,一定要记住将自动化测试与手工测试结合起来使用,不合理的规划会造成工作事倍功半。首先,对于自动化测试率的目标是:10%的自动化测试和 90%的手工测试。当这些目标都实现了,可以将自动化测试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 自动化 测试
链接地址:https://www.31ppt.com/p-5018937.html