软件测试学习笔记丨接口测试用例设计

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32078

一、简介

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

二、接口测试流程

三、接口测试的质量目标

功能测试:确保API按预期工作,正确处理所有输入,并返回正确的输出。

  • 策略:
    • 测试用例覆盖:编写全面的测试用例,覆盖所有API端口、请求类型(GET、POST、PUT、DELETE等),以及输入参数;
    • 边界值测试:测试边界值和特殊值(如空值、最大值、最小值等);
    • 异常处理:验证API在接收到无效输入,或异常情况下的响应。
  • 工具:
    • Postman、Fiddle、Charles

性能测试:确保API在各种负载下表现良好,响应时间满足要求,能处理高并发请求。

  • 策略:负载测试:模拟并发用户请求,检查API在高负载下的表现。
    • 压力测试:测试API的承受能力,找到系统的瓶颈。
    • 容量测试:确定系统能够处理的最大用户数量。
  • 工具:
    • JMeter、LoadRunner

安全测试:确保API免受常见的安全威胁,如SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)。

  • 策略:
    • 身份验证和授权:验证API的身份验证机制(如JWT、OAuth)和权限控制。
    • 输入验证:确保API对输入进行严格验证,防止注入攻击。
    • 安全漏洞扫描:使用工具扫描API的安全漏洞。
  • 工具:
    • OWASP ZAP、Burp Suite、Postman(用于身份验证测试)

兼容测试:确保API在不同环境(操作系统、浏览器、设备)下都能正常工作。

  • 策略:
    • 跨平台测试:在不同操作系统和浏览器上测试API。
    • 版本兼容性测试:验证API的不同版本之间的兼容性,确保新版本不破坏旧版本的功能。
  • 工具:
    • Postman、Selenium(用于模拟不同浏览器)

健壮性测试:确保API在意外情况(如网络中断、服务器崩溃)下能够优雅地恢复和处理错误。

  • 策略 :
    • 异常处理测试:模拟各种异常情况,检查API的错误处理和恢复能力。
    • 容错测试:测试API在部分系统组件失效时的表现。
  • 工具:
    • Postman、Chaos Monkey(用于模拟故障)

高可用性(中间件) :确保API在中间件(如消息队列、缓存、数据库)组件的支持下实现高可用性和可靠性。

  • 策略:
    • 冗余和故障转移测试:测试API在中间件组件故障时的故障转移机制。
    • 健康检查和监控:验证API的健康检查和监控机制,确保系统问题能够及时发现和解决。
    • 负载均衡测试:确保API在负载均衡下能够均匀分配请求,并处理节点故障。
    • 工具:Prometheus、Grafana(用于监控和健康检查)、HAProxy(用于负载均衡)

四、协议分析方法

  • 网络监听:
    • TcpDump
    • WireShark
  • 代理Proxy:
    • 推荐工具:手工测试Charles【全平台】、安全测试BurpSuite【全平台Java】
    • 自动化测试:mitmproxy

五、接口测试用例的设计方法

5.1 接口测试的思路

5.2 基本功能流程测试

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

5.3 基于输入域的测试

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

  • 边界值测试
    • 对于有范围要求的参数,需要综合等价类和边界值的方法设计测试用例
    • 边界值选中上点和离点即可,要覆盖到有效等价类和无效等价类。
  • 特殊字符校验
    • 对于很多请求参数会要求不能包含特殊字符,需要单独设计包含特殊字符的测试用例来做验证。
  • 参数类型校验
    • 有些参数对类型有要求,比如只能包含英文数字,或者只能包含整数类型等。对于这种对类型有要求的字段,要单独设计测试用例,尤其是一些反向用例。
  • 必选参数校验
    • 对于每一个必填的参数,都要设计一条不传的用例来验证。
  • 组合参数校验
    • 对于有选填参数的接口来说,需要对于各种参数的不同组合场景来进行验证。比如只传必填参数,或者必填参数和不同数量的选填参数组合,可以使用判定表法进行设计。
  • 排重逻辑
    • 如果字段要求不能重复,就要进行排重逻辑的覆盖,验证重复请求相同的参数,服务端的处理逻辑是否正确。
  • 接口幂等性
    • 幂等性是指任意多次执行所产生的影响,均与第一次执行的影响相同。
    • 保证接口的幂等性是非常重要的,尤其是在涉及资金的系统,如银行、电商等。
    • 如用户重复提交请求,或者网络重发、系统重试等,都需要设计测试用例来保证接口的幂等性。
    • 接口的幂等测试,需要多次发送同一参数的请求,查看服务端响应是否只有一次是成功的。

