一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就来谈谈关于软件测试中的“自动化测试的优缺点及所存在的问题”。
● 适合自动化测试的对象
在实际工作中,什么样的系统或项目适合自动化测试呢?一般情况下可以从两个方面来考虑:一是重复性和机械性程度;二是判断结果的智力程度,如图 17-1 所示。重复性和机械性越高的项目越适合进行自动化测试,而智力程度越高的项目越不适合进行自动化测试。
图 17-1 适合自动化测试的对象
适合自动化测试的对象可以归纳为以下几类:
重复性和机械性高的功能:重复性和机械性越高的项目越适合进行自动化测试,因为重复性和机械性越高,说明回归测试的次数越多,并且给测试工程师带来疲倦程度可能会越高,这种情况很适合进行自动化测试。
产品生命周期:一般产品生命周期越长的项目越适合进行自动化测试,因为产品生命周期长,说明脚本在后期软件升级后还可以使用,当然如果每个升级版本之间功能和界面变换很大也不适合,但一般不会出现这种情况,而是新增一些功能,这样以前版本的脚本就可以直接使用,就可以更专注于新功能的测试。
多次执行 Build 版本:如果在一个发布的版本过程中(如即将发行 V2.0),有多个 Build测试的版本,并且每个 Build 版本之间同一个功能修改的界面比较少,这种情况适合自动化测试。
多平台测试:如果软件要支持多平台的运行(如软件需要在 Windows XP、Windows Vista、 Windows 7 和 Windows 8 系统运行),每个平台执行的测试用例都是一致的,这样可以采用自动化测试,只要将脚本在不同的平台运行即可,这样可以提高效率。
其实研究某个软件是否适合自动化测试,主要研究收益比(Return On Investment,ROI),即项目进行自动化测试需要的成本与进行手工测试需要的成本关系,很显然当自动化测试的成本比手工测试的成本低时,就可以实施自动化测试。
下面介绍一个简单的自动化测试投入回报率的计算方法:
(1)自动化测试成本=软硬件成本+脚本开发成本+(脚本执行一次的成本×脚本执行次数)+ (每个 Build 版本脚本维护成本×脚本执行次数);
(2)手工测试成本=测试用例设计成本+(手工测试执行一次成本×测试用例执行次数)+(每 个 Build 版本测试用例维护时间×测试用例执行次数);
(3)收益=手工测试成本-自动化测试成本;
(4)ROI(收益比)=收益/自动化测试成本。
● 自动化测试优点
自动化在最近几年之所以发展迅猛,是因为它有手工测试无法比拟的优点:
(1)快速:脚本执行的速度远远快于手工测试执行的速度。
(2)可靠性:每次运行时都执行相同的操作,消除人为的错误。
(3)可重复:可以对被测试系统执行相同的操作。
(4)可重用:可以使用测试脚本重复地测试应用程序的不同版本。
(5)全面性:可以设计更多的测试用例,进而提高每个功能的覆盖率。
(6)高效率:测试人员可以更专注于验证新的功能或新修改的功能,而不需要花费更多的时间验证以前测试版本中已经验证过的功能或模块。
(7)无疲劳:随着测试时间的增加,所有的测试动作在每个版本间不停地重复,测试工程师心理越发疲劳,而自动化测试则没有这方面的问题。
● 自动化测试缺点
自动化测试有着手工测试无法比拟的优点,但同时它也具有很多缺点:
(1)自动化测试永远无法取代手工测试。
(2)手工测试发现的 Bug 比自动化测试发现的 Bug 多得多。
(3)自动化测试对软件质量的依赖性太强。
(4)自动化测试不能提高有效性。
(5)自动化工具并不像人一样具有想象力。
● 自动化测试普遍存在的问题
现在很多企业在引入自动化测试后,发现自动化测试并没有达到想象中的作用,这是自动化测试过程中普遍存在的问题,其主要原因有以下几点。
(1)观念不正确、期望过高。
对软件自动化测试过于乐观、对其期望过高,认为自动化测试能够代替手工测试,能够发现系统中大量的缺陷,不愿花大量的时间做前期脚本的开发和自动化测试框架的开发,导致当自动化测试执行完成后,发现自动化测试并没有想象中那么完美,并不能帮助解决目前遇到的所有问题,也并没有发现几个问题。
(2)缺乏具有良好素质和经验的优秀测试工程师。
千里马需要伯乐,好的测试工具也需要优秀的测试工程师,测试工具本身并没有想象力,而必须由测试工程师将测试计划和测试流程加载进去,只有将工具和人完美地结合才能发挥其更大的作用,这要求测试工程师不仅要熟悉产品的特性和应用领域、熟悉测试流程,还要掌握测试技术和编程技术。
(3)脚本质量影响测试质量。
在自动化测试脚本开发的过程中并不会对脚本进行全面的测试,更多的是依赖测试工程师的经验,这样就无法保证脚本的质量。当无法提供一种机制来保证脚本质量时,脚本将直接影响测试结果的正确性。
(4)没有对测试工程师进行充分的培训。
在自动化测试开始前,需要就自动化测试工具对相关的测试工程师进行充分的培训,如果没有对工程师进行充分的培训,测试工程师无法更深层次地了解工具,这样必然导致测试工程师对工具的使用效率低下,不能充分地发挥测试工具的作用。对工程师的培训不是一次、两次培训课程所能解决的,而应该是长期的、系统地进行培训。
(5)盲目地引进测试工具。
大家都清楚不同的测试工具有自身的特点和适用范围,并不是一个优秀的测试工具就能适用于不同企业或所有项目的需求,在引入测试工具前一定要认真分析该工具是否能解决企业的实际问题,否则工具引进就成了摆设。例如,在整个开发过程中需求和用户界面变动较大,这种情况就不适合引入自动化测试工具,引入之后反而无法提高测试效率。
(6)没有良好的使用测试工具的环境。
建立良好的测试工具应用环境,需要测试流程和管理机制做相应的变化,也只有这样,测试工具才能真正发挥其作用。
(7)认为录制回放就等于自动化。
录制回放是最初级的 GUI 自动化测试,录制生成的代码是非常脆弱的,因为随着软件的开发,很多东西都会改变,这种方式的自动化测试随时可能运行失败。必须对录制的脚本进行“二次”开发,但是需要考虑这种实现的成本,应该综合考虑实现成本与维护成本之间的关系。
(8)只验证和比较界面信息。
在验证自动化测试的实际结果时,不能仅仅验证和比较界面上的显示信息,还要验证和比较其他方面的信息,如文件内容、数据库中的内容等,这样才能保证实际测试结果的正确性。
(9)其他方面。
自动化测试维护测试脚本的工作量比较大,在脚本开发过程中一定要遵守相关的编码规范,这样才能提高脚本的重用性,也可以节约脚本的维护成本,提高工作效率。
今天关于“自动化测试的优缺点及所存在的问题”就学习到这里了,每个工作日小编都会更新一个小知识,希望大家多多关注我们,一起来学习喔!