51Testing软件测试论坛
标题:
如何学习自动化测试?
[打印本页]
作者:
lsekfe
时间:
2016-7-18 15:11
标题:
如何学习自动化测试?
作为一个测试人员,从业年期从事手工测试的工作是没有太多坏处的,当然,如果一直点来点去那么确实自身得不到提高,这时候选择学习自动化测试是一件很有必要的事情,一来将自己从繁重的重复工作中解放出来,从事一些更有挑战的工作,二来能积累技术知识,厚积薄发完成飞跃,那么技术新人该如何学习自动化测试呢?
作者:
lsekfe
时间:
2016-7-18 15:12
作者:乙醇
来源:知乎
无用的自动化测试,在这篇文章里我讨论了自动化测试成功的一些必要因素以及自动化测试失败的主要原因——也就是人的原因。
作死的自动化测试,这篇文章讨论了新人学习测试技术中的误区以及一些常见的错误节奏
从龙门镖局看自动化测试,这篇文字说了些疯话,有心人也许会明白。
回到正题,新人学习自动化是一个艰苦的过程,因为自动化测试失败的案例比成功的案例要多,至少很多人是如此认为。
很多团队都尝试过自动化测试,但一般都是浅尝则止,很少有非纯技术团队能够在自动化测试的道路上坚持下去。
自动化测试是一个很广义的概念,一般说来所有能替代人工测试的方式都属于自动化测试,我们一般说的单元测试就是自动化测试的一种,单元测试很多人称之为“毫秒级的自动化测试”。
自动化测试是很难的,从某种意义上来说比性能测试更难。性能测试可以依仗的东西很多,比如LR等,而自动化测试的工具很多情况下只是一个半成品,比如selenium webdriver,你需要花很多时间去使用代码编写用例,并且维护这些用例,这一过程是漫长而艰辛的,特别对一些没有开发经验的测试同学来说,这个过程非常痛苦,每天的工作内容好像是自虐,而且自虐一段时间后信心基本崩溃,从此谈自动化色变,把所以的错归结于自动化测试策略与技术,而不从本身去找问题。
不过相比于性能测试而言,自动化测试的实践者往往是更加幸运的。最简单的例子是一般的性能测试人员离开了工具基本上就无所作为了,而自动化测试人员则可以利用自己掌握的语言知识与代码知识自己创造工具,说实在的,这是一件很有成就感的事情,乙醇自己就在写工具,从简单的cli工具到复杂的web工具,一切都是托以前自动化测试实践的福。
自动化测试很难,那么我们为什么要坚持自动化呢?
单元测试是保证代码质量最基本也是最根本的途径,单元测试是自动化测试的一种,因此自动化的重要性不言而喻;
集成测试在很多情况下非常适合使用自动化的手段去运行,最明显的例子是rails里的integration test;
当你的单元测试和集成测试都没做好,甚至是没有做的情况下,UI级的自动化测试可以扮演救火队员的角色,尽管成本很高,但是可维护的UI测试代码是回归测试的福音,也是提高测试生产力的重要手段;
自动化测试可以培养团队,一个团队如果可以把自动化测试做好,那么他们的开发水平一定不低,而且如果这些人去做开发,代码的质量反而比一般的开发人员要高,原因很容易理解,测试人员坚信没有测试过的东西就是不可信的,代码如果没有被测试过,那么代码自然是不可信的,不可信的代码就需要用单元测试去覆盖,因此这可以从根本上提高代码的质量。
那么自动化测试如何去学习呢?乙醇这里给出一个很平滑的线路图。
学习一门脚本语言,ruby python or javascript。当然,如果你信仰优雅,追求美感的话,你可以学习ruby,学习资料在这里
学习语言的过程是漫长而枯燥的,你可以通过使用selenium webdriver api来更加有效率的学习。在学会自动化测试的同时也搞定了一门语言,而且每一步都很有成就感。Selenium的学习资料首推webdriver实用指南,该书大道至简,而且涵盖了java ruby和python,无论是作为案头书还是技术食谱都是很好的选择。
最后你可以学一点移动开发的知识,appium是个很好的选择,你可以使用appium来测试ios和android移动端的应用。appium的教程在这里appium - 标签
当然了,除了闷头自学,你也可以加入一些学习的qq群与大家交流,志同道合者一起学习效果会更好。
作者:
lsekfe
时间:
2016-7-18 15:13
作者:杜亮
来源:知乎
会一门编程语言是必要,会哪一门取决于你用的工具类型。QTP用VB,Selenium用的比较多java/C#/ruby/python等,SilkTest用java/4test。这么多工具学哪一个呢?先自行脑补下测试工具的区别,再根据你所从事的的行业类别(web/移动端/服务器)选择对应的工具。如果你所在的公司暂时没有自动化工具,那你就学Selenium吧,语言自行脑补下(怎么这么多脑补,因为确实不是一两句话能说清的),找到自己喜欢的编程语言,如果怕找不到工作那就学java吧。
学到什么程度,怎么学?不要一上来就学工具,没有意义,工具也是代码实现的。先按开发的标准来学一门语言,买一本经典的书,找一套学习视频(淘宝很多,请支持正版),先学基础,再学框架,然后往死里code,独立完成一个项目的编码(没有想象中的复杂),写点小工具。
这时候你已经具备找一份搬砖的工作了,回过头来学工具,找个api文档,然后还是往死里code,有兴趣可以读一读工具的源码(Selenium是开源的)。
当你写的用例达到上百了,这时候你会考虑如何维护这些用例了,然后你不满足于只能在IDE里跑跑,开始考虑集成管理,可视化操作。
当你经过几个版本之后发现每次转测通过率都很低,这时候你会考虑持续集成和每日构建了。
这时候你可以宣布自己初入自动化之门了,可以换个地图升级了。
__________________________分割线_____________________________
上面的内容还是一年前写的,最近陆续收到一些赞和感谢,一年过去了,软件测试大环境又变了很多,再补充一些个人经验。
首先是定位,自动化也有很多方向web、接口、APP,不同的方向所要掌握的技能点也不一样,很少有开源的工具能够解决所有类型的自动化,而专一解决某种类型的自动化工具功能比较单一,需要集成其他工具来完成最终的每日构建。下面分别介绍三种类型的自动化:
时下最炙手可热的APP自动化
随着移动端创业的热潮,APP从业者的薪资也跟着水涨船高,APP自动化测试这个新兴的分支正在蓬勃发展中。APP平台有很多,andorid、iOS市场份额最高,小众的还有winPhone(后面会被WIN10淘汰)、黑莓、firefox。市场最高的也是需求最大的,选择android还是iOS取决于你的兴趣,编程语言、API Library、操作环境几乎没有交集,但起点都是一样的,就是去编写一个该平台下的APP。写的目的很简单,在不了解HTML的前提下能坐好web自动化吗?APP也是由各种原生的element构成,只有用过了才知道如何去定位、获取其属性等等。不过对于新手来说,要做好的APP自动化测试门槛比较高,从零基础到把测试框架运行起来,中间的战线会拖的漫长,没有足够的毅力和精力很难坚持下去,但做好了附加值也是相当高的。
老牌的接口自动化
在三种类型的自动化测试中,不管是从人力、财力投入还是回报率上,接口测试都是实施性价比最高的。很遗憾的是,目前为止我并有找到一款合适的开源工具能够解决接口自动化所需的全部需求,举个例子,我需要校验redis或者memcache缓存中的KEY值,这个需求目前只有自己写Library适配框架了。但是,像BAT这些有积累的大公司,是有内部工具解决这一切需求的,你要做的就是学好这个工具,然后融会贯通地使用就可以了。自学的话,推荐robotframework,里面有两个HTTP Library,任选一种。
日渐式微的WEB自动化
09左右的时候,提自动化必提QTP,俨然自动化领域的霸主,不过后来的事情大家都知道了。web自动化最大的问题在于撰写和维护的成本过高,如果你调试过那种几十层嵌套的前端框架你就会理解连定位一个元素都变得十分不易,维护的成本高是指web自动化在版本稳定之前介入的话会让整个团队死得很难看,而当版本稳定之后web端又是最不容易出问题的,前提是有接口自动化的保障。所以选择web自动化的公司我的理解,要么是想不开,要么是不缺钱。但web自动化的缺口也是很大的,小伙伴们不要被我个人的理解所吓倒,一个精通selenium的测试工程师绝对是IT公司哄抢的香馍馍。
编辑于 2016-06-08 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利
2
赞同反对,不会显示你的姓名
Vein Su ,软件工程师
2 人赞同
根据你的项目情况学习一门对应的语言,了解自动化框架,根据自动化框架的规则,将手工的用例翻译成脚本,等熟练掌握了脚本的开发,执行,分析结果后,想更深入的话,深入了解框架,看源码,根据需要尝试着修改源码,进行框架的二次开发。
发布于 2015-01-23 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利
0
赞同反对,不会显示你的姓名
狼五 ,路
随着系统的迭代与人力成本的上升,未来测试发展的发方向肯定是自动化。自动化的本质是替代重复的劳动,解决效率的问题,而不是说全面去做测试,替换当前所谓的手工测试。
因此,对于自动化测试而言,是分辨目标,了解自动化测试的原理、本质,它所解决的主要问题是什么,它的不足是什么。然后才是术的东西,即使用了什么框架,使用了什么技术之类的。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2