接口自动化测试测试用例设计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口自动化测试测试用例设计相关的知识,希望对你有一定的参考价值。

参考技术A 浅谈接口自动化测试测试用例设计

一、   前言   

很多中台项目,大部分为接口测试。为了使新入职的测试同事尽快融入项目,以及迭代开发中方便管理测试用例。完成该总结。

二、   测试用例设计思路   

1、 接口类型概述及优先级  

1) 提供给第三方调用的接口  

2) 内部系统使用,核心功能接口  

3) 内部系统使用,非核心功能接口  

基本按照1)2)3)的顺序进行测试,特别情况除外

2、 单接口测试优先级  

1) 优先测试正向测试用例,保证基本功能实现  

2) 设计逆向测试用例,确保接口的健壮性  

3) 满足前提条件的测试用例  

4) 默认参数是否满足  

5) 参数校验  

6) 参数间联动关系

7)多参数错误处理的优先顺序校验

三、   设计分析   

1、 满足前提条件的测试用例  

测试目标接口需要满足前置条件才能成功获取数据。

例如:需要登录token,通过传入参数获取下游接口数据

2、 携带默认参数的测试用例  

携带默认参数的测试用例仅需要设计一条,所有默认参数的字段都不填写,其他字段输入正常。

[if !supportLists]3、 [endif]参数校验  

参数校验包含如下几方面:

[if !supportLists]1)[endif]输入参数是否为必须输入项

[if !supportLists]2)[endif]输入参数的类型

[if !supportLists]3)[endif]输入参数的枚举值校验

[if !supportLists]4)[endif]输入参数长度校验

以上测试用例最好根据字段一一校验,排除互相干扰

[if !supportLists]4、 [endif]参数间联动  

有些参数见存在彼此制约的关系,根据实际情况设计测试用例

例如:A字段为1时,B字段一定为空。否则报错。

那么测试用例设计时应为:A字段为1时,B字段为空;A字段为1时,B字段不为空;A字段不为1时,B字段为空;A字段不为1时,B字段不为空;四条测试用例

这样基本覆盖所有分支流程。

[if !supportLists]四、 [endif] 测试用例实践操作

接口测试用例样例:

多条件查询接口

测试方法:使用robotFramework测试doubbo接口

协议请求方式:post

接口协议:JSON

消息请求列表

字段名数据类型默认值必须项备注

IDint 是长度为2

Tokenstring 是设备令牌

Statusstring 是1:正常

2:异常

typeint  Status为1时,为必须输入项

sizestring  默认值

消息返回列表

字段名数据类型必须项备注

Codeint是正常:20000

异常:20001

Messagestring是 

typeMessageint Status=1的所有ID

 

用例设计

 

NO. 测试内容 前置条件 输入参数 输出参数 用例属性

1目标数据为一条预置一条符合条件的数据Status=1,其他参数输入正常返回code=20000

typeMessage中返回的ID与预置数据一致

正向测试用例

2目标数据为多条预置多条符合条件的数据Status=1,其他参数输入正常返回code=20000

typeMessage中返回的ID与预置数据一致

正向测试用例

3 Token必须项检查 预置多条符合条件的数据Status=1,token输入为空,其他参数输入正常返回code=20001

typeMessage中返回为空

满足前提条件

4 Token正确性检查 预置多条符合条件的数据Status=1,token输入错误,其他参数输入正常返回code=20001

typeMessage中返回为空

满足前提条件

5 Status 必须项检查 预置多条符合条件的数据Status为空,其他参数输入正常返回code=20001

typeMessage中返回为空

参数校验

6 Status枚举预置多条符合条件的数据Status为1,其他参数输入正常返回code=20000

typeMessage中返回的ID与预置数据一致

参数校验

7 Status枚举预置多条符合条件的数据Status为2,其他参数输入正常返回code=20000

typeMessage中返回的ID与预置数据一致

参数校验

8 Status枚举预置多条符合条件的数据Status为3,其他参数输入正常返回code=20001

typeMessage中返回null

参数校验

9 Status=1,时联动校验预置多条符合条件的数据Status为1,type为空;其他参数输入正常返回code=20001

typeMessage中返回null

联动校验

