天天看点

selenium之自动化测试成神之路浅谈

忽然想谈谈自动化的学习路径,因为发现很多人总是急于求成,不懂该如何学习。

在学习或者工作中,难免会遇到很多低级问题,例如写了一个selenium脚本,却执行失败,却不知道这里为什么会报错?很多都是明显的语法问题,针对没有语法基础,没学过Java,没学过Python,就跑来搞selenium,想玩自动化。还是要有一定的正确的方法才能达到较好的效果。

1. 首先是你需要知道的

自动化是用机器代替手工做一些事情。作为一个测试人员,做自动化一般是指接口自动化与UI自动化。(接口也是指对外的部分,通过各种协议,各系统或模块之间交流的接口。)接口性价比更高,但不代表UI自动化没有价值。

可以看看虫师的理解:​​在做自动化测试之前你需要知道的​​

2. 然后是你应该具备的(编程语言基础)

很多想学自动化测试的同学都忽略了编程语言的重要性。很大一部分测试人员不懂编程,也不想学编程,但如果你想要学习自动化,那编程是必须的!

你可能会觉得QTP就不需要编程,录制回放就可以了。这是大错特错的,QTP要想玩的溜,VB是必须的。selenium想要玩的溜,Java或者Python是必须的!

很多人没有学语言,直接上来搞selenium,我认为这是一种本末倒置的行为,没有语言基础,想学会自动化,是走到了弯路上,到达目的地时间要更久。

那么学Java还是Python?这个要取决于你对那种语言更熟悉一些,同时要看测试团队所使用的语言,如果团队用Java,那你就学Java。如果你既没有语言基础,测试团队也没有指定的语言,那么我建议你学Python,Python相对Java更简单,学习成本要低一些。

确定了要学习的语言,博主便推荐一些学习资料:

(1)针对初学者,将《笨办法学Python》练习前45个章节练习敲一遍,英文版本学习链接​​https://learnpythonthehardway.org/book/​​

中文pdf电子书下载链接:​​我的网盘下载​​ 密码:v2s8

(2)有一定的语言基础的,推荐《Python核心编程》、《Python基础教程》、《Python简明教程》、《Python入门指南》、《Head First Python》。择一即可

(3)跟廖雪峰的网站学:​​https://www.liaoxuefeng.com/wiki/1016959663602400​​

3. selenium学习,脚本编写

接下来终于要到学习selenium的时候了,在这个时候,我需要你先去搞清楚几个问题:

selenium到底是什么?selenium家族成员,selenium的结构组成。

Selenium 是web自动化测试工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等。

Selenium IDE 是firefox浏览器的一个插件。提供简单的脚本录制、编辑与回放功能。

Selenium Grid 是用来对测试脚步做分布式处理。现在已经集成到selenium server 中了。

RC和WebDriver 更多应该把它看成一套规范,在这套规范里定义客户端脚步与浏览器交互的协议。以及元素定位与操作的接口。

selenium支持的语言,浏览器。selenium操作浏览器需要依赖的驱动,驱动版本与浏览器版本的关系(​​selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)​​)。

对于 selenium的基本方法查询表,定位速查表以及异常清单的了解,也整理了,可以快速查阅:

​​selenium之方法查询表,定位速查表以及异常清单整理​​

然后还需要再简单学习一些前端的知识:

HTML(网页结构,各种标签,推荐链接:​​https://liudaima.com/a/16.html​​)

Xpath(基本的定位要了解,可以看​​selenium之动态id、class怎么定位​​、​​selenium之父子、兄弟、相邻节点定位方式详解​​、​​selenium之定位以及切换frame(iframe)​​。)

CSS(简单了解可以看​​基本的CSS理解​​)

JavaScript(简单了解可以看​​基本JavaScript的理解​​)

firebug,chrome调试工具的使用(参考​​firebug,chrome调试工具的使用​​,超级全)

网络基础知识

接下来就是学习selenium了,入门推荐虫师的《Selenium2自动化测试实战–基于Python语言》,这本书比较基础,用来入门再合适不过。

同时不要光看,一定要动手自己写代码,找一个网站,先练基础元素的定位与操作,推荐一个练手网站:​​http://sahitest.com/demo/index.htm​​

基本定位方式熟悉了,就是要对一个正式的网站进行实践了,你可以用你们公司的网站,也可以用某些门户网站,比如58、赶集等等,可以用selenium做一个小爬虫,爬取网站上的一些信息。这个过程中你会遇到各种坑,各种诡异的事情,不要怕,你一定要相信这些坑,前辈们早已替你趟过了。

4. 执行测试,脱离脚本阶段

恭喜你,你能写脚本了,能写小爬虫从网站上爬东西了,接下来,你得真正开始执行测试了。

在这个阶段,你必须学习的是Python的doctest和unittest。

学习怎么用断言来添加检查点。

同时,你要学习怎么将代码中公共的部分抽出来,把测试和业务分离开,学习PageObject思想。

用testsuite来组织你的测试用例,并学习HTMLTestRunner,下载,学习怎么输出报告。

5. 参数化、配置、日志、简单框架搭建

你已经能够用unittest组织用例,并输出报告了。这时候,你需要让你的测试更像个样子。

该学习参数化了,学习xlrd、xlwt操作excel文件,学习xml库操作xml文件,来配置你的数据源,实现参数化。

还需要学习configParser、pyyaml模块,进行配置文件的操作,将用例中的配置提取出来,写在配置文件里,这样要修改起来就容易多了。

然后还得学习logging库,学会怎么记录日志,写你自己的日志模块,在用例里加上日志记录。

到了这儿,基本上,就像个样子了。但是不能把这些东西放在一起,你就需要搭建一个轻量级的小框架,来分层组织你的代码与其他文件,可以参照我的博客简单分享一个轻量级自动化测试框架目录结构设计,跟着我的专栏从零搭建一个自动化测试框架,教你怎么一步步搭建自己的框架。这下你就能把所有的东西分门别类管理起来,终于有点专业的样子了。

6. 自动执行,自动发送报告

简单的框架搭建好了,你也能够每次执行testsuite便可以得到测试报告了。但这时,你又不满足了。

是的,你应该让它自动执行,自动把报告发到你手里。

你该学习Jenkins了。别丧气,这个玩意很简单,你也只需要简单的配置便可以让你的测试任务在Jenkins上跑起来了。

还有,要自动发报告,简单学习下smtplib模块吧,它能让你的报告以邮件的形式发送到团队成员的手中。

7. 高级货,平台?分布式?界面?

学学Django(推荐我的学习链接:​​diango​​)、flask、web2py、web.py?挑一个,搞个界面,管理用例,管理测试执行,如何?

再搞搞数据分析,配个数据库,拿到历史执行数据,搞出来个报表怎么样?

看看request、suds、socket,把接口测试整进测试平台