浅谈测试自动化

作者:skisky                 2007516 
简单地说,“自动化测试”就是自动执行手工测试。自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。自动化测试的目的在于发现老缺陷。而手工测试的目的在于发现新缺陷。

        一、自动化测试的好处
        1.对新版本执行回归测试——测试每个特征
        对于产品型的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的目的。

        2.更多更频繁的测试——沉闷、耗时
        对于产品型软件或需求不断更新的系统,每一版产品发布或系统更新的周期就只有短短的几个月,这就意味着开发周期也只有短短的数月,而在测试期间是每天或每几天要发布一个版本供测试人员测试,一个系统的功能点少则上百多则上千上万,使用手工测试是非常耗时和繁琐的,这样频繁的重复劳动必然会导致测试人员产生厌倦心理、工作效率低下。

        3.弥补手工测试难实现的不足
        压力测试、并发测试、大数据量测试、崩溃性测试等,都需要成百上千的用户同时对系统加压才能实现其效果,用人来测试是不可能达到的,也是不现实的。在没有引入自动化测试工具之前,为了测试并发,组织几十号人在测试经理的口令:1-、2-、3!下,同时按下同一个按钮,但如果需要更大的并发量,就很难实现了。

        4.具有一致性和可重复性
        由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,而这一点手工测试是很难做到的。由于自动化测试的一致性,很容易发现被测软件的任何改变。

        5.更好的利用资源——周未 / 晚上
        理想的自动化测试能够按计划完全自动的运行,测试人员可以设置自动化测试程序在周末和晚上执行测试,白天上班的时候测试人员就可以收集测试所发现的缺陷,并交给开发人员修改,同时测试人员可以在白天开发新增功能的自动化测试脚本,或对已有的脚本不适合的地方进行修改。这样充分的利用了公司的资源,也避免了开发和测试之间的等待。

        6.解决测试与开发之间的矛盾
        通常在开发的末期,进入集成测试阶段,由于每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人员测试出错误的时间。事实上在叠代周期很短的开发模式中,存在更多的矛盾,但自动化测试可以解决其中的主要矛盾。

        7.增加软件信任度
        总之,自动化测试的好处和收益是很明显的,但也只有顺利实施了自动化测试才能从中获得它的益处。

        二、使用自动化测试的误区
        自动化测试好处很多,但也有很多的局限,正因为一些人只认识到了自动化测试的优点,导致对它的期望太高,所以产生了很多执行自动化测试失败的例子。

        1.期望自动化测试能取代手工测试
        某些情况下自动化测试并不适用(本文下面的内容中会提到),所以不能期望在所有的情况下都使用自动化测试来取代手工测试,测试主要还是要靠人工的。

        2.期望自动测试发现大量新缺陷
        自动化测试只能发现已知的问题,所以不能期望自动化测试去发现更多新的缺陷,事实证明新缺陷越多,自动化测试失败的几率就越大。发现更多的新缺陷应该是手工测试的主要目的。

        3.工具本身不具有想象力
        对于一些界面美观和易用性方面的测试,自动化测试工具无能为力。

        4.只要使用自动化测试,就能缩短测试时间、提供测试效率
        自动化测试的前期实现要花费更多的时间,相比创建和执行一个手工测试用例,要花费3~10倍的时间来开发、验证和文档化一个自动化测试用例。

        5.自动化测试工具使用了图形化界面,很容易上手,对人员的要求不高
        简单的“录制 / 回放”方法并不能实现有效的、长期的自动化测试,测试人员还需要对脚本进行优化,这就需要测试人员具有设计、开发、测试、调试和编写代码的能力,最理想的候选人是既有编程经验,又有测试经验。测试过程中还需要安排专业人员对测试脚本库中的脚本进行维护。

        三、不适合自动化测试的情况
        自动化测试不是适合所有公司、所有项目的。

        1.定制型项目(一次性的)
        为客户定制的项目,维护期由客户方承担的,甚至采用的开发语言、运行环境也是客户特别要求的,即公司在这方面的测试积累就少,这样的项目不适合作自动化测试。

        2.项目周期很短的项目
        项目周期很短,测试周期很短,就不值得花精力去投资自动化测试,好不容易建立起的测试脚本,不能得到重复的利用是不现实的。

        3.业务规则复杂的对象
        业务规则复杂的对象,有很多的逻辑关系、运算关系,工具就很难测试。

        4.美观、声音、易用性测试
        人的感观方面的:界面的美观、声音的体验、易用性的测试,也只有人来测试。

        5.测试很少运行
        测试很少运行,对自动化测试就是一种浪费。自动化测试就是让它不厌其烦的、反反复复的运行才有效率。

        6.软件不稳定
        软件不稳定,则会由于这些不稳定因素导致自动化测试失败。只有当软件达到相对的稳定,没有界面性严重错误和中断错误才能开始自动化测试。

        7.涉及物理交互
        工具很难完成与物理设备的交互,比如刷卡的测试等。

        四、什么样的情况适合自动化测试
        自动化测试之所以能在很多大公司实施起来,就是有它适合自动化测试的特点和高的投资回报率。

        1.产品型项目
        产品型的项目,每个项目只改进少量的功能,但每个项目必须反反复复的测试那些没有改动过的功能。这部分测试完全可以让自动化测试来承担,同时可以把新加入的功能的测试也慢慢地加入到自动化测试当中。

        2.增量式开发、持续集成项目
        由于这种开发模式是频繁的发布新版本进行测试,也就需要频繁的自动化测试,以便把人从中解脱出来测试新的功能。

        3.能够自动编译、自动发布的系统
        要能够完全实现自动化测试,必须具有能够自动化编译,自动化发布系统进行测试的功能。当然,不能达到这个要求也可以在手工干预的情况下进行自动化测试。

        4.回归测试
        回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。

        5.多次重复、机械性动作,将烦琐的任务转化为自动化测试
        自动化测试最适用于多次重复、机械性动作,这样的测试对它来说从不会失败。比如要向系统输入大量的相似数据来测试压力和报表。

        6.需要频繁运行测试
        在一个项目中需要频繁的运行测试,测试周期按天算,就能最大限度的利用测试脚本,提高工作效率。

        清晰、合理的判断哪些测试可以采用自动化是提高测试效率和质量的关键。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值