10年自动化测试老司机与自动化的那些事
回想自动化测试的学习过程,因为发现很多人总是急于求成,不懂该如何学习。当前是个新手的时候肯定会选择加很多的群。在群里总是会遇到很多人问低级问题,写了一个selenium脚本,却执行失败,也不看报错,就直接跑到群里来问(有时候连个图都不发或发图只截图一小半,有的甚至问我和你写的代码一样怎么运行不起来了呢?),大神,这里为什么会报错?很多都是明显的语法问题,一问才知道,今天刚刚学selenium,之前也没有语法基础,没学过Java,没学过Python,就跑来搞selenium,想玩自动化。每当看到这样的同学,总是很想吐槽,但又忍住了,今天只是想跟大家谈谈我认为的正确的自动化学习路径。
1. 在做自动化测试之前你需要知道的
自动化是用机器代替手工做一些事情。作为一个测试人员,做自动化一般是指接口自动化与UI自动化。(接口也是指对外的部分,通过各种协议,各系统或模块之间交流的接口。)接口性价比更高,但不代表UI自动化没有价值,但是也不要认为自动化可以完全替代手动测试。也别把自动化想像的那么高大上,学懂后就会觉得也就那样。
2. 编程语言基础
很多想学自动化测试的同学都忽略了编程语言的重要性。可能在学习的过程中,很大一部分测试人员不懂编程,觉得自己学不会,久而久之也不想学编程,但如果你想要学习自动化,那编程是必须要掌握,而且要把编程的基础打扎实,非常重要!!!!
selenium想要玩的溜,Java或者Python是必须的!selenium并不局限于这两种语言,建议你学市面上大多人数人在学的一种开发语言,否则很难找到人能跟你交流,你的成长速度会慢得多。
那么学Java还是Python?这个要取决于你对那种语言更熟悉一些,同时要看测试团队所使用的语言,如果团队用Java,那你就学Java。如果你既没有语言基础,测试团队也没有指定的语言,那么我建议你学Python,Python相对Java更简单,学习成本要低一些。
确定了要学习的语言,博主便推荐一些学习资料:
如果你一点语言基础都没有,那么我推荐你《菜鸟教程》(目前建议学习Python3版本,Python2停止更新了。注意:学习过程中必须得一个个手敲,代码学习重在实践,不要以为自己懂就懒的去敲),你说我英文不好怎么办?OK,给你个中文版笨办法学Python 下载
如果你有学过一门语言,了解基本的数据结构和判断、循环之类的,或者你刚刚完成步骤0的练习,我推荐你这个阶段学习Python语言基础。学习过程中,你可能觉得有些我实在看不懂,建议你你学习完成主干部分即可,最后面的几章关于网络编程、线程与进程的,可以先不看,当遇到这样的问题,可以再来补充这方面的知识。
好了,这两个阶段完成之后,我认为你做好了学习selenium的准备,可以开始学习selenium了。
3. selenium学习,脚本编写
接下来终于要到学习selenium的时候了,在这个时候,我需要你先去搞清楚几个问题:
selenium到底是什么?有哪几个版本?我要学习中哪一个版本好呢?建议学selenium3,因为Python2版本2020年已经停止更新了
selenium家族成员,selenium的结构组成。
selenium支持的语言,浏览器,selenium操作浏览器需要依赖的驱动,驱动版本与浏览器版本的关系。
然后还需要再简单学习一些前端的知识:(可能会突然这时候脑子会有种放弃的念头,怎么要学这么多!太难了!但要坚持)
HTML(网页结构,各种标签,属性等等)
xpath(xpath定位要熟练掌握,轴的内容可以在有一定基础之后再学)
CSS(简单了解)
JavaScript(简单了解)
Firebug(开发者工具)的使用(这个经常会用到,必须熟悉,可在selenium学习中逐渐深入)
网络基础知识
接下来就是学习selenium了,入门推荐虫师的《Selenium2自动化测试实战–基于Python语言》,这本书比较基础,用来入门再合适不过,期间也可混杂着看一些博客,
同时不要光看,一定要动手自己写代码(一定要多敲代码,切记),找一个网站,先练基础元素的定位与操作,推荐一个练手网站:http://sahitest.com/demo/index.htm
基本定位方式熟悉了,就是要对一个正式的网站进行实践了,你可以用你们公司的网站,也可以用某些门户网站,比如BOSS招聘、赶集等等,可以用selenium做一个小爬虫,爬取网站上的一些信息。这个过程中你会遇到各种坑,各种诡异的事情,不要怕,你一定要相信这些坑,前辈们早已替你趟过了。
一定要善用百度、Google,搞IT的,不会FQ,不会百度,别说自己是是XX工程师。
4. 执行测试,脱离脚本阶段
恭喜你,你能写脚本了,能写小爬虫从网站上爬东西了,接下来,你得真正开始执行测试了。乐趣开始了,哈哈。在这个阶段,你必须学习的是Python的unittest或者pytest,学习怎么用断言来验证结果同时你要学习怎么将代码中公共的部分抽出来,把测试和业务分离开,学习PageObject思想,也叫POM设计模式
用testsuite来组织你的测试用例,并学习HTMLTestRunner,下载,学习怎么输出报告。
5. 参数化、配置、日志、简单框架搭建
你已经能够用unittest组织用例,并输出报告了。这时候,你需要让你的测试更像个样子。该学习参数化了,参数可以放在excel、yaml,ini
然后还得学习logging库,学会怎么记录日志,写你自己的日志模块,在用例里加上日志记录。
到了这儿,基本上,就像个样子了。但是不能把这些东西放在一起,你就需要搭建一个轻量级的小框架,来分层组织你的代码与其他文件,可以参照我的博客简单分享一个轻量级自动化测试框架目录结构设计,还有博主的专栏 从零搭建一个自动化测试框架,教你怎么一步步搭建自己的框架。这下你就能把所有的东西分门别类管理起来,终于有点专业的样子了。
6. 自动执行,自动发送报告
简单的框架搭建好了,你也能够每次执行testsuite便可以得到测试报告了。但这时,你又不满足了。
是的,你应该让它自动执行,自动把报告发到你手里(或者你老大手里,当然,未成熟前不建议这么做)。
你该学习Jenkins了(怎么要学这么多,我太南了),别丧气,这个玩意很简单,你也只需要简单的配置便可以让你的测试任务在Jenkins上跑起来了。
还有,要自动发报告,简单学习下zmail(比smtplib好用,但只支持Python3)模块,它能让你的报告以邮件的形式发送到团队成员的手中。
7. 高级货,平台?分布式?界面?
是不是很有成就感了,QQ群里也有了很多人叫你大佬 ,大神。满满的虚荣心。 UI的用例执行太慢了,整个分布式的执行怎么样?selenium的grid还没有研究呢。我可以用一台机器控制,让多台机器同时执行我的测试,想想简直碉堡了对不对。还能怎么玩?搞个界面怎么样?学学Django、flask、web2py、web.py?挑一个,搞个界面,管理用例,管理测试执行,如何?
再搞搞数据分析,配个数据库,拿到历史执行数据,搞出来个报表怎么样?
看看request、socket,把接口测试整进测试平台,怎么样?
单元测试?嘿嘿嘿,小case。
再集成个性能测试工具,一块搞到平台里去怎么样?
8.恭喜你,你绝对已经成老司机了。
如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。
如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到893694563,群内会有不定期的发放免费的资料链接。