因为我最近在分享自动化测试技术,经常被问到:
功能测试想转自动化,请问应该怎么入手?有没有好的资源推荐?
那么,接下来我就结合自己的经历聊一聊我是如何在工作中做自动化测试的。(学习路线和网盘资源放在文末了)3个月是怎么从功能测试进阶到自动化测试并且涨薪呢?今天我们就来聊一聊
一、什么是自动化测试
自动化测试概念:
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程步步执行测试,得到实际结果与期望结果的比较。简言之,自动化测试就是让被测试的软件自己运行起来,执行软件的功能,或者就是让其他的工具自己运行起来,去检查软件的内部和外部。
自动化测试包含自动化和测试两个概念:
- 自动化:由程序(或机器、设备等)代替人工自动完成指定目标的过程。
- 测试:校验系统是否满足规定的需求。
- 自动化测试:让程序(或机器、设备等)代替人工自动完成系统校验的过程。那么,机器怎么知道人类的要求?好吧~关键点是编程语言。机器学习一个编程语言,轻松和简单到令人发指的地步:安装上去,机器就学会了。好在人类学习编程语言也不是特别难的事情。有了编程语言,就有了人机交流的桥梁,剩下的事情,是帮机器挑选工具。做对应的测试,找到对应的工具,这样自动化就自动起来了。
总之,自动化测试引入的原因是就把软件测试人员从枯燥乏味的机械性手工测试劳动中解放出来,以自动化测试工具取而代之,使测试人员的精力真正花在提高软件产品质量本身。尽管自动化测试可以降低人工测试的工作量,但并不能完全取代手工测试,一味追求测试自动化只会给企业带来运作成本的急剧上升。
自动化测试优缺点:
➤优点:
- (1)提高测试执行效率,节约时间成本
- (2)解放人力去做更重要的工作;
- (3)可重复利用,建设对人的依赖
- (4)提升客户满意度;
- (5)提升测试团队的整体水平;
- (6)可大幅度减少兼容性测试的工作量
- (7)有些测试工作必须依靠自动化实现来完成。
➤缺点:
- (1)开发测试脚本需要花费较大的时间成本,拉长周期
- (2)产品的快速迭代,自动化脚本也将不断迭代,时间成本很高
- (3)不同的项目之间自动化脚本的复用度很低
- (4)对短期型项目产品实现自动化价值不高
- (5)自动化无法完全代替手工测试找到bug,实现100%覆盖
- (6)自动化更多的适用于回归测试
- (7)自动化开发过程对软件测试团队的技术有更高的要求。
手工测试与自动化测试:
- 手工测试:手工测试就是由测试人员一个一个的执行用例,然后观察测试结果是否符合预期,手工测试一般是基于两个原因:(1)时间资源不足;(2)技术水平不足。在这些情况下,手工测试能够发挥重要的作用。利用手工测试,我们可以定义测试,还可以跟踪测试。
- 自动化测试:自动化测试分为功能自动化和性能自动化,前者是通过测试工具(或框架)录制/编写测试脚本,对软件的功能进行测试,并验证测试结果是否正确,从而代替部分的手工测试工作,达到节约人力成本和时间成本的目的。后者是通过性能工具来模拟成千上万的虚拟用户向系统发送请求,从而验证系统处理能力。
二、基于我的经验,送给想要学习自动化测试的同学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等去搭建自己的自动化测试工程,然后掌握整体的自动化工作原理,为以后能够搭建自己的工具平台做准备,毕竟搞定自动化,可不是会使用几个工具那么简单。
自动化测试的最高境界:开发测试工具、设计自动化框架,让别人用。
三、自动化测试学习终极路线,从语言入手,搞定自动化测试
掌握Python或者Java语言,建议先从Python入手
基本的语言知识,语法、函数、模块、输入与输出、面向对象编程
脚本编写、标准库、多线程、第三方库,外部数据处理
unittest、pytest测试框架、参数化、数据驱动
web端的自动化测试
selenium安装、录制、处理
web控件、JavaScript脚本、PO模式
移动端APP自动化测试
appium使用、录制、元素定位方法
APP控件定位、交互,参数化用例
appium问题 定位分析、源码分析、二次封装
服务端接口自动化测试
接口 自动化测试框架request
接口请求构造、断言
json/xml请求、响应断言
headcookie处理、认证体系
自动化测试从入门到精通
如果你按照这这个学习路线把自动化测试吃透,那么月薪在15-25K是很轻松的事情,同时具备了代码能力,也就可以继续向测试开发去努力了!
写在最后:
无论你在测试团队中是什么样的身份,无论你对于自动化测试是什么样的认知,也无论你对自动化测试是爱还是恨,自动化都是你从手工测试转为测试开发的必经之路。
或许你会听到自动化测试成本高、效果差、效率低等负面的反馈,但你要清晰的知道,这都不是自动化测试的问题,对于某种工具,某个方案,最终的效果还是由实施者来去决定的。
我们能够做到的是正视自动化测试,找准方法,不断的提升自己!
END绵薄之力
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
获取方式 :