接口测试(case设计 流程图解析 数据类型)

1. 接口测试定义

接口:主要是子模块或者子系统间交互并相互作用的部分,这里说的接口是广义的,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口。
接口测试:是指针对模块或系统间接口进行的测试,我们也可以理解为端到端的测试,只不过是前端到后段-后段到中台的测试。

2. 接口测试用例设计

在功能测试的过程中,我们的case设计思路一般都是模块化编写,或者是用户的体验过程编写,然后我们加上接口返回参数的容错性测试,网络异常的兜底,兼容其他状态等等。
那么在接口测试的case里,这种用例的设计思路只占其中一部分,需要结合前端的prd与接口的技术文档与接口文档并行去完成。(这里是个人case设计习惯与思路,欢迎参考与补充~)

2.1 接口格式case设计

首先我们可以在一级标题下面拆分成两个子模块,分别是接口格式与需求模块内容。
顾名思义就是接口内格式的case与需求的case分别放在对应不同的模块内。
在这里插入图片描述
在这里插入图片描述
这里可以参考养成一个好习惯,在最上方的位置单独拉出模块记录文档与地址内容,功能case可以粘贴prd地址与需求背景目的(需求目的可以让我们更好的理解需求的侧重点),这里是以前的一个端上需求case,可以对比一下出入。
“开宝箱”与“拉新红包回流”是两个接口,那么我们就按照接口来拆分一级标题。并且能看到一级标题下接口格式的子标题是通用的。

2.1.1 接口格式模块拆分

对照接口文档内编写接口格式内case
在这里插入图片描述
能很直观的看出架构的拆分,首先是接口的url地址,然后是请求参数的格式(接口请求类型,入参,强制登陆效验与请求头),最后是返回参数。

2.2 case参数验证

2.2.1 “必须”与“非必须”概念。

必须就是入参与返回参数内比带的字段,不带就会引发接口报错或者前段找不到对应字段报错。
非必须是在特定的场景下才会触发相对的字段上传或者返回,比如我开宝箱,开出了道具类奖品那么我接口返回的就会是道具类相关的非必传字段。那如果我开出了现金红包,那么就会返回红包相关的非必传字段,这时候就不会返回道具类相关的非必传字段了(这里稍微强调一下,必传与非必传的字段确定是前后端通过协商决定的)。

2.2.2 强制登陆效验

强制登陆效验是个测试点,比如一定要验证用户的信息与状态,通常是存储在cookie内。

2.2.3 参数的容错性
那么这时候有的同学就会问,我们写这个入参与返回参数测试什么。

接口测试内需要测试入参的字段正确性、错误性、边界值与容错性,返回正确与错误还有错误码。
容错性测试其实就是值的各种状态(可以参考一下以前客户端的case)
在这里插入图片描述
这里的不会出现异常指的是客户端无法解析server返回参数,从而出现crash。
边界值在接口测试内需要注意的主要就是数据类型的边界值,数据类型在后面的“接口字段的数据类型内会有比较详细的介绍”。

3.流程图解析

技术文档内会有流程路,方便我们更好的理解实现过程与经过。
在这里插入图片描述

首先我们能看到接口与各个中台rpc交互的过程,并且也能看到先后顺序,结合流程图写出测试case。
如:客户端点击功能进行了请求 那么这时候就会请求接口 这就是流程图内其中的一步。

在这里插入图片描述

3.1 依赖服务异常

前段到后段如果有问题,过程可能是 前段->后段 请求有问题 也有可能是 前段<-后段 返回有问题。
那么server的测试中也是一样,同样都是端到端的测试,只不过一个是前段-后段,另一个是server-中台,或者是中台-中台,最后结果返回给server就行。
但是在这个过程中,无论是server-中台还是中台-中台的请求与返回都可能会有失败异常的情况,那么这个时候我们就需要考虑一下失败后的场景。
这里来举个例子:
宝箱通关时,先会对接发奖中台,对接后会写入数据库(发奖记录)。假如server-db(数据库写入失败),但是奖励已经发了怎么办。
再举个例子:在这里插入图片描述
宝箱接口-宝箱进度缓存,在第3步的时候想缓存那获取了当前进度,这就相当与接口请求了redis,但是请求失败了,这是redis根本就不知道你想做什么,所以只能返回个错误结果。或者redis返回出错,宝箱接口server解析不了那么宝箱接口只能向客户端返回报错,“哎呀 不好意思redis大哥说的嘛我听不懂”

