zoukankan      html  css  js  c++  java
  • 有人说自动化测试的成本高、效果差,那么自动化测试的意义在哪?

    如果是你的领导和你说自动化成本高,效果差,赶紧离开这个团队!

    后面我会说为什么。

    首先要说的是,自动化测试的成本高、效果差,这句话就说就不对。题主对于做自动化测试还是存在很多的误区,或许还是刚刚接触,并没有明白自动化测试带来的价值和意义。

    有人说自动化测试的成本高、效果差,那么自动化测试的意义在哪?

     

    什么是自动化测试,一定有理解偏差!

    可能一说到自动化测试,很多测试者的第一印象就是接口自动化、web自动化、APP自动化,但是这些只是以自动化命名的方案,或者你会说我会用selenium、appium,但是这些也是只工具而已。

    个人拙见,自动化测试是相当于手工测试来说,使用代码或者工具,把复杂的测试工作从手工转化为机器自动执行。比如日志过滤、回放,接口和服务的监控,这些都是可以通过代码把人力解放出来。

    自动化测试的意义,能解决哪些问题?

    你要是刚进入这个行业,可能认为测试就是找bug,但是测试工程师的核心是质量保障。

    那么说进行质量保障的过程中,为什么要引入自动化测试呢?

    举个例子,以前一个项目,一两个月发布一次,现在是一周,甚至有的时候2天就可以发布一个功能。如果是按照这个节奏,研发只需要改一行代码,你却要写很多的用例,甚至要回归,几十条甚至上百条的都有可能。

    他的改动会越来越频繁,每一次的改动,我们都要去做回归的,而这种回归,在这种短时间迭代越来越短的节奏下,其实已经没有办法再靠人力去支撑了。

    有人说自动化测试的成本高、效果差,那么自动化测试的意义在哪?

     

    总结起来就是:

    1、突破效率瓶颈,同时降低人力成本(注意不能把降低人力成本放在核心位置);

    2、降低人为错误率,规避因为人的疲劳和惯性思维以及投机取巧导致的错误;

    3、提升执行效率,以及应对高强度连轴转任务,搞定长时间的系统稳定性测试和高并发场景的压力测试;

    4、增加软件的信任程度;

    除了这些,与手工测试相比,脚本中是可以记录测试设计思路,拓扑图,测试点等相关的信息,是非常优秀的测试信息存储,另外也可以根据脚本中获取到的代码覆盖率,进行情况分析,进而补充测试用例。

    既然自动化测试的优势这么明显和直接,为什么在业内还有有人对自动化测试有抵触和质疑的声音?

    那是因为从团队的老板到做自动化测试的同学,都对自动化测试存在认知上的误区!

    对于自动化测试的认识误区

    在国内的测试行业里面,很多情况下就是“为了做自动化测试而去做自动化测试”这就是典型的本末倒置。无论你在测试的过程中采取什么样的方案和手段,核心都是为了业务去服务的,脱离业务,手段再厉害也没有用。

    不得不说,很多情况下,我们的老板们对于自动化并没有一个合理的预期。很多老板想的是:搞了自动化测试就可以不用手工测试了嘛,然后再招几个价钱低的测试就行了。这是大错特错的。

    关于领导认知层面的问题:

    1、不清楚自动化测试目标是什么,对于达到目标所要进行的投入也没有计划;

    2、盲目幻想,认为自动化测试能够省钱,想着搞起来自动化,省掉多少多少人力成本;

    3、自动化测试如果做的成功的话,是可以节省成本和提高产品质量,但是却把节省人力成本当做核心目标,这样的对于项目来说是致命的;

    4、自动化测试写好一次,能够用很多次,没有必要花很多时间去改代码;

    简单的说一下,如果有这种情况出现,说明你遇到了一个啥也不懂外加异想天开的领导。

    但是作为测试者,对于自动化的认知一样存在很多的误区,尤其是刚开始做,一瓶子不满,半瓶子晃荡的时候,既不能认为自动化能够搞定一切,也不能认为自动化很费时费力,具体情况具体对待。

    当然不可否认的是,自动化测试是存在它本身的局限性的。

    客观存在的局限性:

    1、对于工具而言,是不具备想象力的,一些例如思考、界面、美观、易用性的测试,自动化测试会有些无能为力;

    2、效率较为依赖用例设计,同时用例的开发工作量有时会比手工测试的工作量要大;

    3、如果测试的实践经验比较缺乏,文档少或者不一致,测试发现缺陷的能力也是比较差,这个时候采用自动化测试也是不太好;

    4、对于领导而言,会潜意识期待自动化能够解决遇到的所有问题;另外要认识到,测试没法发现问题,不代表软件没有缺陷,或者测试本身就有问题;

    5、开发那边改一个小小的需求,测试这边要对部分或者全部进行测试,自动化也是一样。这方面的开销或者耗费会打消做测试自动化的积极性。

    6、如果期待自动化去发现大量新的缺陷,这不现实,更大的意义在于用在重复已经运行过的测试。

    所以,说到这里,你就会明白,如果遇到一个不懂自动化测试的领导,而领导的领导又压着他带领你们搞自动化测试,又不愿意采纳自动化大牛的意见建议,那么整体的方向就会走偏,而且会非常的耽误你自身的成长和发展。

    写给测试管理者:

    当然如果你是测试经理或者总监,你就不能简单化和孤立的去看待自动化测试,确保自己能够听取真正理解产品、团队和自动化的测试工程师的判断。

    作为管理层去引入自动化的时候,也一定要思考3个问题:

    • 什么样的项目适合自动化
    • 自动化测试的介入时间
    • 自动化程度和自动化率

    什么样的项目适合自动化:回归测试为主的项目,长期需要做支持维护;覆盖率测试;压力测试。

    自动化测试的时间:在项目的初期可能就不太适合,因为接口和用户界面没有稳定,代码来频繁改动,维护成本会非常的高;到了项目的后期和维护阶段,自动化介入,为回归测试做准备。

    自动化程度和自动化率:项目早期可能不太适合用自动化,但是可以选用某些环节,比如环境的搭建、稳定的公用接口、软件的部署等,这些都是比较稳定的。当然也可以根据具体的项目类型进行不同的调整。

    写给要学习自动化测试的同学:

    基于我的经验,给你6条实用建议

    第一条建议:先学习编程语言,然后再接触自动化工具。

    语言选择上Java或者Python都是可以的,可以先从Python入手,之后再开始Java。在学习语言的过程中,一定要忘掉你是做测试的,把自己当成开发,系统的去学相关的编程知识,因为语言水平的高低,很大程度上就决定了自动化水平的高低。

    第二条建议:打好基础,而不是本末倒置的学习自动化测试工具

    不理解http协议,就不会理解loadrunner、fiddler、soapUI这些工具;不理解HTML,就不会理解firebug。所以基础打好了,才会事半功倍。

    第三条建议:清晰的认清自己,明确自己的目标

    说白了,咱干什么事情之前肯定要先看看自己有几斤几两对吧,先评估一下自己现在的能力水平,然后再看下自己能够投入什么样的资源(精力、时间、资金)去学习,这样才会知道什么样的内容自己能够搞明白,哪个阶段要请教大牛,别整到最后越学越迷茫;其次就是认清自己能力之后,就要给自己定好合理的目标,多长时间达到什么样的水平。

    第四条建议:选择好切入点,设计好对自己帮助最大的方案

    • 接口自动化:Python+Unittest+HtmlTestRuner+Jenkins和Java+Httpclient+TestNG+Jenkins
    • web自动化:Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins
    • APP自动化:Robotium+Java+TestNG+Jenkins,Appium+Java+TestNG+Jenkins,Appium+Python+HtmlTestRunner
    • 辅助测试脚本:以Shell,Python为主来简化重复的工作,过滤日志等

    当然这些都是基本的实现方案,别的先不介绍。如果刚开始接触,我建议是选择语言之后,然后从接口测试入手,然后再学习web和APP自动化。

    第五条建议:贪多嚼不烂,学会举一反三

    新手上路,容易着急,啥都想学,这样就容易混淆,也不好消化。很多地方都是相通的,代码架构、用例管理、等都可以举一反三,既可以提升你的学习效率,也不会混淆。最重要的是不能纸上谈兵,一定要动手去实践。

    第六条建议:不要受限于工具,多用开源

    在测试行业,自动化测试工具有很多,但是大公司趋向于用开源的框架和工具,然后定制适合自己的测试方案。学着用一些开源的例如Webdriver, Appium等去搭建自己的自动化测试工程,然后掌握整体的自动化工作原理,为以后能够搭建自己的工具平台做准备,毕竟搞定自动化,可不是会使用几个工具那么简单。

    自动化测试的最高境界:开发测试工具、设计自动化框架,让别人用。

    写在最后:

    无论你在测试团队中是什么样的身份,无论你对于自动化测试是什么样的认知,也无论你对自动化测试是爱还是恨,自动化都是你从手工测试转为测试开发的必经之路。

    或许你会听到自动化测试成本高、效果差、效率低等负面的反馈,但你要清晰的知道,这都不是自动化测试的问题,对于某种工具,某个方案,最终的效果还是由实施者来去决定的。

    我们能够做到的是正视自动化测试,找准方法,不断的提升自己!

    (文章来源于霍格沃兹测试学院)

  • 相关阅读:
    228. Summary Ranges
    227. Basic Calculator II
    224. Basic Calculator
    222. Count Complete Tree Nodes
    223. Rectangle Area
    221. Maximal Square
    220. Contains Duplicate III
    219. Contains Duplicate II
    217. Contains Duplicate
    Java编程思想 4th 第4章 控制执行流程
  • 原文地址:https://www.cnblogs.com/hogwarts/p/12743434.html
Copyright © 2011-2022 走看看