当前位置: 首页 > news >正文

2023最详细的接口测试用例设计教程

一、接口测试流程

1、需求讨论

2、需求评审

3、场景设计

4、数据准备

5、测试执行

二、分析接口文档元素

1、接口名称

2、接口地址

3、支持格式

4、请求方式

5、请求参数(参数名称、类型、是否必填、参数说明等)

6、返回参数(返回码、返回值信息、返回JSON串信息)

三、如何设计接口测试用例

3.1、为什么要设计测试用例

1、理清思路、避免漏测

2、提高测试效率

3、跟进测试进度

4、体现任务工作量

5、跟进重复性工作

3.2、设计接口测试用例从哪些方面考虑

1、功能

功能是否正常

功能是否按照接口文档实现

正常场景

异常场景

2、逻辑业务

是否依赖业务、比如是否登录成功

3、异常测试

(1)参数异常

关键字参数、参数为空、多参数、少参数、错误参数

覆盖所有的必选参数,组合可选参数,参数有、无或为null,参数的顺序、个数、类型

参数类型数值大小、输入的数值范围,参数字串长短,参数包含特殊字符

(2)数据异常

关键字数据、数据为空、长度不一致、错误数据

4、安全

Cookie

header

唯一识别码

四、常用的接口测试用例覆盖方法

1、必须参数覆盖

对于接口的参数,接口文档一般都会说明哪些是必需的,哪些是非必需的。

对于必需的参数,一定要测试传参数和不传参数接口是否报错。

2、必须参数各种情况覆盖

传非法的字符,特殊的字符,空值,超过边界的参数是否报错?错误信息是否正确?

3、非必须参数覆盖

一般接口对于非必需参数都不会做非正常性传值的判断,所以要测试合法的参数值,接口返回的内容是否正确。

如果有接口文档说明对非必需参数做了非正常的验证的话,也要对其进行验证。

4、参数组合覆盖

有些参数需要相互配合着才起作用,如“offset”和“count”组合起来进行翻页,这个时候要组合起来进行测试。

5、业务逻辑相关覆盖

有些接口与业务逻辑关联密切,单独从接口角度测试,可能会遗漏掉一些因业务逻辑而产生的bug。

所以如果和业务逻辑相关,也要考虑到业务逻辑相关的测试用例。

五、接口测试接口优先级

1、优先级 - 针对所有接口

(1)暴露在外面的接口,因为通常该接口会给第三方调用

(2)供系统内部调用的核心功能接口

(3)供系统内部调用非核心功能接口

2、优先级 - 针对单个接口

(1)正向用例优先测试,逆向用例次之(通常情况,非绝对)

(2)是否满足前提条件 > 是否携带默认参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限制 >参数数据类型自身的数据范围限制

六、接口测试的设计思路分析

1、是否满足前提条件

有些接口需要满足前置条件,才可成功获取数据。如常见的需要登陆Token。

逆向用例:

针对是否满足前置条件(假设为n个条件),设计0~n条用例

2、是否携带默认值参数

正向用例:

带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其它不填写,设计正向用例

3、业务规则、功能需求

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

4、参数是否必填

逆向用例:

针对每个必填参数,都设计1条参数值为空的逆向用例

5、参数之间是否存在关联

有些参数彼此之间存在相互制约的关系

逆向用例:

根据实际情况,可能需要设计0~n条用例

6、参数数据类型限制

逆向用例:

针对每个参数都设计1条参数值类型不符的逆向用例

7、参数数据类型自身的数据范围限制

正向用例:

针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例

逆向用例:

针对每个参数(假设n个),设计n条每个参数的参数值都超出数据范围最大值的逆向用例

针对每个参数(假设n个),设计n条每个参数的参数值都小于数据范围最小值的逆向用例

总结:

以上几个方面考虑全的话,基本可以做到如下几个方面的覆盖:

(1)主流程测试用例:正常的主流程功能校验

(2)分支流测试用例:正常的分支流功能校验

(3)异常流测试用例:异常容错校验

七、接口测试返回结果的比较

目的:

验证代码正常

验证代码正确

1、比较返回码

2、比较返回值的完整性,即返回的key全不全

3、比较key的value数据类型

4、比较key对应的value值(也包括验证业务相关数据的value值)

总结:一般接口自动化,通常验证1、2两点即可,第3点根据公司测试周期来评估,而第4点,在功能测试中会验证value值的正确性。

相关文章:

2023最详细的接口测试用例设计教程

