自动化软件测试的发展前景怎么样?
作者:网络转载 发布时间:[ 2012/8/8 14:21:33 ] 推荐标签:
问题描述:
自动化测试的发展前景怎么样?相比于开发,测试的技术含量是否偏低?测试人员提升自身竞争力的速度是否没开发快?
精彩答案:
徐毅:
我曾经做过测试自动化,也维护过测试自动化框架,还做过培训师,也做过测试自动化教练。
测试自动化和任何其他一个职位或角色都没有区别,无非是干个活,只是所需要具备的技能不同而已。拿测试和开发比,像拿着桃子和葡萄比,有什么意思呢,两者都有价值,而且还得合作才能创造更大的价值;至于测试和测试自动化,很多人混为一谈,以为是差不多的玩意儿,其实这个中间的区别很细致且很多。
自动化的前景完全不必担忧,且不说人类社会发展的大方向是自动化,难道我们如今不是把很多很多的工作都交给了各种工具么?这些工具不都是什么看得见的机器人,软件和网络服务也是在自动化我们以往必须动手的工作。想一下Excel里给财务数据排个序,谁还能回想一下没有类似工具的时候我们是怎么做的?以及,没有计算器的时候,我们怎么计数?
如今连富士康这种劳动密集型企业也终于幡然醒悟开始引入自动化机器人的时候,还在这里争论测试自动化的前景,真的没有必要。但是,同样一个东西,也有做得好做得不好的区分。你说,手机有没有前途?平板有没有前途?苹果来做,那是真有前途;山寨呢?算是看得见市场的前景一片光明,他们也不见得一定能走向这段前途。
市场有没有前景是一回事,自己能否把握住,是另一回事。测试自动化一定是未来的方向,目前软件开发这一块所流行的敏捷、DevOps、持续交付、持续部署啥的,通通都是以自动化为根基的(不仅仅是测试的自动化),没有自动化能够做到么?
测试和开发的技术含量这个问题太热门,但很多人在讨论中都缺乏逻辑。什么是技术含量?哪些技术?如何比较?拿苹果跟葡萄比汁水多,不是找抽么。测试工作的关键或核心品质在于思维,测试思维,手头的操作能力固然重要,但是没有相应的测试思维,设计出来的测试用例执行再快、各种图形化显示再炫,也是垃圾测试用例,因为它们没有效果啊!拿测试工作人员去跟开发工作人员比拼谁代码写得好,有意思么?要是代码写得很好,又在犹豫这个问题,那你应该直接去做开发,更能够发挥自己的长处。当然,肯定有一些朋友是代码写得好,又很有测试的思维的,那更好啦,路非常宽:去做开发,他们的测试思维能帮助他们写出更好的代码;去做测试,他们的编码能力能够帮助他们更好更快地帮助开发人员找到问题的根源并解决问题,甚至于他们可以直接修复问题,从研发整体来看可以降低bug修复成本、提高bug修复速度,因为他们在发现bug的一线把bug给修复了。
测试的主要工作是收集证据、形成假设,执行操作、验证假设。和CSI很像,这也是Cem Kaner他们在一次演讲中说过的。测试人员的关键在验证“逻辑”,验证“合理性”,而开发人员的关键在于证明“可行性”。这明明是两种不同的工作内容,要去比较他们的技术,该如何比呢?都是做软件,都是做同一个产品,自然有很多相同的都要懂的东西,但是需要懂的程度各不相同,如果一定要比较,那也是有高下的,开发人员的测试技术含量一般来说没有测试人员高,而测试人员的开发技术含量一般来说也没有开发人员高。这种结果比出来也是很无聊的,对不对呀?同一个系统,开发人员要对系统进行修改和增加功能,他们必须要知道系统的设计原理、架构,以及相应的开发语言和环境,还要去读代码,理解代码的实现,因为这些都是他们增加新功能新代码的时候会涉及到的。而测试人员呢?当然也要了解系统的设计原理和架构,因为这样才能相应地设计出充分且足够的测试用例去覆盖,语言和代码部分了解即可,环境当然也要懂,但主要的不是开发环境,而是测试环境。那么,我们可以说,开发对系统的熟悉要达到“掌握”的程度,而测试熟悉到“理解”程度也差不多够了。
但是我们再回过来看的话,开发通常只需要也只能够了解系统的一部分,因为他们要深入,要掌握这一部分所有的细节。而测试呢,因为不需要深入了解实现的过程和知识,更关注的是软件的呈现,通常所负责的范围会比开发的宽,知道系统更多部分的原理。从这个角度来比较,开发的知识量远远不足啊,好比是开发只知道一个模块,而开发却知道好几个甚至十几二十个模块,谁更牛?
有些朋友可能不爽了,说开发也懂很多模块的啊?别拿个例来说话,那测试也一样有很牛逼的人呢。我们说的是一般情况,也即average的情况。任何一个人只要肯投入时间不断地精炼自己的能力,横跨几个领域不也是很正常的事情么,这一点《异类》等文章里有描述,不多说。但另一点不得不提的是,上述的说法也取决于所处的行业以及产品的关键因素在哪里,也决定了开发、测试的边界在何处,也决定了开发、测试人员的比例以及他们对这个问题的回答。比如coolshell在博客和微博上都有表过的态,他认为不需要有专职的测试(有兴趣的去看他博客、微博,此处不讨论)。
提升自身竞争力,跟担当什么角色没有关系。只要你能认清楚角色的价值、所需要具备的技能,不断地修炼、反思和继续提高,行。开发工作每天都有写代码这个很明确的任务驱动着,要学习什么通常也有解决问题(例如需要找到某个API来实现某个功能)来驱动着,所以相对来说,提高的进度更可见。而测试人员,更重要的是理解各种“道理”,也即系统运行的道理、各模块集成的道理、客户提交bug背后的道理,这些,则是不那么容易见效的东西,而当你认清楚了一个道理的时候也并没有那么容易被人看见,所以只是相对来说,提高的进度不那么可见。因而会让大家觉得好像测试的提升没有开发快。
但测试有一个好处,是道理通常都是想通的,在顺畅的情况下,到了职业发展的中期,相对来说会体现出更大的优势,因为,由于工作所养成的习惯,更喜欢也更容易做到触类旁通、举一反三。(别跟我谈开发也可以,当然可以,他们学好了一门语言,学另一门自然快。但我谈的是理解不同的模块、部件、子系统、系统等等这个维度。)
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11