接口测试用例设计的关键步骤与技巧解析!

简介

接口测试在需求分析完成之后,即可设计对应的接口测试用例,然后根据用例进行接口测试。接口测试用例的设计也需要用到黑盒测试用例设计方法,和测试流程与理论章节的功能测试用例设计的方法类似,设计过程中还需要增加与接口特性相关的测试用例。

图片

接口测试的质量目标

  • 功能

  • 性能

  • 安全

  • 兼容

  • 健壮性

  • 高可用性(中间件)

协议分析方法

  • TcpDump

  • WireShark

  • 推荐工具:手工测试 Charles [全平台]、安全测试 BurpSuite [全平台 Java]

  • 自动化测试:mitmproxy

  • 其他代理:Fiddler [仅 Windows]、AnyProxy [全平台]

  • 网络监听

  • 代理 Proxy

接口测试用例的设计方法

正式设计接口测试用例之前,需要梳理一下接口测试的思路:

图片

基本功能流程测试

在基本功能流程测试方面,首先需要先执行冒烟测试,把最基本的功能流程走通。冒烟测试决定提测是否成功,如果通过冒烟测试,才会进入到详细的测试阶段。如果冒烟测试不通过,需要打回给开发,开发修改之后重新提测。冒烟测试通过之后,进行正常流程覆盖测试,粒度会比冒烟测试更细一些,覆盖一些分支业务逻辑。

基于输入域的测试

因为发出接口请求需要携带请求参数,所以肯定会涉及到关于请求参数的各种用例的设计。

关于请求参数的用例设计可以考虑下面这些方面

  • 边界值测试

对于有范围要求的参数,需要综合等价类和边界值的方法设计测试用例。边界值选择上点和离点即可,要覆盖到有效等价类和无效等价类。

  • 特殊字符校验

对于很多请求参数会要求不能包含特殊字符,对于有这类要求的字段,需要单独设计包含特殊字符的测试用例来做验证。

  • 参数类型校验

有一些参数还会对于传参值的类型有要求,比如只能包含英文数字,或者只能包含整数类型等。对于这种对类型有要求的字段,也要单独设计测试用例,设计一些反向用例来做验证。

  • 必选参数校验

在接口中有必填的参数,也有选填的参数。对于每一个必填参数,都要设计一条不传的用例来验证必填性。

  • 组合参数校验

对于有选填参数的接口来说,需要对于各种参数的不同组合场景进行验证。比如只传必填参数,或者必填参数和不同数量的选填参数做组合的场景,可以使用判定表的方法进行设计。

  • 排重逻辑

如果有的字段要求不能重复,那么需要对它进行排重逻辑的覆盖,看看重复请求相同的参数,服务端的处理逻辑是不是正确。

  • 接口幂等性

幂等是指任意多次执行所产生的影响均与一次执行的影响相同。保证接口的幂等性是非常重要的,尤其是在涉及资金的系统,比如银行、电商系统等。

例如用户重复提交请求,或者网络重发,系统重试等场景,都需要设计测试用例来保证接口的幂等性。接口的幂等测试,需要多次发送同一参数的请求,查看服务端响应是否只有一次是成功的。

线程安全测试

线程安全测试包含了并发测试、分布式测试。分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。

分布式的实现有两种形式:

  • 水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务。

  • 垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上。

相对于分布式来讲,高并发在解决的问题上会集中一些,它的重点是测试同时有多少量,比如在线直播服务同时有上万人观看。

高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化手段,比如使用缓存系统,还可以使用多线程技术将一台服务器的服务能力最大化。

对于并发场景,需要测试多个相同参数的请求,只有一条请求成功,其他请求失败。

对于分布式测试,则需要测试在分布式环境中并发相同参数的请求,只有一条请求成功,其他请求失败。

故障注入

故障注入测试需要测试人员故意制造故障的场景,来保证系统的健壮性。

如果产品中用到了 Redis,就需要对于 Redis 做一些故障降级测试。Redis 一般会放在数据库前面,用来做高速缓存。

