聊聊自动化测试路上遇到的挑战

去年有写过两篇博客,分别是浅谈UI自动化测试浅谈接口自动化测试,都是一些基础的方法论的内容,今年转岗专门作自动化测试,有了不少新的发现,固然,也遇到了不少的挑战。html

遂重开一篇博客,聊聊最近作自动化测试遇到的一些挑战,以及本身的解决方法和一些思考。。。java

 

1、测试范围python

不管是功能测试,仍是自动化或者性能测试,第一步要作的,是明确测试范围和需求指标。对于自动化测试来讲,特别是UI自动化,并非全部的功能点都适合作UI自动化。linux

根据具体的业务状况和项目稳定程度,选择UI自动化+API自动化结合,选择合适的业务点来进行针对性的自动化测试方案设计,才是最佳方案。sql

对于什么项目适合作UI自动化,在以前的博客浅谈UI自动化测试里已经分析过,这里列几个我我的以为比较适合作UI自动化的点:数据库

①、使用频次较高,异常判断较多,且最基础的功能,好比用户注册、登陆;编程

②、用户端比较核心的功能,好比订单中心,会员中心;服务器

③、促销活动页面、信息展现页等;网络

分层测试的概念,以前也介绍过了,分层测试金字塔以下:架构

从效果来看,单元自动化是收益最高的,可是单元自动化对大多数自动化测试初学者来讲,难度太大。

且目前国内大部分中小型企业,开发自己的开发规范、管理等工做也作的不太好,单元自动化,实现的几率,短时间内不看好。

而接口自动化,目前来讲是性价比最高的一种选择。

UI自动化的投入和产出比,是三种模型中最低的,但对于愈来愈复杂的大型的系统,UI自动化在某些方面,也能够减小不少发布后冒烟测试的工做量。

 

2、系统架构

对大多数功能测试人员来讲,系统架构不用太多关注,但对于自动化或者性能测试人员来讲,系统架构是前期需求分析、技术方案选型设计的一个重点。

好比系统开发的编程语言,使用的数据库类型,通讯服务框架(若是要进行API自动化,那么系统所采用的通讯协议是绕不过去的一点),应用服务器的部署等,都是须要考虑的。

PS:我目前就任的这家企业,数据库使用的是微软全家桶套餐里面的SQL server,而我测试脚本开发语言是python,它自己对SQL server和Oracle的支持并非很好,致使在数据库配置时候,踩了不少坑。

固然,我最后也解决了这个问题。关于数据库的支持问题,只是我遇到的问题里面的一个很小的部分。

熟悉系统架构的另外一个缘由是:好比系统采用的开发语言是java,自动化测试人员自己使用的脚本开发语言也是java,那么兼容性就是很好的,并且有技术问题,也能够找开发同事帮忙解决,

这样无形中也节省了不少时间,并且对本身的技术提高,也是不小的帮助。

熟悉了系统架构后,针对性的考虑自动化测试方案设计,技术方案选型,才是最好的方式,不要用固有的方式来解决不一样的问题,而要用不一样的技术方案解决不一样的问题

附:python:利用pymmsql模块操做SQL server数据库

 

3、项目状况

关于这点,我的认为应该经过分析沟通来确认系统是否适合自动化测试工做。那么,什么样的系统适合进行自动化测试?

如上图所示,我大概罗列了一些适合进行自动化测试的项目所具有的一些特征,固然,不须要所有具有,只须要知足几点便可以考虑进行自动化测试(红色线条标注部分为基本的条件)。

固然,项目状况不只仅是这些,还有其余的一些点,也是须要考虑的,好比:

①、文档管理

文档包括需求文档、测试方案、测试用例、测试规范、开发规范、数据库表设计文档、接口文档等。

若是文档不太完善甚至没有对应的文档,那么自动化测试工做,前期的准备工做就须要投入更多的时间和精力。

PS:好比要进行API自动化,可是没有接口文档,没有数据库表设计文档,那么关于API的接口说明,入参出参说明,这将带来不少附带的工做量,而文档数据的统计,又是一件很麻烦的事情。

有时候须要数据库确认接口对数据的影响,对应的数据库表字段,若是没有相关文档说明,那么本身整理以及和DBA沟通熟悉,就须要花费不少的时间和精力。

而不少企业对自动化的认识太片面,认为自动化能够替代人发现不少BUG,且追求短时间的明显效果,而若是没有较完善的文档管理,那么自动化测试人员在前期的准备阶段花费的时间将影响

leader对我的能力和工做效率的怀疑,能够说这也是目前国内不少企业存在的弊端。

问题总归是要解决的,若是遇到这种相似的问题,那么在任务拆分和工时预估时候,能够将这些因素考虑进去,计算在我的工时中,并注明缘由,在和leader甚至更高层评估中,抛出存在的问题,

推进问题的解决,这也是自动化测试人员的一种价值体现。

②、流程管理

项目的需求迭代是否稳定?从需求评审到开发、测试、发布上线是否有比较规范的流程?

若是需求迭代较快或者不稳定,那么自动化测试的脚本维护工做量将成倍增加;若是没有较好的流程管理,自动化工做的进展总会遇到不少不可描述的坑,沟通成本,变动成本等,还会影响到

测试方案的设计和规划。

在自动化测试中,须要针对性的熟悉了解这些问题点,作好应对的准备。自动化测试过程当中,变化是最大的挑战!!!

 

4、“目标”一致

这里的“目标”,指的是我的对工做的目标设定和leader对自动化工做的指望,站的角度不一样,理解不一样,所以指望的结果不一样。并非要达成彻底的一致,我这里想表达的是沟通的重要性

我的针对系统状况,技术架构,测试范围的理解,对应的自动化测试方案设计和目标设定,应该与leader不断沟通,不断调整,达成必定程度上的一致,这样也能避免不少后续的麻烦。

