• 0
  • 0
分享

  在我有限的软件测试经历里,曾有一段专职的自动化测试经历。

  接触自动化

  那时第一次上手自动化测试,团队里用的是Python,接口自动化测试的框架是requests+Excel+Jenkins,APP自动化测试的框架是Appium。

  整个公司当时有一款已有的APP,因此在试用期内,我的任务是完成对已有APP的自动化脚本编写和调试。

  记得当时刚开始去,很没有经验,在跟功能测试同学了解了业务之后,只顾埋着头部署环境,突然有一天,测试主管问我,是否要输出一份自动化测试用例。我恍然大悟,于是把功能测试的用例拿来参考了一下,对用例做了一次筛选,输出了一份自动化测试用例(现在回过头看,当时的做法真的很草率,既没有一个自动化测试计划,也没有对自动化用例做评审,只知道功能测试同学的痛点就是迭代太快,回归来不及做)。

  用例输出后,大概花了一个月的时间,完成了环境部署和基本用例脚本的编写,那时候大概实现了四五十个场景,并且完成了自动发送测试报告。剩下的两个月,我就一步一步的将场景扩充为二百多个。

  其间也遇到了一些问题,比如登录图形验证码的获取,不过使用OCR图形识别很快就得到了解决,同事也有使用云打码一类的平台。

  最大的一个问题是,当APP版本更新迭代后,固定页面所有的id、class等属性都会变化,因为这些都是写死在代码里的,如果要更改意味着每个page都要更改,工作量非常之大,而且获取这些属性还需要借助一些工具,如UI AuTomatorviewer 、Appium自带的Inspector。

  在忙碌了一段时间后,先找到一个安卓开发,跟他排查了一下,他也找不到问题所在,后面又找了另一个开发,他排查之后发现是安卓混淆打包的问题,他给我出了一个不做混淆打包的APP,这才解决了这一问题。

  另外一个比较大的问题是,APP自动化测试的运行时间非常久,我们两三百条用例,如果加上失败重试,大概要跑四五个小时,而且还会出现中间脚本出错运行停止的问题。

  记得一个印象比较深的事情是,我们第二天要发版了,头一天下班前我开始跑脚本,等到晚上我一直没有收到测试报告的邮件,于是晚上十点多赶回公司,发现自动化脚本已经停止了。

  对于时间久的问题,后面我尝试引入UI AuTomator2(以下简称u2)框架来代替Appium,毋庸置疑,u2在执行速度上有很大优势。

  我曾经对比过这两个框架,同一个场景,Appium需要耗时60多秒的,u2只需要20多秒,足足节省了三分之二的时间。

  但随之而来新的问题是,u2不太稳定,Appium中查找元素有用到显式等待、隐式等待和强制等待,而u2中看似不需要这些,实际上多跑几遍场景就会发现u2执行太快会找不到元素,因此还得手动加上强制等待。这样一来时间并没有节省多少。

  这个问题当时没有得到解决,反而是在我离职后的一段时间里,通过学习pytest-xdist的文档,发现pytest-xdist可以基于ssh和socket来实现分布式执行。

  举个例子,假如有200条场景,同时启动2个执行机,那么就会往执行机-1上推送100个场景,往执行机-2上推送另外100个场景,最终两个执行机的测试报告会集成为一个报告。这样的解决方案如果当时能应用到实践中,那么APP自动化测试时间过长的问题会得到完美解决,唯一需要注意的是,每个场景要独立,不能相互依赖。

  话说回来,APP自动化测试做下来好像没有产生多少收益,因为只有我一个人开发和维护,所以到了维护阶段就显得耗时耗力,特别是本来一个固定的页面改了或者中间插入了一套新的逻辑,就意味着相当多的页面需要调整。

  第二次接触项目

  差不多这样做了几个月后,公司开始立新的项目,新的项目一开始就下决心要做接口测试,因此我又介入到这个项目中,参加立项会议、参加技术评审,了解了要做哪些,并且接口文档怎么管理,接口怎么定义等等之后,就开始了新项目的接口测试。

  那个阶段,使用requests读取Excel的方式在接口不多的时候还挺方便,因为代码框架比较固定,只需要Excel里修改参数。

  但随着接口越来越多,也意味着接口之间的依赖越来越多,Excel管理简直就是灾难,在Excel里要理清不同接口的依赖关系,是非常头痛的一件事。

  后来我使用Postman做了一些快速测试,等待时间充裕的时候,再慢慢把整个主流程的接口测试加上。在接口测试阶段,前前后后发现了一些问题,但很大的不足是没有解决Excel存储数据的问题和没有做数据正确性的校验。

  而且我们还是和支付相关的业务,这使得接口测试结果只能保证服务是正常的,返回码是正常的,但是数据是否正确无从得知。

  直到后来,自动化团队换了一批人,新来的同事开始推行Java栈,使用Springboot+httpclient+Maven来作为接口自动化框架,基本舍弃了之前的Python自动化脚本。

  那几个月好几位同事投入到同一个项目的接口自动化脚本的编写中,对比之前我一个人负责两个项目的自动化,情况的确好了很多。

  这个自动化也是基于场景的,有做正常和异常输入的校验,以及最后的入库检查,脚本量非常大,所有异常场景的请求数据和期望结果都是入库的,后续请求的时候,先从数据库拿到请求数据发送请求,得到响应结果再和数据库的期望结果做比较,正常场景需要手动写逻辑,响应结果里重要字段的值和数据库里的值做比较。

  那个时候,考虑了很多前端无法测到的复杂的场景,并发、幂等之类的,因此发现的缺陷更有意义一点,但是维护成本依然比较高。

  自动化是什么?

  最近的一两年,我有时会想到自动化测试是什么?自动化测试本来是为提高测试效率而生,有时候使用不得当,却成为测试活动中的累赘。

  但不可否认的是,自动化测试仍然是行之有效的,区别只是使用的动机和使用的方式,在我看来,做好自动化测试需要规避以下几点:

  不要为了自动化为自动化

  自动化测试不能基于KPI,而要看当前的项目适不适合做自动化,有没有足够资源的投入和外部团队的配合。

  自动化不是万能的

  不要贪多求全,妄想所有的测试场景都能通过自动化实现,尤其是更新迭代快的项目。能把稳定的功能实现,并且做好回归 ,已经足够了。

  自动化的场景

  一种是基本场景,另一种可以是前端无法实现的场景。

  而对于接口中无穷无尽的字段进行严苛的异常校验,来保证足够程序足够健壮,有时候反而没有那么必要。

  因为开发周期短的公司一周好几个版本,开发根本就没时间对一些不太重要的字段做异常处理,当然重要字段的类型、长度、非空校验等还是要做。

  对自动化的认知

  有些同行认为,自动化就是为了发现缺陷的,但是自动化发现的缺陷根本比不上功能测试,发现不了缺陷的自动化就没有意义吗?

  事实并非如此,尤其是一些回归测试的自动化,一方面是为了提高效率,一方面是为了增强上线前团队的信心。

  团队人才的培养

  遇到了一些公司,好不容易做起了自动化,做得也不错,等到负责人离职之后,就没人维护了,然后再招一些自动化测试人员另起炉灶,反反复复,归根结底是没有人做技术备份。



