您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 其他相关 > 正文

关于自动化测试

发表于:2017-02-07 作者:王沙 来源:

  自动化测试,百度百科中给出的定义是:把以人为驱动的测试行为转化为机器执行的一种过程。在工作的过程中,我们也一直强调自动化,自动化测试给人的感觉也是高大上的,一般招聘的时候也会要求有自动化测试经验,但是我们花了大量的时间精力去开发脚本,提高测试覆盖率,而发现的问题少之又少,我们做的自动化测试真的有用么?
  我认为,自动化测试的目的在于用快速运行的工具替代测试人员的一部分工作,使我们的工作越来越高效,这样的自动化才有价值。
  下面拿我的工作中用到的一些自动化测试举例说明。
  1、接口自动化
  以前,我们测接口使用的是实际业务中调用接口,或者设计好入参后在接口平台上调用接口,但这存在着很多弊端,如代码未全部提测时,业务流程未通,接口无法测试,设计好的参数不易维护,复用性差。基于以上的问题,我们开发了接口自动化框架,我们只需要在excel中维护接口及其参数,代码会获取文件接口数据,组合成http请求,调用接口,测试接口是否正常,并且excel中的数据可以反复使用,很好的解决了上述存在的问题。
  试想,在一个新版本的代码提测后,测试环境部署完成后执行一遍接口自动化(这个时间很短),如果全部通过,我们就可以高高兴兴的进入到后续的测试中了,如果不通过,我们也可以提早的发现接口问题,及时修改,不影响后续的测试。
  2、UI自动化
  我认为:
  1)并不是所有的页面都需要UI自动化
  对于需求变更较多,页面不稳定的系统,UI自动化其实并没有减轻我们的工作,并没有发挥其真正的价值。
  2)UI自动化不是case越多越详细越好,case多了判断逻辑多了,对外部环境的依赖度就会提高,从而导致自动化用例失败的几率也会增加,维护成本就会增加。
  UI自动化的目的不在于发现bug,而是验证软件的可用性,所以将UI自动化用于冒烟测试或者回归测试阶段,更能发挥其作用,这时候并不需要多么详细的case,多么复杂的逻辑判断,只要验证主要流程,页面主要功能正常即可,这样,部署完环境后,运行一下UI自动化,验证环境可用,就可以进入后续的测试,到主干测试阶段,用UI自动化用例回归主要流程和主要页面,也可以大大解放人力,提高测试效率。
  3、端到端的worker自动化
  之前一直将自动化局限在界面上,但我负责的系统界面不多,更多的是后台的worker处理,如抓取文件、解析文件、验证数据是否符合某种逻辑,直到最后一步才会将数据展示到界面上,中间完全是逻辑和数据的操作。
  后来,再一次讨论会上,讨论起哪些需要实现自动化,哪些可以实现自动化的问题,一个同事说,其实worker我们也可以实现自动化,自动准备文件,放到某个位置,等程序处理完后我们自动去判断数据是否正确,我们只需要在excel中维护我们的数据即可,这其实也是一种自动化。
  后来我们尝试做了一下,发现这完全不同于界面自动化,他不关注页面元素,只关注流程和结果,我们主要做了以下两部分:
  1)数据准备
  之前我们要将数据写到xml中,再放到对应的FTP的位置上,这样worker运行时才能获取到文件,每个供应商,每种类型的文件都有一个自己的目录,要知道,几十家供应商,每家供应商十几种文件类型,准备文件的工作量也不轻松,而对于第一次接触我们系统的人来说,更不知道这个文件要放到哪个目录下,接入自动化后,我们只需要在excel中维护好文件类型,文件中的字段和字段值,脚本自动读取excel中的数据,根据文件模板转换成对应的xml文件,并且将文件放到ftp对应位置,这样对测试人员来说,不用再打开每种文件,修改后再想我要传哪去呢,所有的文件都只要在同一个excel中维护数据,剩下的就可以交给程序去判断了,这个在很大程度上减轻了我们准备数据的工作量,提高了效率。
  2)数据比对
  由于都是后台worker处理,运行前后是有先后关联的,如果前一步失败,就会导致后一步骤肯定失败,测试过程中要一直盯着日志,查看这一步数据保存的是不是正确,再查看下一步数据保存的是不是正确, 如果有问题了,再挨个查看是哪个出了问题了,我们写了些自动校验数据的代码,每个步骤完成后,自动校验数据是否正确,如果不正确,可以很直观的看到哪一步出问题了,不用我们一直盯着日志和数据看,对基本流程测试和主干回归起到了很好的作用。
  4、测试工具带来的其他自动化
  测试过程中测试工具的开发和使用,就像人类进化过程中,工具的出现和使用,解放了人的双手,提高了工作效率,同样达到了自动化的目的。如在测试图书商品的时候,由于每个图书有唯一的ISBN( 国际标准书号),ISBN又有其严格的校验生成规则,在测试过程中,要想造一个正确的ISBN,需要经过复杂的逻辑计算,而且一个ISBN又不能重复使用,这时候我们就考虑,可以让工具来帮我们生成ISBN,于是我们做了个生成ISBN的小工具,自动计算校验位,而且每个ISBN都不会重复,之前困扰我们的ISBN不够用的问题就迎刃而解了。再比如我们使用的生成商品数据的小工具,可以根据自己的需要生成对应类型的商品数据,这样联调时可以自己准备想要的数据,不用再等接口方去造数据,自己方便,也节省了对方的时间。
  总之,自动化测试的根本目的是要解放人力,帮助我们完成人工重复工作,提高测试工作效率,我们要做有用的自动化测试,让他在我们的工作中真正发挥作用。