0
点赞
收藏
分享

微信扫一扫

一、关于接口自动化的思考


1、为什么做接口自动化?有什么考虑和收益?

质量和效率两方面:

效率:

是否节约了时间成本?

节约了时间成本:节省了回归测试的时间,手工需要多久,自动化需要多久

没有节约时间成本:时间成本PK重要程度

质量:

结合业务的难点、痛点去做,做完有什么成果

编写成本、维护成本

结合当前业务

接口变动是否频繁、多久变动一次

2、说一说接口自动化的应用场景

场景一:

在接口/功能提测后,编写自动化测试case。

测试环境:case覆盖全面

线上环境:测试过程中,沉淀出来比较经典的case,用作线上巡检。

通过给case打标签来区分测试/线上环境

场景二:

自动化case只应用在测试环境。线上监控用的不是接口自动化,生产环境有专门的实时监控报警系统

3、什么时候写接口自动化

场景一:

接口提测之前,对着接口文档写接口自动化case,开发提测的时候执行自动化,一般作为准入,放在CICD,在功能测试阶段就要完善自动化case,具体看公司要求。

场景二:

在测试过程中写接口自动化case

4、自动化case 有哪些痛点?

  • 编写成本、
  • 便捷性、
  • 维护成本、
  • 覆盖率、
  • 做了自动化测试,线上还有bug
  • 误报率:case执行失败了,但并不是bug引起的。肯能是网络、环境
  • 稳定性(最重要):稳定的运行、
  • 报警策略:
  • 随着case量的增加,维护成本与执行成本增加

随着case量的增加,维护成本与执行成本增加:

解决办法:

多线程并发

a、本身框架/系统是否支持多线程并发(如testNG、pytest本身支持多线程并发)

b、多线程时是否会有引起数据问题

稳定性:

因为环境问题/网络/接口变动,导致case报错。

网路问题:

加入重试机制,失败之后加入一个think时间,过几秒再重试。(或者我们有必要每条失败的case都要重试吗?) pytest框架,自带重试功能

迭代接口发生修改:

流程上解决:如每个迭代开发及时同步修改了哪些接口

技术上解决:做一个APi变化的快速感知。开发修改了接口文档,及时推送给相关测试。

报警策略:

在不同重要程度的case上打报警标签。这条case执行失败了,触发报警。

根据重要程度不同,这里做一个报警机制,如失败三次,再触发报警。(频繁的报警也不太好)

目前的自动化为业务带来了哪些收益:

  • 准入标准
  • 冒烟
  • 拦截率

准入标准:开发提测的时候,先执行我们这些case,case通过了再提测。

拦截率:某个case失败了,重试多少次之后,发出报警。

作用在冒烟的主流程case上

作用在线上巡检

如何做接口自动化?

分析业务不同纬度的特点,设计适合自己业务的接口框架。

业务复杂度:

横向:如APi数目较多,比如有几千个接口,但是每个接口的请求参数并不复杂,且内部逻辑比较简单。

纵向:如API数目并不多,但是每个接口内部逻辑纵向比较深,比如一个接口从发起请求,到走完一个流程,要走很多的模块,落地很多的数据,做很多的逻辑判断。

横向纵向均有:。。。

业务测试难度:

偏简单型:基本靠点页面或者操作app就可以完成98%的业务逻辑。

偏复杂型:就算把页面拆了,每个按钮点几遍,业务的覆盖也就能覆盖住5%。页面的功能测试不能覆盖全部大部分的业务,此时就是需要接口自动化在接口层面来覆盖更多的业务场景。

例如:佣金宝、同花顺:页面复杂,但是后台逻辑不复杂。

例如:嘀嘀打车、美团外卖:页面简单、但是内部逻辑复杂

业务依赖 程度:

对内部组件依赖较多:如passport、实名服务、用户中心、id生成器、mq组件、动态配置服务,服务注册中心

对外部依赖:如金融类业务,特点就是几乎所有功能都是跟外部机构和银行交互,这类业务与社交聊天的业务相差太多。

业务特点:

场景较多:如完成一次外卖订餐,需要选择、进店、获取优惠规则,选择商品,加入购物车,下单,下单确认回调给用户,支付、接单、分配骑手、骑手接单、骑手路线、骑手接单、骑手送单、骑手确认接单、用户确认、评价、超期订单自动结束、商家分账、商家结算、商家提现,商家与平台对账。

场景较少:如发布帖子

确定边界:

定义清楚,到底要做哪些业务,解决哪些实际问题,目标要清晰、明确。

结合以上业务摸底,结合特点明确要落地在哪些特点之上,不同特点,设计出来的框架完全不同。

框架不要做通用框架,越是适用各种不同的场景,实际越是不适用,要针对自己当前的业务来设计。

做工具时,首先调研组内有没有实现的,其他部门有没有现成的工具,再看业界有没有可以用的工具,然后整合,输出一个具备业务特点的东西,定制化的框架/工具。

在给别人说自己做的框架/工具时,都有一个前置条件,先介绍我们的业务是xx,所以当时有xx这样的问题,所以我的框架做了这样的xx

不要说框架的时候,感觉这个框架能放到任何公司任何业务,那这个就是0分。

设计:

内部真实实现:

先做出来,后续慢慢迭代。考虑投入产出比

面对晋升/面试:

业务特点->内外部差异和现状/摸底->业务定制化输出->架构设计->实际效果->数据说话

二、junit接口自动化框架(二次开发)-1_傲娇的喵酱的博客

举报

相关推荐

0 条评论