------Web自动化测试之Webdriver(python)--从零到熟练(系列)
今天是2015年新年的第一天上班,公司来的人还不多,没有具体的工作要做。应年前的承诺,写一下自动化测试相关的教程吧,希望对学习自动化测试的小伙伴们有所帮助。
1.1 为什么要进行自动化?
最近几年自动化测试好像挺火的,去各大招聘网站上一搜,什么自动化测试工程师,测试开发工程啊,都挺多的而且待遇也挺高!那么回过头来,我们要考虑一下,为什么很多公司都这么重视自动化测试呢?这要考虑到现在的用户群体的特性:
(1)要求网站或应用响应快。现在生活节奏这么快,网速也是越来越快,无线,4G等等,如果你的网站或应用反应慢,大家就没有耐心等待,直接关掉或退出。这也是京东为什么这么受欢迎的原因,送货快。
(2)要求网站或是应用稳定。如果一个网站或是应用三天两头出问题,不用说别人,就我们自己也会很头痛。自家的孩子没有办法,只能用了,可是用户呢?现在同类网站或是应用这么多,你让我不爽,我就不用你。
(3)要求操作简单。互联网最基本的原则就是简单,一键操作或是点击一个按钮就能完成的事情,就不要一二三四步的来操作了。如果你的操作太复杂,很多用户就会选择放弃的。
兼于以上种种原因,我们要求网站或是应用快速,稳定和简单,所以每次更新或是上线前后都会花大量的时间来进行回归测试。而回归测试如果让人工来做的话,费时费力,而且容易造成遗漏;如果用自动化回归的话,配合一些儿管理工具来做自动触发,省时省力,而且可以做到无人值守。这就是为什么越来越多的公司重视自动化的原因,自动化测试工程师或是测试开发工程师的就业范围也比较广。
1.2 自动化测试能做什么?
自动化火起来之后,很多公司都相应地成立了自动化测试团队,可是我们也会经常遇到下面的问题:新开发了一个功能,然后领导就让自动化团队来测试;或是某个用户说哪儿的样式不对,老大就说你的自动化测试怎么没有发现这个Bug呢?等等诸如此类的问题,让做自动化测试的同学很头痛。
那自动化测试究竟能做什么呢?首先,自动化测试不是万能的,不要以为有了自动化测试,就万无一失了。以下几种情况,自动化测试就无法实施:
(1)样式问题。你很难用自动化代码来判断颜色对不对?这个地方应该不应该换行?字体是不是你想要的,字号符不符合要求?等等!
(2)新开发的功能。新开发的代码或是功能在测试阶段是不适合做自动化测试的,因为这个时候有很多不确实因素存在。当然简单的录制回放也是能做,不过成本太高,要反复修改,而且一旦测试完成,录制的代码就没有用了。所以不要有了自动化测试,就轻视手工测试工作。
(3)反复改版的功能。自动化测试是根据页面元素来定位操作的,如果被测试的网站或应用正处的改版阶段,是不能实施自动化测试的。此时若实施自动化测试,维护成本相当大,而且每一次改动都有可能影响到脚本的运行结果,得不偿失。
(4)需要验证码的功能。很多网站为了防刷,就会在一些儿重要的地方加上验证码,不管是手机验证码或是图形验证码,对自动化测试都是阻碍。虽然可以用程序识别图形验证码,调用接口来截取手机验证码,但是这会降低自动化测试的速度和安全性,不到万不得已,尽量避免。
(5)支付相关的功能。涉及到钱的功能,最好不要自动化。因为回归测试很多是针对线上的,如果线下的话无所谓。线上回归,支付一般会跳到第三方页面,而且自动化的支付会给财务结算造成困惑。如果不是上面压下来的死命令,还是不要给其他同事的工作添麻烦了。
其次,要明白,自动化测试其实很简单,就是做主功能的回归!自动化测试主要是确保被测试对象的核心功能正常工作,如:众筹网(www.zhongchou.cn)主要回归以下几个功能:
(1)登录注册:这是任何一个需要帐号登录网站的主要功能,必须确保没有问题,否则会造成客户的流失。
(2)主页显示:主页上的内容必须显示无错,当然我们无法确定显示的精确内容,这些儿内容会不断变化的,但是应该显示数据图片的地方必须确保有内容显示。
(3)浏览项目:浏览所有的项目,根据分类浏览项目和其他的筛选条件查看项目。项目显示符合条件,项目数据显示完整。
(4)搜索项目:根据关键字查找项目功能。根据分词折分原则,有没有显示相关的项目。
(5)支持项目:支持某个项目,注:这里和支付相关,不过可以检测到支付前的操作,此时不会支付,不会产生真实的订单。而支持项目的用户的支持的项目中会有这个项目,支付状态是未支付。
(6)发起项目:发起一个项目,不过最后不要提交,保存成草稿就行了,也不会产生垃圾数据。
这几个功能项目就是众筹网最主要的功能,任何一个出现了问题,都会影响用户操作的。而你要测试的时候,首先要评选出被测试对象的主要功能进行自动化,必须确保不影响用户的操作。