接口自动化测试用例编写规范

一、接口自动化测试用例设计方法

1.1接口参数覆盖

接口测试通过输入使用参数组合,获得服务器返回值,并根据预先设定的规则判断是否符合预期值。在接口测试中,根据接口的功能不同,需要侧重检测的方面也不同。主要从以下几个方面考虑用例设计:

1) 前提条件

  有些接口需要满足前提条件,才可以成功获取数据。

  例:常见的需要登录    token

2)      参数类型(数值型、字符型、布尔型、枚举型、组合类型)

  a.       特定接口字段对入参的参数类型有要求

  例:商品的价格

3)      异常值:null、空字符

  a.       必要参数不允许为空

  例:登录账号/密码

4)      边界值

  a.       有限定取值范围的字段(取值范围内的最大、最小、最大+1、最小-1,范围内取值)

  例:用户可用积分

5)      默认值

  a.       非必选参数,未传值时采用默认值

6)      非法值

  a.       类型不匹配

  b.      超出类型范围

  c.       超出操作系统限制

  d.      系统关键字

7)      参数组合

  采用笛卡尔积的全组合策略。

  例:3个参数,每个参数有5种取值,组合起来就有5x5x5=125个测试用例,优点是覆盖全面,缺点是组合数量巨大,工作量大。

8)      全对偶组合

  保证每个参数和其他参数都有组合出现,即采用尽可能少的组合覆盖尽可能对的参数,覆盖性价比很高。

  例:3个参数,每个参数有5种取值,大约只需25个用例即可覆盖。

9)      单点失效

  单个参数使用非法或异常值,其他值保持正常取值。

10)   多点失效

  多个参数使用非法或异常值,其他采用正常取值。

11)业务规则、功能需求

  根据时间情况,结合接口参数说明,可能需要设计n条正向用例和逆向用例。

1.2场景覆盖

  a.       从用户角度进行设计的测试覆盖。主要是模拟用户的业务操作,达到对用户行为的覆盖。

  b.      场景测试优先覆盖正常路径,其次是分支路径以及异常路径。

  c.       测试场景保持独立性和原子性,每个测试场景完成独立的功能,不受其他操作的影响。

二、测试断言设计

自动化测试中的测试通过条件,断言用于判断测试用例执行结果是否符合预期。

设计原则:

 a.       尽量保持断言形式统一。

  b.      选择具有明确的message参数的断言方法,使断言结果的可读性更强。

  c.       选择断言的对象需准确,有代表性。

  d.      不使用接口响应数据作为唯一断言,需结合数据库相应数据变化做断言。

三、自动化用例编写规范

  a.       一个脚本是一个完整的用例。

  b.      用例中正向逻辑用例为主,逆向逻辑用例为辅。

逆向逻辑的情况较多(例如手机号输错有很多种情况),逆向逻辑按等价类划分法选取具有代表性的用例编写。

  c.       用例之间不要产生关联性,即编写的每一个用例都是独立的,不依赖或影响其他用例脚本。

  d.      整个脚本中只对验证点进行验证,不需对整个脚本每一步都做验证。

  e.       测试用例的上下文有一定的顺序性,能够互相连接,并且前置条件清晰。

  f.        尽量把重复任务放入一个方法中,这样它可以被多个测试用例调用。

  g.      测试用例只要不匹配预设的验证点,抛出合适的异常并提供详细的失败信息。

  h.      前置条件的准备尽量调取功能接口完成,非必要情况不使用直接修改数据库字段值的形式(必要情况下也要保证所修改字段不影响其它数据或系统功能)  。

  i.        统一命名方式,测试用例模块名、方法名以test_api名称命名。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/179454.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 基础语法 (常常容易漏掉)

同一行显示多条语句 python语法中要求缩进,但是同一行可以显示多条语句 在 Python 中,可以使用分号 (;) 将多个语句放在同一行上。这样可以在一行代码中执行多个语句,但需要注意代码的可读性和维护性。 x 5; y 10; z x y; print(z) 在…

Docker Compose详细教程(从入门到放弃)

对于现代应用来说,大多都是通过很多的微服务互相协同组成的一个完整应用。例如, 订单管理、用户管理、品类管理、缓存服务、数据库服务等,它们构成了一个电商平台的应 用。而部署和管理大量的服务容器是一件非常繁琐的事情。而 Docker Compos…

LabVIEW中NIPackageManager功能介绍

LabVIEW中PackageManager功能介绍 使用NIPackage Manager可安装、更新、修复和删除NI软件。 安装NI软件 使用PackageManager浏览和安装NI软件。 1. 在浏览产品选项卡上,单击产品类别以显示该类别中的可用产品。 2. 选择要安装的产品,然后单击…

后端接口错误总结

今天后端错误总结: 1.ConditionalOnExpression(“${spring.kafka.exclusive-group.enable:false}”) 这个标签负责加载Bean,因此这个位置必须打开,如果这个标签不打开就会报错 问题解决:这里的配置在application.yml文件中 kaf…

时间序列预测-Transformer,Informer,Autoformer,FEDformer复现结果

实验环境硬件规格或软件版本号CPUInter Xeon E5-2678 v3 2.50GHzGPUNVIDIA TITAN X (Pascal)内存32.0GBPython3.7.3Pytorch1.2.0CUDA11.6 实验结果 可视化实验结果 见资源

tracert命令

前言:今天在阅读“Web性能权威指南”这本书的时候,发现 tracert 这个命令挺有意思的,在分析网络性能瓶颈的时候也能使用的到,在此就小记一笔以备后用。 1:作用 tracert 是一个简单的网络诊断工具,可以列出…

深入解析JavaScript中的变量作用域与声明提升

JS中的变量作用域 背景: ​ 之前做js逆向的时候,有一个网站很有意思,就是先出现对其赋值,但是后来的变量赋值没有对其发生修改,决定说一下js中的作用域问题. 全局作用域: ​ 全局作用域的变量可以在任何…

【力扣题:循环队列】

文章目录 一.题目描述二. 思路解析三. 代码实现 一.题目描述 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好…

什么是CSV文件,以及如何打开CSV文件格式

​CSV代表Comma Separated Values。CSV文件是一种纯文本文件,用于存储表格和电子表格信息。内容通常是由文本、数字或日期组成的表格。使用将数据存储在表中的程序可以轻松导入和导出CSV文件。 CSV文件格式 通常CSV文件的第一行包含表格列标签。后面的每一行表示表…

【探索Linux】—— 强大的命令行工具 P.15(进程间通信 —— system V共享内存)

阅读导航 引言一、system V的概念二、共享内存(1) 概念(2) 共享内存示意图(3) 共享内存数据结构 三、共享内存的使用1. 共享内存的使用步骤(1)包含头文件(2)获取键值(ftok函数)(3)创…

设备报修流程要怎么优化?工单管理系统如何提高设备维修效率?

在当今快速发展的数字化时代,传统的设备报修流程已经难以满足企业的需求。纸质记录、电话通知等传统方式不仅效率低下,而且容易造成信息遗漏和错误。为了解决这些问题,企业需要引入一种更加高效、便捷的维修管理系统——的修工单管理系统。  …

【C++】泛型编程 ② ( 函数模板与普通函数区别 )

文章目录 一、函数模板与普通函数区别1、函数模板与普通函数区别2、代码示例 - 函数模板与普通函数区别 一、函数模板与普通函数区别 1、函数模板与普通函数区别 函数模板与普通函数区别 : 主要区别在于它们能够处理的 数据类型数量 和 灵活性 ; 自动类型转换 : 函数模板 不允许…