Redis 故障注入需要开发配合清空 Redis 数据,发请求,击穿 Redis,从 DB 中获取正常的数据,并能回写到 Redis 中。然后开发配合启动 Redis 数据恢复功能,测试可以从 Redis 中获取正确的数据。还需要开发配合制造 Redis 崩溃场景,发请求,测试是否降级从 DB 中获取到正常的数据。

除了 Redis 之外,还需要进行服务故障转移测试。比如数据库故障测试与接口故障测试。

  • 数据库故障测试

开发配合制造数据库数据丢失场景,启动数据恢复策略,测试规定时间段内数据是否可以恢复;开发配合制造数据库崩溃场景,测试数据库多活策略是否启动,保证功能不受影响。

  • 接口故障测试

开发配合接口服务重启,测试集群负载是否自动重启实例,所有请求无异常;开发配合制造集群崩溃场景,测试是否返回对应的错误信息,内部服务是否有重试机制。

接口测试用例要素

  • 模块

  • 测试标题

  • 优先级

  • 前置条件

  • 请求方法

  • 请求参数

  • 预期结果

  • 实际结果

图片

总结

  • 接口测试的质量目标

  • 协议分析方法

  • 接口测试用例设计思路

  • 接口测试用例要素

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

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

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

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

相关文章

【数据集】【YOLO】【目标检测】树木倒塌识别数据集 9957 张,YOLO道路树木断裂识别算法实战训练教程!

一、数据集介绍 【数据集】树木倒塌识别数据集 9957 张,目标检测,包含YOLO/VOC格式标注。 数据集中包含1种分类:{0: fallen_tree},代表倒塌或者断裂的树木。 数据集来自国内外图片网站和视频截图; 可用于无人机树木…

[极客大挑战 2019]PHP 1

[极客大挑战 2019]PHP 1 审题 猜测备份在www.zip中,输入下载文件。 知识点 反序列化 解题 查看代码 看到index.php中包含了class.php,直接看class.php中的代码 查看条件 当usernameadmin,password100时输出flag 构造反序列化 输入select中&#…

初识机器学习

目录 什么是机器学习? 机器学习的基本过程: 监督学习 监督学习的工作原理 监督学习的应用 监督学习的优缺点 总结 非监督学习 非监督学习的工作原理 非监督学习的应用 非监督学习的优缺点 总结 什么是机器学习? 机器学习&#xf…

网络层5——IPV6

目录 一、IPv6 vs IPv4 1、对IPv6主要变化 2、IPv4 vs IPv6 二、IPv6基本首部 1、版本——4位 2、通信量类——8位 3、流标号——20位 4、有效载荷长度——16位 5、下一个首部——8位 6、跳数限制——8位 7、源 、 目的地址——128位 8、扩展首部 三、IPv6地址 1…

一篇文章让你明白Go语言之切片的概念和用法

Go语言的切片(slice)是一个灵活且强大的数据结构。相比数组,切片的长度可以动态变化,更适合用于处理动态数据。切片是基于数组构建的抽象,为开发者提供了更高效的内存管理和数据操作手段。 一、切片的概念和结构 切片…

css background-image背景图片轮播

1、CSS背景样式有以下几种: 背景颜色(background-color):设置元素的背景颜色。背景图片(background-image):设置元素的背景图片。背景重复(background-repeat)&#xff…

第八篇: 通过使用Google BigQuery进行数据批量和自动化处理

使用Python进行Google BigQuery数据批量和自动化处理 在大数据分析的日常工作中,定期更新、查询和处理数据是一项必不可少的任务。Google BigQuery结合Python脚本,可大幅简化这一过程。本文将介绍如何通过Python自动查询和更新BigQuery中的降水量数据&a…

WPF+MVVM案例实战与特效(二十八)- 自定义WPF ComboBox样式:打造个性化下拉菜单

文章目录 1. 引言案例效果3. ComboBox 基础4. 自定义 ComboBox 样式4.1 定义 ComboBox 样式4.2 定义 ComboBoxItem 样式4.3 定义 ToggleButton 样式4.4 定义 Popup 样式5. 示例代码6. 结论1. 引言 在WPF应用程序中,ComboBox控件是一个常用的输入控件,用于从多个选项中选择一…

7.《双指针篇》---⑦三数之和(中等偏难)