5.4 线程安全测试

  • 线程安全测试包含了并发测试、分布式测试。
  • 分布式更多的一个概念,是为了解决单个物理服务器容量,和性能瓶颈问题而采用的优化手段。
  • 分布式的两种实现形式:
    • 水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务。
    • 垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求,分发到不同的机器上。
  • 相对于分布式来讲,高并发在解决的问题上会集中一些,它的重点是测试同时有多少量,比如在线直播同时有上万人观看。
  • 高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化手段,比如使用缓存系统,还可以使用多线程技术,将一台服务器的服务能力最大化。
  • 对于并发场景,需要测试多个相同参数的请求,只有一条请求成功,其他请求失败。
  • 对于分布式测试,则需要测试在分布式环境中,并发相同参数的请求,只有一条请求成功,其他请求失败。

5.5 故障注入

  • 故障注入测试,需要测试人员故意制造故障的场景,来保证系统的健壮性。
  • 如果产品中用到了Redis,就需要对于Redis做一些故障降级测试。Redis一般会放在数据库前面,用来做高速缓存。
    • Redis故障注入,需要开发配合清空Redis数据、发请求、击穿Redis,从DB中获取正常的数据,并能回写到Redis中。
    • 然后开发配合启动Redis数据恢复功能,测试可以从Redis中获取正确的数据。
    • 还需要开发配合制造Redis崩溃场景,发请求,测试是否降级从DB中获取到正常的数据。
  • 除了Redis,还需要进行服务故障转移测试。比如数据库故障测试,接口故障测试。
    • 数据库故障测试:
      • 开发配合制造数据库数据丢失的场景,启动数据恢复策略,测试规定时间段内数据是否可以恢复;
      • 开发配合制造数据库崩溃的场景,测试数据库多活策略是否启动,保证功能不受影响。
    • 接口故障测试:
      • 开发配合接口服务重启,测试集群负载是否自动重启实例,所有请求无异常;
      • 开发配合制造集群崩溃场景,测试是否返回对应的错误信息,内部服务是否有重试机制。

5.2 接口测试用例要素

  • 模块
  • 测试标题
  • 优先级
  • 前置条件
  • URL
  • 请求方法
  • 请求参数
  • 预期结果
  • 实际结果

在这里插入图片描述

推荐学习

【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)

【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试

【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff

【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享

【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装

【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?

【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!

【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我

【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化

【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试

【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !

【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置

【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)


http://www.ppmy.cn/server/116041.html

相关文章

第九届“创客中国”生成式人工智能(AIGC)中小企业创新创业大赛圆满落幕

9月5日,第九届“创客中国”生成式人工智能(AIGC)中小企业创新创业大赛在南昌降下了帷幕。工业和信息化部网络安全产业发展中心(工业和信息化部信息中心)主任付京波;江西省工业和信息化厅党组成员、副厅长郭启东;南昌市委常委、市委秘书长、办公室主任赵捷;市中小企业局党组书记…

英飞凌motor电机方案

电机主流方案的应用场景,一个是家电,一个是汽车,尤其是新能源汽车。 多家MCU厂商也都推出自己电机解决方案,比如华大电子: HC32M140 系列产品为华大半导体研制的 32bit 基于 ARM-Cortex M0+ 的 MCU,与传统的 CPU 内核相比,效率更高,功耗更低。更宽的工作电压范围,可同…

Linux 之 Nginx 下载/安装

下载 下载地址 nginx: download 安装 在线安装 配置新的yum源 # 切换到yum源目录 cd /etc/yum.repos.d/# 创建yum源文件 touch nginx.repo# 配置nginx.repo文件内容 vim nginx.reponginx.repo 文件内容 namenginx repo baseurlhttp://nginx.org/packages/centos/$releas…

什么是大数据、有什么用以及学习内容

目录 1.什么是大数据? 2.大数据有什么用? 2.1商业与营销: 2.2医疗与健康: 2.3金融服务: 2.4政府与公共服务: 2.5交通与物流: 2.6教育与个性化学习: 3.学习大数据需要学习哪…

军事目标无人机视角检测数据集 3500张 坦克 带标注voc