固然,目标的设定,也应该根据具体的自动化测试需求,进行任务拆分,评审,不断调整,这是一个持续不断的调整的过程,须要耐心和坚持!

 

5、运行环境

自动化测试脚本开发,也须要基于不一样的环境,而环境的选择,须要考虑不一样的状况,下面一一列举说说我我的的思路:

一、SIT环境:

SIT环境,也称为系统集成环境,就是咱们常说的测试环境,若是测试脚本是基于SIT环境开发调试,那么就须要SIT环境相对来讲比较稳定。

可是大部分时候,SIT环境由于须要屡次的提交测试,交叉影响较大,且SIT环境和生产环境仍是有必定差别的(至于为何,相信测试童鞋,都明白其中的痛点)。

二、UAT环境:

UAT环境,就是咱们所说的验收环境,固然相似的,也有灰度环境等。UAT环境相对SIT环境来讲,是比较稳定且和生产的一致性较高的,很适合进行自动化测试脚本开发和调试,以及平常的测试回归。

但自动化测试的做用又不限于这点,还能够进行发布后的生产冒烟,定时轮询测试等。

三、生产环境:

若是在生产环境进行测试脚本开发和调试,以及测试执行,那么就须要解决如下几点问题:

①、网络问题

通常咱们的SIT和UAT环境都是部署在企业内部,网络环境也是走的内网,请求解析和外网有必定区别。在生产环境运行脚本进行回归冒烟的话,须要考虑真实的用户操做环境,不一样的网络对测试结果影响。

并且测试脚本中,sleep最好能不用就不用(特别是UI自动化,强制等待容易带来不少不可控的变数)。

②、数据污染问题

生产环境进行自动化测试回归冒烟,须要对测试所产生的数据进行隔离处理,不然会致使业务受到影响,而且对生产的数据形成污染。经常使用的数据隔离方法以下:

测试白名单帐号、网络标记、线程标记、测试数据落入对应的测试库,某些业务还可使用MOCK对象和挡板。

关于数据隔离这几点,在性能测试中,也是须要考虑的一个重点,固然性能测试中也常用这些方法进行数据隔离,避免生产数据污染带来的影响。

 

6、服务部署

以前的博客作接口测试须要哪些技能有介绍过,自动化测试的核心是持续集成。那么一个独立的不受影响的持续集成环境是必须的。

持续集成环境也叫做CI环境,相似的还有CD环境(持续交付)。

这些应用,在敏捷测试中,应用的比较多,不过目前行业内,我我的了解到,愈来愈多的企业开始搭建持续集成环境,这样作的好处是不少的,好比:

①、版本迭代提测,能够经过CI服务一键提交,节省时间,提升效率;

②、若是须要造大量的测试数据,能够经过一个小脚本,只须要进行配置,点击启动按钮便可;

③、发布生产环境时候,能够经过CI服务自动化打包部署,避免了人手工打包配置时候的误操做等问题;

④、自动化测试脚本,部署在CI环境后,只须要点击启动,或者设置出发条件,定时任务的形式,来作到生产定时轮询,发布后冒烟等测试工做;

CI环境如何部署?你们能够参考我以前的博客:linux环境:持续集成服务部署系列

 

7、测试策略

这里的策略,能够从下面几个角度来讲:

一、任务拆分

确认测试范围和需求指标后,将自动化测试任务进行粒度更小的拆分,将工做内容所需时间精确到人/天的范围,按时完成任务,有问题不断调整;

二、优先级

任务拆分后,对任务进行优先级排序,经过评审沟通,确认先完成哪些任务,而后完成哪些等。

测试方案设计中,能够考虑分为第一期、第二期自动化测试任务,好比第一期实现自动化测试在必定程度上的覆盖率,先实现PC端的自动化测试,第二期能够考虑移动端的自动化测试覆盖,

第三期能够考虑自动化测试平台的开发等等。有目标有计划,根据项目变化和进度不断调整。

自动化任务的优先级排序,能够参考这几点:

①、用户使用频率越高的优先级应该最高;

②、系统基础功能应该排在优先级前列;

③、系统核心功能(好比支付、订单)应该较早的覆盖;

④、历史记录中生产出现问题叫多的功能点,应该考虑尽量的覆盖;

三、工时预估

前期的准备工做(好比范围确认、需求分析、CI环境部署、测试方案设计、技术框架选型、文档整理等)完成后,须要针对具体的拆分后的任务进行工时预估,以确认工做阶段性的进展,

方便随时调整。工时预估须要考虑如下几点:

①、自动化测试人员我的的技术能力,特色;

②、项目状况、流程管理、系统架构的变化程度;

③、测试方案技术实现的难易程度;

 

8、解决问题

自动化测试道路上,全是坑!!!

工做中咱们会遇到不少问题,有沟通问题、管理问题、技术难点、以及一些不可描述的问题,但只有想办法解决这些问题,咱们才能在工做中不断提高,完成工做,得到该有的收获。

不一样的企业存在不一样的各类各样的问题,没有完美的公司,所以工做中,学会适应环境,融洽沟通,也是工做中必须的一项内容。

工做的本质就是拿钱消灾,解决问题,创造价值!!!

因此,良好的心态,坚持不懈的态度,解决问题的思路,是须要自动化测试童鞋所具有的。。。

 

以上就是我我的在自动化测试过程当中遇到的一些问题,挑战,以及本身的一些思考和解决方法,但愿能为看到的童鞋提供必定的思路和帮助,仅供参考。。。

固然,其中不少内容,拿出来单独说,也有不少值得探讨的地方,限于篇幅这里就不一一分析,后续会不断更新。。。

相关文章
相关标签/搜索