一、接口测试流程 1、需求讨论 2、需求评审 3、场景设计 4、数据准备 5、测试执行 二、分析接口文档元素 1、接口名称 2、接口地址 3、支持格式 4、请求方式 5、请求参数(参数名称、类型、是否必填、参数说明等) 6、返回参数(返回…...

【数据库】 数据库的理论基础详解

目录 一, 什么是数据库 二, 数据库管理系统(DBMS) 三,数据库与文件系统的区别 1,对比区别: 2,优缺点总结: 四,数据库的发展史 五,常见数据库 1, 关系型…...

Linux环境运行Maven 生成的hadoop jar包

运行命令: hadoop jar ./jar包名字 class对象路径 输入路径 输出路径 linux内部jar包测试 cd 到以下目录,创建以下文件夹 [rootreagan180 ~]# cd /opt/soft/hadoop313/share/hadoop/mapreduce/ 创建文件夹(读取路径) [roo…...

ThreadPoolExecutor原理解析

1. 工作原理1.1 流程图1.2 执行示意图从上图得知如果当前运行的线程数小于corePoolSize(核心线程数),则会创建新线程作为核心线程来执行任务(注意,执行这一步需要获取全局锁)。如果运行的线程等于或多于corePoolSize,则将任务加入BlockingQue…...

谷粒学苑第二章前端框架-2.2前端框架开发过程

一、前端框架开发过程 第一步:添加路由 src/router模块用来管理路由。 第二步:点击某个路由,显示路由对应页面内容 component: () > import(/views/table/index), 表示路由对应的页面,是views/table/index.vue页面 第三步&a…...

权限管理实现的两种方式(详解)

登录的接口请求的三个内容:1. token2. 用户信息、角色信息3. 菜单信息第一种:基于角色Role的动态路由管理 (不推荐,但市场用的比较多)首先列出枚举每个角色对应几个路由,然后根据用户登录的角色遍历枚举出来的角色动态注册对应的路…...

【C++】智能指针思路解析和模拟实现

此篇文章就从以下几个方面出发,带你了解智能指针的方方面面1.为什么需要智能指针当我们开辟内存并使用的时候,我们的顺序应该是这样:开辟内存-》使用内存-》释放内存问题就出现在第三步,开辟好了,也使用了,…...

SpringCloud(18):Sentinel流控降级入门

Sentinel本地应用流控降级实现分为三步: 创建本地应用搭建本地Sentinel控制台本地应用接入本地Sentinel控制台1 本地应用创建 整体流程分析 创建springboot项目在项目的pom.xml文件中引入sentinel-core的依赖坐标创建TestController,定义使用限流规则运行测试具体流程 1.创…...

C++【多态】

文章目录1、多态的概念2、多态的定义及实现2-1、多态的构成条件2-2、虚函数2-3、虚函数的重写2-4 多态样例2-5、协变2-6、 析构函数与virtual2-7、函数重载、函数隐藏(重定义)与虚函数重写(覆盖)的对比2-8、override 和 final&…...

缓存预热、缓存雪崩、缓存击穿、缓存穿透,你真的了解吗?

缓存穿透、缓存击穿、缓存雪崩有什么区别,该如何解决? 1.缓存预热 1.1 问题描述 请求数量较高,大量的请求过来之后都需要去从缓存中获取数据,但是缓存中又没有,此时从数据库中查找数据然后将数据再存入缓存&#xf…...

【Java基础】018 -- 面向对象阶段项目上(拼图小游戏)

目录 拼图小游戏(GUI) 一、主界面分析 1、练习一:创建主界面1 2、练习二:创建主界面2(JFrame) 3、练习三:在游戏界面中添加菜单(JMenuBar) ①、菜单的制作 4、添加图片&a…...

【网络~】

网络一级目录二、socket套接字三、UDP数据报套接字四、TCP流套接字一级目录 1.局域网、广域网 2.IP地址是什么? IP地址是标识主机在网络上的地址 IP地址是如何组成的? 点分十进制,将32位分为四个部分,每个部分一个字节&#xff…...

手写JavaScript中的call、bind、apply方法

手写JavaScript中的call、bind、apply方法 call方法 call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。 function Product(name, price) {this.name name;this.price price; }function Food(name, price) {Product.call(this, name, price);t…...

JAVA练习46-将有序数组转换为二叉搜索树

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 提示:这里可以添加本文要记录的大概内容: 2月10日练习内容 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目-…...

linux(centos7.6)docker

官方文档:https://docs.docker.com/engine/install/centos/1安装之前删除旧版本的docker2安装yum install-y yum-utils3配置yum源 不用官网的外国下载太慢 推荐阿里云yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.r…...

微信小程序滚动穿透问题

文章目录1、catchtouchmove"true"2、page-meta3、wx.setPageStyle做小程序的开发业务中,经常会使用弹窗,当弹窗里的内容过多时,要滚动查看,然后经常会遇到滚动弹窗,弹窗底下页面也跟着滚。解决思路&#xff…...

安全—06day

负载均衡反向代理下的webshell上传负载均衡负载均衡下webshell上传的四大难点难点一:需要在每一台节点的相同位置上传相同内容的webshell难点二:无法预测下一次请求是哪一台机器去执行难点三:当我们需要上传一些工具时,麻烦来了&a…...

PostgreSQL入门

PostgreSQL入门 简介 PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES, 版本 4.2为基础的对象关系型数据库管理系统(ORDBMS) 支持大部分SQL标准并且提供了许多现代特性 复杂查询外键触发器可更新视图事务完整性多版本并发控制 …...

自媒体人都在用的免费音效素材网站

视频剪辑、自媒体人必备的剪辑音效素材网站,免费下载,建议收藏! 1、菜鸟图库 音效素材下载_mp3音效大全 - 菜鸟图库 菜鸟图库是一个综合性素材网站,站内涵盖设计、图片、办公、视频、音效等素材。其中音效素材就有上千首&#xf…...

Java数据结构中二叉树的深度解析及常见OJ题

本篇文章讲述Java数据结构中关于二叉树相关知识及常见的二叉树OJ题做法讲解(包含非递归遍历二叉树) 目录 一、二叉树 1.1二叉树概念 1.2特殊的二叉树 1.3二叉树性质 1.4二叉树基本性质定理题 1.5二叉树遍历基本操作 1.6二叉树遍历的前中后非递归写法 1.7…...

告别重复造轮子:用快马AI一键生成高复用性imToken集成代码模块

告别重复造轮子:用快马AI一键生成高复用性imToken集成代码模块 开发涉及钱包集成的DApp时,最让人头疼的就是那些重复性的基础代码。每次新项目都要重新写一遍连接钱包、处理授权、监听网络切换的逻辑,不仅浪费时间,还容易引入安全…...

500+精选RSS源如何解决信息获取难题:Awesome RSS Feeds全解析

500精选RSS源如何解决信息获取难题:Awesome RSS Feeds全解析 【免费下载链接】awesome-rss-feeds Awesome RSS feeds - A curated list of RSS feeds (and OPML files) used in Recommended Feeds and local news sections of Plenary - an RSS reader, article dow…...

Qwen3.5-9B-AWQ-4bit多场景落地:零售货架图分析+缺货识别+SKU自动计数

Qwen3.5-9B-AWQ-4bit多场景落地:零售货架图分析缺货识别SKU自动计数 1. 零售场景中的视觉理解挑战 在零售行业,货架管理一直是运营效率的关键指标。传统的人工巡检方式存在几个明显痛点: 效率低下:一个中型超市需要2-3小时完成…...

2025.12晶晨S905L3S-L3SB安卓9通刷实战:当贝桌面加持,解锁多品牌盒子新玩法

1. 晶晨S905L3S-L3SB通刷包的前世今生 第一次听说晶晨S905L3S-L3SB芯片能通刷时,我正对着家里三台不同品牌的电视盒子发愁。这些盒子有的来自运营商赠送,有的是二手市场淘来的,虽然硬件配置相近,但系统体验天差地别。直到发现这个…...

Element UI表格样式改造避坑指南:透明化后文字看不清、边框错位怎么办?

Element UI表格透明化实战:解决文字模糊与样式错位的专业方案 当我们在Vue项目中采用Element UI的el-table组件实现透明化效果时,经常会遇到一些棘手的样式问题。本文将深入分析四个典型场景的成因,并提供经过实战检验的解决方案。 1. 透明背…...

【Python并发革命】:GIL解除后首个生产级无锁插件生态正式开放下载(限时72小时)

第一章:Python并发革命的里程碑意义 Python 并发模型的演进并非渐进式改良,而是一场深刻重塑编程范式的革命。从早期依赖线程与锁的阻塞式模型,到 asyncio 的异步 I/O 抽象、async/await 语法糖的引入,再到结构化并发(…...

Ostrakon-VL扫描终端部署:支持HTTPS与Basic Auth安全访问

Ostrakon-VL扫描终端部署:支持HTTPS与Basic Auth安全访问 1. 项目概述 Ostrakon-VL扫描终端是一款基于Ostrakon-VL-8B多模态大模型开发的Web交互应用,专为零售与餐饮行业场景优化设计。与传统工业级UI不同,该终端采用高饱和度的像素艺术风格…...

FlexRay帧格式拆解:从Header到Trailer,手把手教你读懂汽车总线的‘数据包’

FlexRay帧格式实战解析:像拆解网络包一样掌握汽车总线通信 在汽车电子系统开发中,理解总线协议就像网络工程师需要精通TCP/IP一样重要。FlexRay作为高性能车载网络的核心协议,其帧格式设计既体现了汽车电子对确定性的严苛要求,又融…...

usearch的内存泄漏自动化测试:在CI中集成泄漏检测

usearch的内存泄漏自动化测试:在CI中集成泄漏检测 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & 🔜 Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolf…...

让你的调试日志五彩斑斓:J-Link RTT高级封装技巧(支持中文、浮点数、十六进制)

让你的调试日志五彩斑斓:J-Link RTT高级封装技巧(支持中文、浮点数、十六进制) 调试是嵌入式开发中不可或缺的一环,而高效的调试工具能显著提升开发效率。J-Link RTT(Real Time Transfer)作为一种无需额外硬…...