10 Status!=1,时联动校验预置多条符合条件的数据Status!=1,type为空;其他参数输入正常返回code=20000

typeMessage中返回对应ID

联动校验

11 Status!=1,时联动校验预置多条符合条件的数据Status!=1,type不为空;其他参数输入正常返回code=20000

typeMessage中返回对应ID

联动校验

12 Size默认值输入校验预置多条符合条件的数据Size输入为空,其他参数输入正常返回code=20000

typeMessage中返回对应ID

默认值校验

13 Size默认值输入校验预置多条符合条件的数据Size输入不为空,其他参数输入正常返回code=20000

typeMessage中返回对应ID

默认值校验

14 ID 必须项检查 预置多条符合条件的数据ID为空,其他参数输入正常返回code=20001

typeMessage中返回为空

参数校验

15 ID 长度检查 预置多条符合条件的数据ID长度大于2,其他参数输入正常返回code=20001

typeMessage中返回为空

参数校验

16 破坏性测试预置多条符合条件的数据输入的参数类型错误请求未接收,返回404 稳定性测试

17 破坏性测试预置多条符合条件的数据输入的参数与提供的参数名称不一致请求未接收,返回404 稳定性测试

18 破坏性测试预置多条符合条件的数据输入的参数与提供的参数数量不一致请求未接收,返回404 稳定性测试

19 破坏性测试预置多条符合条件的数据输入的参数与提供的参数格式不一致请求未接收,返回404 稳定性测试

 

总结:自动化测试过程中会有一条自动化测试用例覆盖多种情况的可能(例如:正向测试用例与联动性验证的 Status=1,type输入不为空的测试用例重复,所以选择一条用例验证 。 ),以上的测试用例满足自动化的要求,手动测试过程中需要增加部分验证性的测试用例。且由于使用的测试工具特殊性,无需检查输入参数的类型。

接口自动化的设计

1.整体设计

测试工作中,接口测试是相当重要的部分,也是最好实施自动化的。一个完整的接口自动化测试框架,大概需要完成以下几个步骤:

1.用例编写。

2.获取用例。

3.执行用例,我们可以通过Jenkins自动执行,也可以手动执行。

4.生成测试报告。

5.通知,用例执行完成后,通知相关人员。

 

有了上面几个步骤,我们就可以设计我们的自动化测试框架了。如图所示,整个项目目录如下:

case目录用于存放测试用例,common用于存放主要的脚本,reports用于存放测试报告,config用于存储配置文件。requirement.txt是一些依赖库,可以通过pip install -r requirements.txt安装。run.py就是执行脚本了。

2.用例

首先我们需要设计我们测试用例的格式,一个接口大概有以下几个部分组成:

name:名字

method:请求方法

url:接口路径

params:参数

那我们设计的用例,除了包括这几个部分,还要还需要增加部分内容,以便于更好的执行测试:

id:用例编号

hope:期望结果

type:post请求是否需要上传文件,填file代表需要上传文件,不填代表的是普通的数据格式

params:

  args:random,file,id and value参数中,部分值我们可以通过random随机生成,file通过文件读取,id通过其他用例关联value值,类似jmeter的参数关联。

这里我们通过yaml格式的文件编写测试用一个用例大概如下所示:

本用例表示通过post请求上传文件和提交部分其他内容。

3.读取用例

我们可以通过python自带的yaml库读取用例文件,先获取case文件的所有yaml文件。

读取yaml文件

把所有用例存储到字典中,用于执行

4.执行用例

首先需要读取配置文件,获取host,title,需要执行的用例number,header等信息。

执行用例脚本

 

这就是整个执行用例的多有内容。这里我们有用到统计的类,用于存放用例和测试结果:

执行完用例就是生成测试报告了。

5.测试报告

报告样式

6.发送邮件

7.执行脚本

直接执行python run.py即可,不足之处,用例参数读取文件还未完成,用例执行没有使用python单元测试框架,不能捕获异常。

 

以上是关于接口自动化测试测试用例设计的主要内容,如果未能解决你的问题,请参考以下文章

自动化测试接口大纲

Apifox写接口自动化测试用例总结-1

Apifox写接口自动化测试用例总结-2

接口自动化的设计

疫情期间的学习与收获

接口自动化之pytest——用例设计原则及执行顺序