数据集概述 该数据集包含3500张无人机拍摄的图像,主要用于坦克目标的检测。数据集已经按照VOC(Visual Object Classes)标准进行了标注,适用于训练深度学习模型,特别是物体检测模型。 数据集特点 目标明确&#xff1…

鸿蒙轻内核M核源码分析系列十七(2) 异常钩子函数的注册操作

鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 轻内核M核源码分析系列一 数据结构-双向循环链表 轻内核M核源码分析系列二 数据结构-任务就绪队列 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表 轻内核M核源码分析系列四 中断…

H5依赖安装

依赖安装 git和sourceTree编辑器使用vscode下载nvm 和nodejs git和sourceTree 使用 ssh-keygen -t rsa 进行密钥获取 git下载地址:https://git-scm.com/ sourceTree下载地址:https://www.sourcetreeapp.com/ 编辑器使用vscode 最新版网址:…

大厂校招:星宸科技嵌入式面试及参考答案(5万字长文)

bootloader 具体做了些什么 Bootloader 是在操作系统内核运行之前运行的一段小程序。它主要负责以下几个重要任务: 硬件初始化 Bootloader 首先会对硬件设备进行初始化,包括处理器、内存、中断控制器等关键部件。例如,设置处理器的工作模式、…

ORB-SLAM2关键点总结

1.ORB-SLAM2的总体框架是怎样的 ORB-SLAM2一共有三个线程,分别是Tracking、Local Mapping、Loop Closing线程,,其中Tracking负责完成关键点提取,并进行帧间匹配,同时初步选取关键帧;Local Mapping线程主要…

队列的基本概念及顺序实现

队列的基本概念 队列的定义 ​ 队列(Queue)简称队,也是一宗操作受限的线性表,只允许在表的一段进行插入,而在表的另一端进行删除。向队列中插入元素成为入队或进队;删除元素成为出队或离队。 ​ 特性:先进先出 (Fir…

大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

ISAC: Toward Dual-Functional Wireless Networks for 6G and Beyond【论文阅读笔记】

此系列是本人阅读论文过程中的简单笔记,比较随意且具有严重的偏向性(偏向自己研究方向和感兴趣的),随缘分享,共同进步~ Integrated Sensing and Communications: Toward Dual-Functional Wireless Networks for 6G and…

C++那些事之精选68道面试题

有小伙伴问我要一些C的学习题目/面试题目,我这里总结了一下分享给大家,大家可以自行去回答下面的问题,看看可以解答多少个。 注:懒人版附代码与答案会在文末星球详细讲解。 大纲 基础概念面向对象编程STL(标准模板库&a…

医护人员排班系统:Spring Boot技术的应用策略

3系统分析 3.1可行性分析 通过对本医护人员排班系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本医护人员排班系统采用Spring Boot框架,JAVA作…

Go跨平台Wails框架入门教程

前言 Go跨平台Wails UI应用框架是一个强大的工具,它允许开发者利用Go语言的性能优势和Web技术的灵活性来构建跨平台的桌面应用程序。以下是一个详细的Wails应用框架应用教程及相关示例的概述。 一、Wails简介 Wails是一个开源项目,旨在让开发者能够使…

解决el-date-picker切换类型type时错位

vue代码如下 样式效果如下 切换日期类型时,立马点日期会出现错位,检查发现是日期的展开面板并没有插入到body中导致的错位 解决方法 给el-date-picker加上唯一key值就可以

【4.2】图搜索算法-DFS和BFS解单词拆分

一、题目 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分 为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s "le…

js部分面试题

}else{ obj.style[attr]value } } 15.事件委托是什么? 事件委托(event delegation):利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行! 解释:使用事件委托技术能让你避免对特定的每个节点添加事件…

计算机网络 第二章: 物理层_编码与调制 (带习题)

文章目录 1. 编码与调制的基本概念2. 常用编码方式2.1 双极性不归零编码(编码效率高,但存在同步问题)2.2 双极性归零编码(自同步,但编码效率低)2.3 曼彻斯特编码(自同步,10Mb/s传统以…

[翻译] Vue 3.5 发布

翻译自 vue 官方博客 地址:https://blog.vuejs.org/posts/vue-3-5 今天,我们很高兴地宣布 Vue 3.5 “Tengen Toppa Gurren Lagann” 发布! 此次要版本不包含任何重大更改,并且包括内部改进和有用的新功能。我们将在这篇博文中介绍…