第一章 自动化测试简述

作者: lhlaishui 分类: 成长之路 发布时间: 2021-05-18 22:45

1.1 为什么要进行自动化?
       最近几年自动化测试好像挺火的,去各大招聘网站上一搜,什么自动化测试工程师,测试开发工程啊,都挺多的而且待遇也挺高!那么回过头来,我们要考虑一下,为什么很多公司都这么重视自动化测试呢?这要考虑到现在的用户群体的特性:

(1)要求网站或应用响应快。现在生活节奏这么快,网速也是越来越快,无线,4G等等,如果你的网站或应用反应慢,大家就没有耐心等待,直接关掉或退出。这也是京东为什么这么受欢迎的原因,送货快。

(2)要求网站或是应用稳定。如果一个网站或是应用三天两头出问题,不用说别人,就我们自己也会很头痛。自家的孩子没有办法,只能用了,可是用户呢?现在同类网站或是应用这么多,你让我不爽,我就不用你。

(3)要求操作简单。互联网最基本的原则就是简单,一键操作或是点击一个按钮就能完成的事情,就不要一二三四步的来操作了。如果你的操作太复杂,很多用户就会选择放弃的。

      兼于以上种种原因,我们要求网站或是应用快速,稳定和简单,所以每次更新或是上线前后都会花大量的时间来进行回归测试。而回归测试如果让人工来做的话,费时费力,而且容易造成遗漏;如果用自动化回归的话,配合一些儿管理工具来做自动触发,省时省力,而且可以做到无人值守。这就是为什么越来越多的公司重视自动化的原因,自动化测试工程师或是测试开发工程师的就业范围也比较广。

1.2自动化测试能做什么?
      自动化火起来之后,很多公司都相应地成立了自动化测试团队,可是我们也会经常遇到下面的问题:新开发了一个功能,然后领导就让自动化团队来测试;或是某个用户说哪儿的样式不对,老大就说你的自动化测试怎么没有发现这个Bug呢?等等诸如此类的问题,让做自动化测试的同学很头痛。

那自动化测试究竟能做什么呢?首先,自动化测试不是万能的,不要以为有了自动化测试,就万无一失了。以下几种情况,自动化测试就无法实施:

(1)样式问题。你很难用自动化代码来判断颜色对不对?这个地方应该不应该换行?字体是不是你想要的,字号符不符合要求?等等!

(2)新开发的功能。新开发的代码或是功能在测试阶段是不适合做自动化测试的,因为这个时候有很多不确实因素存在。当然简单的录制回放也是能做,不过成本太高,要反复修改,而且一旦测试完成,录制的代码就没有用了。所以不要有了自动化测试,就轻视手工测试工作。

(3)反复改版的功能。自动化测试是根据页面元素来定位操作的,如果被测试的网站或应用正处的改版阶段,是不能实施自动化测试的。此时若实施自动化测试,维护成本相当大,而且每一次改动都有可能影响到脚本的运行结果,得不偿失。

(4)需要验证码的功能。很多网站为了防刷,就会在一些儿重要的地方加上验证码,不管是手机验证码或是图形验证码,对自动化测试都是阻碍。虽然可以用程序识别图形验证码,调用接口来截取手机验证码,但是这会降低自动化测试的速度和安全性,不到万不得已,尽量避免。

(5)支付相关的功能。涉及到钱的功能,最好不要自动化。因为回归测试很多是针对线上的,如果线下的话无所谓。线上回归,支付一般会跳到第三方页面,而且自动化的支付会给财务结算造成困惑。如果不是上面压下来的死命令,还是不要给其他同事的工作添麻烦了。

其次,要明白,自动化测试其实很简单,就是做主功能的回归!自动化测试主要是确保被测试对象的核心功能正常工作,如:众筹网(www.zhongchou.cn)主要回归以下几个功能:

(1)登录注册:这是任何一个需要帐号登录网站的主要功能,必须确保没有问题,否则会造成客户的流失。

(2)主页显示:主页上的内容必须显示无错,当然我们无法确定显示的精确内容,这些儿内容会不断变化的,但是应该显示数据图片的地方必须确保有内容显示。

(3)浏览项目:浏览所有的项目,根据分类浏览项目和其他的筛选条件查看项目。项目显示符合条件,项目数据显示完整。

(4)搜索项目:根据关键字查找项目功能。根据分词折分原则,有没有显示相关的项目。

(5)支持项目:支持某个项目,注:这里和支付相关,不过可以检测到支付前的操作,此时不会支付,不会产生真实的订单。而支持项目的用户的支持的项目中会有这个项目,支付状态是未支付。

(6)发起项目:发起一个项目,不过最后不要提交,保存成草稿就行了,也不会产生垃圾数据。

   这几个功能项目就是众筹网最主要的功能,任何一个出现了问题,都会影响用户操作的。而你要测试的时候,首先要评选出被测试对象的主要功能进行自动化,必须确保不影响用户的操作。

1.3 如何实施自动化测试?
       经过上面的讨论,我们认识到了自动化的重要性,以及哪些儿能做自动化,哪些儿不适合做自动化,可是当我们拿到一个被测试的对象,实施自动化的时候,应该如何着手呢?

此时不要慌张,应该从以下几个方面考虑及实施:

(1)评审被测试对象功能。评审被测试对象的时候主要包括:被测试对象目前是不是稳定版的?有哪些儿主功能?目前自动化测试应该覆盖到什么程度?BVT或是80%,95%?最终确认下来自动化测试要编写的测试用例,如果有对应的手工测试用例最好。

(2)评审被测试对象编码。自动化测试脚本一般都会和被测试对象使用同种语言或是类似的语言,这样兼容性好,支持函数比较多。评审被测试对象的编码,然后选择你最擅长的脚本语言作为自动化测试的编码语言。

(3)自动化测试框架的选择。目前业内自动化测试框架和自动化测试工具多于牛毛,有点儿让人不知所措,但是也不能乱选,有以下几个参考标准:

一,  开源框架或工具。开源的框架或是工具限制比较少,而且支持的人也比较多,方便自己定制或是做二次开发。

二,  支持语言较多。框架或是工具支持的语言是重要标准之一,因为真正实施的时候,有很多外在的阻碍,支持的语言多以后变换的空间比较大。

三,  比较成熟的框架。不要选择使用人较少,偏僻的框架,这样的框架会存在Bug,我们是在使用工具,没有必要花很多力气去解决框架的Bug。而且要选择成熟的版本,如果不是使用最新的函数,还是使用稳定的版本比选择最新的版本好。

(4)自动化测试脚本的运行环境。自动化测试脚本在Windows环境下运行,还是在Linux环境下运行?或者是其他的环境,运行环境的不同,也会影响自动化脚本的选择。

(5)自动化代码架构的规划。当上面的问题都选择好后,就要规划一下自动化测试代码的架构了。虽然传统的流水账似有代码也能测试,当测试用例多的时候,就很难维护了。好的代码架构是非常有必要的,清晰明了,可读性和易维护性在后其是相当重要的。

(6)编写具体的测试用例。然后将第(1)中确定的手工测试用例转化成自动化脚本编写的测试用例,调试成功即可。

(7)自动触发及执行。当自动化测试稳定后,可以接入到Jenkins等代码管理工具中,配置触发式执行或是定时执行,对被测试对象进行回归。
————————————————
版权声明:本文为CSDN博主「潜龙0318」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dragonking0318/article/details/44341229