题目传送门 方法一:双指针 1.新建一个顺序表用来返回结果。并排序数组。 2.for循环 i 从第一个数组元素遍历到倒数第三个数。 3.如果遍历过程中有值大于0的则break; 4.定义左右指针,以及target。int left i 1, right n - 1; int target -nums[i];…

Linux的Shell脚本1

shell启动流程 脚本启动时的home配置文件Linux是: 登录 shell 会话的启动文件 文件 内容 /etc/profile 应用于所有用户的全局配置脚本。 ~/.bash_profile 用户私人的启动文件。可以用来扩展或重写全局配置脚本中的设置。 ~/.bash_login 如果文件 ~/.bash_profi…

k8s 处理namespace删除一直处于Terminating —— 筑梦之路

问题现象 k8s集群要清理某个名空间,把该名空间下的资源全部删除后,删除名空间,一直处于Terminating状态,无法完全清理掉。 如何处理 为什么要记录下这个处理的步骤,经过查询资料,网上也有各种各样的方法&…

Spring Boot应用开发:从入门到精通

Spring Boot应用开发:从入门到精通 Spring Boot是Spring框架的一个子项目,旨在简化Spring应用的初始搭建和开发过程。通过自动配置和约定大于配置的原则,Spring Boot使开发者能够快速构建独立的、生产级别的Spring应用。本文将深入探讨Sprin…

CSS实现文字渐变效果

效果图: 代码: h1 {font-size: 100px;color:linear-gradient(gold,deeppink);background-image:linear-gradient( -gold, deeppink); /*春意盎然*///背景被裁剪成文字的前景色。background-clip:text;/*兼容内核版本较低的浏览器*/-webkit-background-c…

ai外呼机器人的作用有哪些?

ai外呼机器人具有极高的工作效率。日拨打成千上万通不是问题,同时,机器人还可以快速筛选潜在客户,将更多精力集中在有价值的客户身上,进一步提升营销效果。183-3601-7550 ai外呼机器人的作用: 1、搭建系统&#xff0c…

【LeetCode】【算法】236. 二叉树最近公共祖先

LeetCode 236. 二叉树最近公共祖先 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 思路 思路:后序遍历(左右中),如果在左/右侧树上找到了该节点则返回对应节点,其公共节点就为中,否…

大厂面试真题-说说redis的分片方式

Redis的分片机制是其实现数据分布式存储和处理的关键,它允许将数据拆分存放在不同的Redis实例上,每个Redis实例只包含所有键的子集,从而提高了系统的性能和可扩展性。以下是Redis常用的分片方式: 一、按照范围分片 这种方式相对…

DOM操作和事件监听综合练习——轮播图

下面制作一个如下图所示的轮播图&#xff08;按Enter键可以控制轮播的开启和关闭&#xff0c;或者点击按钮“第几张”即可跳转到第几张&#xff09;&#xff1a; 下面是其HTML和CSS代码&#xff08;还没有设置轮播&#xff09;&#xff1a; <!DOCTYPE html> <html …

[全网最细数据结构完整版]第七篇:3分钟带你吃透队列

目录 1->队列的概念及结构 2->队列的实现 2.1定义队列基本结构 struct QueueNode 和 struct Queue 2.2队列初始化函数 QueueInit 函数 2.3队列销毁函数 QueueDestroy 函数 2.4队列插入数据函数 QueuePush 函数 2.5判断队列是否为空,空返回true,非空返回false 2.6队列删…

力扣动态规划基础版(矩阵型)

62.不同路径&#xff08;唯一路径问题&#xff09; 62. 不同路径https://leetcode.cn/problems/unique-paths/ 方法一&#xff1a;动态规划 找状态转移方程&#xff0c;也就是说它从左上角走到右下角&#xff0c;只能往右或者往下走&#xff0c;那么设置一个位置为&#xff…

Hive 实现查询用户连续三天登录记录

标题&#xff1a;Hive 实现查询用户连续三天登录记录 在数据分析和处理中&#xff0c;经常会遇到需要查询特定条件数据的情况。本文将介绍如何使用 Hive 来查询用户连续三天登录的所有数据记录。 一、问题背景 我们有一个用户登录记录表&#xff0c;其中包含用户的登录日期信…