Http接口系列:如何提高Http接口用例的数据稳定性
此文已由作者王婷英授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
为了尽可能多的释放手工测试,提高测试效率,我们都会想到使用自动化测试,如http接口自动化测试、doubbo接口自动化测试、UI自动化测试等一系列的自动化测试。让我们觉得原来自动化测试的种类也是多彩多姿的。
当前自动化测试在行业中投入的比例如下图:
图1 互联网行业自动化投入黄金角
当前考拉这边投入比较多的是单元测试和接口测试,比较符合当前测试行业的投入自动化的比例情况。目前,我们在http接口执行持续集成CI的时候,经常会出现测试用例执行失败了。详细的失败调用情况数据(数据来源于考拉质量平台)如下:
图2 http接口执行失败的数据统计表
从图2中,我们可以看出,当前考拉的接口自动化不稳定的比例如下:环境问题占57%,数据问题占25%,测试用例问题占4.5%,其他问题占10.5%,发现bug数占3%。前三名分别是环境问题、数据问题和其他。
环境问题:这个问题是存在多元因素导致,整个考拉的工程之间的关系链比较长且有一定的复杂性,需要在环境迭代中找到平衡的方法。
数据问题:这个目前有很多种情况会发生数据问题,如下:
(a)测试用例里的测试数据,在测试环境被别人动了,改变了这条数据的属性状态,或者是数据已经别删除了
(b)测试用例里的测试数据对应的测试用例比较一次性,只能跑一次,每次跑之前,都需要把数据提前准备好
(c)数据库链接变更后,测试用例的测试数据检验不通过,需要重新调整测试数据的获取源
3. 基本上数据问题就上面说的几点,不过应该还存在一些遗漏,主要是结合自己在跑接口自动化的时候出现的一些问题。
其他:这个暂时没有进行调研
上述过渡说了当前考拉接口不稳定的原因进行了简单的分析。
那么接下来,我们一起聊一聊如何避免接口测试用例数据的不稳定。
下面我们来简单的看下一个简单的接口测试用例的迭代优化,以达到一定的稳定性。
例如:delete操作的接口
该接口只要是删除长文里权限列表里的用户(只要在这个列表里的permissionid始终为10001,而openId会发生变化
图3 delete接口的V1.0
图3中,直接将openId直接赋值,这样就会导致一个问题,只能删除这个指定的用户,且自动化跑了一次之后,这个接口再次重新跑就会直接失败。这种接口测试用例非常的不稳定,当然初次写的时候,很多人会先这么写,写完之后,再进行优化。
图4 delete接口的V2.0
图4是对图3的V1.0进行的一次迭代,使用了list接口来协助delete接口,同时使用了TestNG里的dependsOnMethods依赖执行的方法将两个接口合在一个接口里,并将openId这个字段进行参数化。一般这种情况下,delete接口是相对于V1.0是非常稳定的。但是这个有一个弊端就是万一这个list的size==0,那么此时delete接口已经会跑不通过。那么这个接口就需要我们再一次对其稳定性进行迭代。
图5 delete接口的V3.0
图5和图3长得很相似,但是V3.0的迭代版本是将V1.0和V2.0进行结合在一起。具体操作如下:
图6 delete接口V3.0的流程图
如果delete接口按照V3.0进行,那么类似这种数据稳定性基本上是可以解决。
当然测试用例数据的稳定性还有其他类型的。后续我们遇到了类似的场景继续进行研究分析,有更好的建议可以pop私信我,再好好交流。本次就先聊这么多哈^_^
网易云免费体验馆,0成本体验20+款云产品!
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 谈谈数据库的跨机房容灾-网易云
【推荐】 360°透视:云原生架构及设计原则
【推荐】 SpringBoot入门(三)——入口类解析
Http接口系列:如何提高Http接口用例的数据稳定性的更多相关文章
- c#中常用集合类和集合接口之接口系列【转】
常用集合接口系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html 常用集合类系列:http://www.cnblogs.com/fengxiaoji ...
- 【Spring源码分析系列】ApplicationContext 相关接口架构分析
[原创文章,转载请注明出处][本文地址]http://www.cnblogs.com/zffenger/p/5813470.html 在使用Spring的时候,我们经常需要先得到一个Applicati ...
- spring源码分析系列 (3) spring拓展接口InstantiationAwareBeanPostProcessor
更多文章点击--spring源码分析系列 主要分析内容: 一.InstantiationAwareBeanPostProcessor简述与demo示例 二.InstantiationAwareBean ...
- spring源码分析系列 (2) spring拓展接口BeanPostProcessor
Spring更多分析--spring源码分析系列 主要分析内容: 一.BeanPostProcessor简述与demo示例 二.BeanPostProcessor源码分析:注册时机和触发点 (源码基于 ...
- stm32 nucleo系列开发板的接口
1. 首先说的是 Arduino接口,所有的nucleo系列都支持这个接口,而且像F767这种尺寸长的板子也有的,不过是双排排针,其实就是外侧也是 Arduino接口 2. 板子接上电脑之后有个串口
- 【玩转单片机系列001】 08接口双色LED显示屏驱动方式探索
前些日子,从淘宝上购得一块08接口的双色LED显示屏(打算做个音乐频谱显示器),捣鼓了好几天,终于搞清楚了其控制原理,在这里做个总结,算是备忘吧. 1.LED显示屏的扫描方式 LED显示屏的扫描方式有 ...
- Java集合总结系列2:Collection接口
Collection 接口是 Java 集合类的一个根接口,Java 在 Collection 接口中定义了许多通用的数据操作类方法以及判断类方法. 通过查看 API 文档或源码的方式,我们可以了解到 ...
- Java基础系列--06_抽象类与接口概述
抽象类 (1)如果多个类中存在相同的方法声明,而方法体不一样,我们就可以只提取方法声明. 如果一个方法只有方法声明,没有方法体,那么这个方法必须用抽象修饰. 而一个类中如果有抽象方法,这个类必须定义为 ...
- SpringBoot系列 - 集成JWT实现接口权限认证
会飞的污熊 2018-01-22 16173 阅读 spring jwt springboot RESTful API认证方式 一般来讲,对于RESTful API都会有认证(Authenticati ...
随机推荐
- 自动下单tomcat版本问题
\xalan\xalan,jar找不到是因为spring boot 中使用的是tomcat8.5,从platform依赖进来的运行时环境是tomcat8,导致覆盖原来的依赖,在platform中移除S ...
- 安装最新版的wampserver,可以兼容php5和php7
本文介绍的wamp是Windows+Apache+MySQL+PHP+phpMyAdmin,主要应用于开发环境[一键安装包,简单好用]. 这是运行在Windows系统下的官方安装包,可以快速的搭建属于 ...
- JDK自带监控工具
该篇文章,主要是工具普及,告诉大家有这么两款工具,可帮助我们进行JVM调优,及时看到JVM的变化. 不过建议,最好还是对于JVM相关的知识点,有一定的基础和熟悉. JDK自带jconsole.exe和 ...
- idea教程视频以及常用插件整理
最近在同事的强烈安利下把eclipse换成idea了,本以为需要经历一个艰难的过渡期,谁知道不到3天就深感回不去了. 哎,只能说有时候人的惰性是多么可怕! idea实在是太太太强大了. 不要再问原因. ...
- python 爬虫简介以及使用方法
阶段大纲: 一. 爬虫 1. 基本操作 - 登录任意网站(伪造浏览器的任何行为) 2. 性能相关 - 并发方案: - 异步IO: gevent/Twisted/asyncio/aiohttp - 自定 ...
- Notes 20180308 : 语句
在讲解流程控制语句之前,我们先来说一下语句的问题.Java中的语句分为声明和赋值语句,条件和循环语句,调用和返回语句:我们之所以每两个放在一起是有深意的,我们大致将语句分为这三块,并以此为纲来说一下, ...
- 使用第三方库iOS-ECharts做柱状图的心得
最近的项目里面用到了饼图和条形统计图,饼图用的是PNChart来做的,这个库感觉用起来也简单,但是做条形统计图的时候就特别蛋疼(不知道是不是我姿势没对),反正就是各种问题,然后就想到换一种框架,最后选 ...
- windows下3D文字
windows下3D文字 简单概述 需要在每一帧的视频图像上面添加3D文字,文字可以自由移动位置,变换各种字体属性,还能进行一些简单动画.然后把处理好的视频图像传个下一个步骤去处理.做的过程中参考了G ...
- 装饰器概念&实际使用干货
定义: 本质是函数(装饰其他函数),是为其他函数添加附加功能 原则: 不能修改被装饰函数的源代码 不能修改被装饰函数的调用方式 实现装饰器知识储备: 函数及“变量” 高阶函数 把一个函数名当做实参 ...
- [ZJOI2009]假期的宿舍(二分图匹配)
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...