3.2 数据存储与读取

数据存储与读取就是,当流程内涉及到了数据库与缓存、存储/更新等机制,删除缓存那记录内容时,我们就要考虑case场景了。

3.2.1 数据存储

在这里插入图片描述
数据存储需要注意存储的时机,存入数据的正确性异常性(数据存储过程出错导致未存储到db或redis内)。

3.2.2 数据读取

数据读取注意的与存储差不多,也包含时机/获取参数的正确性/异常性(获取失败或者返回失败),那么清除redis时也需要注意主动删除(时机)与被动删除。

4 rpc是什么

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

5 幂等性的含义与使用场景

5.1 幂等性含义

如果一个操作执行任意多次所产生的影响,均与执行一次的影响相同,我们就称其为幂等。

5.2 使用场景

业务开发中,经常会遇到重复提交的情况,无论是由于网络问题无法收到请求结果而重新发起请求,或是前端的操作抖动而造成重复提交情况。 在交易系统,支付系统这种重复提交造成的问题有尤其明显,比如:

  1. 用户在APP上连续点击了多次提交订单,后台应该只产生一个订单;
  2. 向支付宝发起支付请求,由于网络问题或系统BUG重发,支付宝应该只扣一次钱。 很显然,声明幂等的服务认为,外部调用者会存在多次调用的情况,为了防止外部多次调用对系统数据状态的发生多次改变,将服务设计成幂等。

6 接口字段的数据类型

在接口文档内 研发同学会明确的写出接口的组成
如请求参数内:请求头Headers/请求体body
还有返回数据
名称字段内后面都会跟有每个字段相对应的数据类型
下面对数据类型稍微做一个介绍
因为server是用java的代码编写的,所以这里的数据类型是java的基础知识,他跟我们的python不一样,在python内,如整数都是统一用的int来代表,但是java这边就会更加详细。

6.1 四大数据类型

java内有四大数据类型,分别是:整数型/浮点型/布尔型/字符型。

那么四大类又可以分成八小种,分别是:
整数型:byte short int long
浮点型:float double
布尔型:boolen
字符型:char
每个类型都对应了不同的字节大小,1个字节等于8个比特位,具体的换算关系可以再细查一下。

那也相对应的就是不同类型以为占用字节大小不同而取值范围不同,这里还设计到了二进制的换算,感兴趣的也可以稍微查一下。
byte 的取值范围:-128~127(-2的7次方到2的7次方-1)
short 的取值范围:-32768~32767(-2的15次方到2的15次方-1)
int 的取值范围:-2147483648~2147483647(-2的31次方到2的31次方-1)
long 的取值范围:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)
float(单精度浮点型)取值范围:3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)
double(双精度浮点型)取值范围:1.797693e+308~4.9000000e-324(同上)
boolean 它的取值就两个:true 、false 。
char ch = ‘a’; // 可以是汉字,因为是Unicode编码
除了上面的基本数据类型外,研发同学还会使用integer/string/number数据类型。
他们分别代表:

6.2 Number类

在实际开发的过程中,常常会用到需要使用对象而不是内置的数据类型的情形。所以,java语言为每个内置数据类型都提供了对应的包装类。六种内置数据类型:byte, short, int, long, float, double分别对应Number抽象类的子类:Byte,Short,Integer,Long,Float,Double

6.3 String类

String:字符串常量,字符串长度不可变。在java底层中,String是char数组构成的,并且被声明为final类型。

6.4 integer

Integer 类型其实是 int 类型的包装类型,从 java 5 开始,为了使基本数据类型使用起来更灵活一些,java 采用自动装箱和自动拆箱
Integer a = 5; //自动装箱
int b = a; //自动拆箱

6.4.1、Integer是int的包装类,int则是java的一种基本数据类型
6.4.2、Integer变量必须实例化后才能使用,而int变量不需要
6.4.3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
6.4.4、Integer的默认值是null,int的默认值是0

通过数据类型的区分我们可以完善相应的case如:
在这里插入图片描述
数据类型为boolean的情况下非布尔型数据是否会返回响应的错误码等等。
从代码内我们能看到入参的数据类型 然后根据具体的数据类型进行测试。
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值