作者:Beck   

来源:http://www.51testing.com/html/04/n-6650804.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • Cypress与Selenium/WebDriverSelenium/WebDriver架构它基于Client/Server架构设计,其架构图如下所示Language Bindings/Client也叫做ClientLibrary,它是Selenium框架的一系列jar文件,可以使用不同的编程语言编写,也正因为它的存在,才使得各个语言编写的测试代码能够被正确解析浏览器驱动WebDriverWebDriver用于管理和完全控制浏览器,根据不同的浏览器区分不同的DriverHTTP传输的JSON Wire协议JSON(JavaScript Object Notation)是一种在Web上的服务器端...
            13 13 2408
            分享
          •     Jenkins在可以连接外网的环境安装,非常简单,但是公司的内网环境无法连接到外网,又有Jenkins的需求,那如何做呢?下面就来介绍如何在离线环境对Jenkins环境的安装以及使用。  准备工作  外网Linux机器一台,内网Linux机器一台。硬件环境要求:至少1GB的可用内存空间,至少50GB的可用硬盘空间。软件环境需求:需要安装好Java8,Java的运行环境JRE1.8+或者Java的开发工具包JDK1.8+都可以。  外网安装  1.Jenkins下载  下载地址:http://mirrors.jenkins.io/war-stable/lat...
            1 1 2042
            分享
          •   从两种不同的路径发展来看:  1、管理路线?测试工程师?中级测试工程师?测试主管  2、技术路线?软件测试工程是?中级测试工程师?高级测试工程师?测试专家?测试总监  软件测试每个阶段有不同的要掌握的技术和经验,先按照薪资范围划分下(月薪)  ·5-9K:零基础入门,学会功能测试能够找到工作  · 15-25K:测试在职能搞定性能测试和自动化测试  · 25K+:搞定测试开发,在一线大厂工作  每一个阶段的侧重也不同,入门到找工作的阶段肯定是以能就业为主,性能和自动化测试是在技术基础上有行业经验。进入一线大厂的话需要技术过硬的基础上有管理能力;  一、软件测试职业发展的...
            0 0 1248
            分享
          •   在web前端自动化测试过程种,经常会遇到各种弹出窗口:如浏览器新标签页的页面弹出窗口,告警、确认式的js弹出窗口,文件上传的windows弹出窗口等等。针对此类弹出窗口的处理,是前端自动化测试绕不过去的一个坎。接下来,我们来简单了解下这类弹出窗口的原理,和使用selenium+webdriver自动化方法处理方式,以及举例说明使用selenium ide工具的处理方法。  一、几种弹出窗口介绍  1.页面弹出窗口  1)模态弹出窗口和非模态弹出窗口  页面弹出窗口,即点击一个链接之后可能会打开一个新的浏览器窗口,跟之前的窗口是平行关系。  页面弹出窗口又可以分为:模态弹出窗口和非...
            12 12 1895
            分享
          •   阿里云宣布,将在全球五个国家投资新建数据中心,分别位于韩国、马来西亚、菲律宾、泰国和墨西哥。值得一提的是,这也是阿里云首次进入墨西哥市场。  截至目前,阿里云在全球 30 个地域运营 89 个可用区。新一轮投入之后,阿里云的全球布局将增加至全球 31 个地域和 95 个可用区。  阿里云智能国际事业部总裁袁千表示,阿里云将加码投资全球能力建设,这意味着全球范围内更多的数据中心、更强的服务能力、更紧密的合作伙伴关系。目前,阿里云已经覆盖东南亚、日本、美国、英国、欧洲、中东等主要海外市场。  另据IT之家此前报道,LV 高奢品牌母公司酩悦?轩尼诗-路易?威登集团(LVMH)近期宣布将和阿里巴巴...
            0 0 779
            分享
      • 51testing软件测试圈微信