自动化测试来源于知乎

著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:乙醇 链接:http://www.zhihu.com/question/22211535/answer/20638960 来源:知乎

谢邀,关于自动化测试,我以前写过很多的文章来阐述。 这里稍微贴上一些,作为该题的外延知识补充。
无用的自动化测试,在这篇文章里我讨论了自动化测试成功的一些必要因素以及自动化测试失败的主要原因——也就是人的原因。
作死的自动化测试,这篇文章讨论了新人学习测试技术中的误区以及一些常见的错误节奏
从龙门镖局看自动化测试,这篇文字说了些疯话,有心人也许会明白。
回到正题,新人学习自动化是一个艰苦的过程,因为自动化测试失败的案例比成功的案例要多,至少很多人是如此认为。

很多团队都尝试过自动化测试,但一般都是浅尝则止,很少有非纯技术团队能够在自动化测试的道路上坚持下去。

自动化测试是一个很广义的概念,一般说来所有能替代人工测试的方式都属于自动化测试,我们一般说的单元测试就是自动化测试的一种,单元测试很多人称之为“毫秒级的自动化测试”。

自动化测试是很难的,从某种意义上来说比性能测试更难。性能测试可以依仗的东西很多,比如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群与大家交流,志同道合者一起学习效果会更好。

你可以参考我们为什么需要自动化测试这篇文章,从而获取更多的帮助。

时间: 2024-11-12 21:50:57

自动化测试来源于知乎的相关文章

python程序打包,来源于知乎(已验证)

百度经验方法:https://jingyan.baidu.com/article/22a299b5ec76869e19376ad9.html pandas导包问题解决方案: 修改原有的打包代码为: pyinstaller -F -w -i xxx.ico yyy.py --hidden-import=pandas._libs.tslibs.timedeltas 1 -F 指只生成一个exe文件,不生成其他dll文件 -w 不弹出命令行窗口 -i 设定程序图标 ,其后面的ico文件就是程序图标 y

深度学习最全优化方法---来源于知乎

写在前面:本宝宝好想只了解sgd,monument,adagrad,adam深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam) ycszen 1 年前 前言 (标题不能再中二了)本文仅对一些常见的优化方法进行直观介绍和简单的比较,各种优化方法的详细内容及公式只好去认真啃论文了,在此我就不赘述了. SGD 此处的SGD指mini-batch gradient descent,关于batch gradient descent, stochas

来源于知乎大神对node.js的形象理解

先复习小学语文课文,华罗庚的<统筹方法>. 比如,想泡壶茶喝.当时的情况是:开水没有:水壶要洗,茶壶茶杯要洗:火生了,茶叶也有了.怎么办? 办法甲:洗好水壶,灌上凉水,放在火上:在等待水开的时间里,洗茶壶.洗茶杯.拿茶叶:等水开了,泡茶喝. 办法乙:先做好一些准备工作,洗水壶,洗茶壶茶杯,拿茶叶:一切就绪,灌水烧水:坐待水开了泡茶喝. 办法丙:洗净水壶,灌上凉水,放在火上,坐待水开:水开了之后,急急忙忙找茶叶,洗茶壶茶杯,泡茶喝. 哪一种办法省时间?我们能一眼看出第一种办法好,后两种办法都窝了

知乎广告投放后台在哪里?哪里可以对接投放?

专业相关:互易众合移动营销,我国抢先的营销安排,知乎信息流广告的第一批尝鲜者,现已帮助多个品牌产品查验过知乎信息流广告. 知乎广告上线有点时刻了,针对品牌客户投进比较多,主要是针对移动端的广告位偏多,叫做知乎作用广告,知乎的广告是授权给代理商来操作投进和对接效能客户的,我知道的代理商有互易众合(北京)广告有限公司,他们家仍是比较专业的,之前有在他们那儿做过,但不是知乎,作用比较靠谱,投进的办法也都能够去他们的网站在线咨询下!? 作为一名互联网广告的从业者,一些PGC/UGC途径一旦流量做大了,根

JavaScript - 收藏集 - 掘金

Angular 中的响应式编程 -- 浅淡 Rx 的流式思维 - 掘金第一节:初识Angular-CLI第二节:登录组件的构建第三节:建立一个待办事项应用第四节:进化!模块化你的应用第五节:多用户版本的待办事项应用第六节:使用第三方样式库及模块优化用第七节:给组件带来活力Rx--隐藏在 Angular 中的利剑Redux你的 A... Electron 深度实践总结 - 前端 - 掘金思维导图 前言: Electron 从最初发布到现在已经维护很长一段时间了,但是去年才开始慢慢升温.笔者个人恰好

科普 | 编译 V8 源码

2017-02-13 justjavac 象尘说 对于JavaScript程序员来说,可以瞧一瞧justjavac给大家写的科普类读物,V8引擎的分析,"也许你不懂C++",但是你可以了解一下,总是好的. 本系列得到了justjavac的授权,同意我在公众号中转载,来源于知乎专栏:https://zhuanlan.zhihu.com/v8core V8 的源码已经从 google code 迁移到了 github,而版本控制工具也从 svn 换成了 git.V8 源码地址 v8/v8.

Java应用架构的演化之路

原文出处: bbear 当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现. 1. 不同系统不同语言之间的交互 现在我们常见的不同系统不同语言之间的交互使用WebService,Http请求.WebService,即“Web 服务”,简写为 WS.从字面上理解,它其实就是“基于 Web 的服务”.而服务却是双方的,有服务需求方,就有服务提供方.服务提供方对外发布服务,服务需求方调用服务提供方所发布的服务.如果说得再专业一点,W

深夜聊聊Bufferbloat以及TCP BBR

这篇文章的写作动机来源于知乎上的一个问题,有人问既然Bufferbloat是个问题,为什么路由器的缓存还要设计那么大.起初,我也是觉得缓存越大越好,这个就像人们拼命比拼谁的电脑内存大一样,因为在一般人眼里,内存越大就越快!然而对于网络而言,恰好相反,内存越大,越让人不想归家.        酒店舒适,但只是路过,没人会把家装修成酒店的样子,家才是越大越好.        路由器设计成携带大缓存的设备,这是一个错误!路由器不该有那么大的缓存,然而TCP大牛当年的一个"AIMD错误决定"让

语言与语言的高并发底层设计

node.js.Scala.Clojure的高并发   程序始终是需要由 CPU 执行的,所以真正并行的计算程序数量不会超过 CPU 的核心数.那么,宣称的“高并发”是什么?所谓“高并发”通常是在讨论网络 I/O 的情况下出现的概念,通常而言,高并发意味着可以同时处理更多的网络请求数.提高网络请求并发量的方法是什么? 最基础的是使用 epoll / kqueue 代替 select / poll,在注册.获取事件的部分从 O(n) 的复杂度提高到 O(1) [1] .Node.js 应该是基于