【问】:
作为一个测试人员,从业年期从事手工测试的工作是没有太多坏处的,当然,如果一直点来点去那么确实自身得不到提高,这时候选择学习自动化测试是一件很有必要的事情,一来将自己从繁重的重复工作中解放出来,从事一些更有挑战的工作,二来能积累技术知识,厚积薄发完成飞跃,那么技术新人该如何学习自动化测试呢?
【答】-乙醇:
谢邀,关于自动化测试,我以前写过很多的文章来阐述。
这里稍微贴上一些,作为该题的外延知识补充。
《无用的自动化测试》,在这篇文章里我讨论了自动化测试成功的一些必要因素以及自动化测试失败的主要原因——也就是人的原因。
《作死的自动化测试》,这篇文章讨论了新人学习测试技术中的误区以及一些常见的错误节奏
《从龙门镖局看自动化测试》,这篇文字说了些疯话,有心人也许会明白。
回到正题,新人学习自动化是一个艰苦的过程,因为自动化测试失败的案例比成功的案例要多,至少很多人是如此认为。
很多团队都尝试过自动化测试,但一般都是浅尝则止,很少有非纯技术团队能够在自动化测试的道路上坚持下去。
自动化测试是一个很广义的概念,一般说来所有能替代人工测试的方式都属于自动化测试,我们一般说的单元测试就是自动化测试的一种,单元测试很多人称之为“毫秒级的自动化测试”。
自动化测试是很难的,从某种意义上来说比性能测试更难。性能测试可以依仗的东西很多,比如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视频在此
当然了,除了闷头自学,你也可以加入一些学习的qq群与大家交流,志同道合者一起学习效果会更好。
你可以参考《我们为什么需要自动化测试》这篇文章,从而获取更多的帮助。