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

news2024/9/21 0:43:33

本文转自测试人社区,原文链接: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.coloradmin.cn/o/2118366.html

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

相关文章

​数据链路层——流量控制可靠传输机制 ​

https://www.cnblogs.com/nekodream/p/18048072 数据链路层的流量控制 较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。 数据链路层流量控制…

UEFI——Variable的使用

一、Variable简介 Variable Services是Runtime Services的一部分,提供关于variable的一些服务,Variable被定义为键值对,由标识信息加上属性(键)和任意数据(值)组成。用在固件部内部和固件与操作…

JAVA工具----自动化API文档APIFOX

前言:想必大家在后端开发的过程过,最烦的就是写接口文档了。然而如果是对接前写,就更加烦躁,可能之前写好的接口文档全都要改,还会占用大量的时间,一般的小团队也耗不起这样的费时。那么使用Swagger和侵入式…

如何查询小红书、抖音等多平台品牌声量数据?

现在很多企业都需要掌握小红书、抖音、公众号、微博等各个社媒平台上,企业品牌声量趋势情况,行业内容占有率如何,搜索指数高低等等,借此来判断企业的品牌影响力、行业地位以及最近的活动/事件等营销效果。那么跨平台查询是比较麻烦…

一篇清楚的明白什么是场外个股期权?

今天带你了解一篇清楚的明白什么是场外个股期权?场外个股期权是一种非标准化的期权合约,在金融机构和投资者之间定制进行。它具有更大的灵活性,但也伴随着较高的信用风险和复杂性。适用于对冲风险、增强收益和设计结构性产品等多种策略。 场…

提取音频转mp3的工具哪个好?这六个新手必备

各位音乐爱好者们!是不是有时候你会听到一首歌,觉得它的中间伴奏简直太棒了,想要把它单独提取出来,却发现无从下手呢? 别担心,现在有了提取音频在线工具,这些难题都能迎刃而解。下面&#xff0…

Jmeter_循环获取请求接口的字段,并写入文件

通过JSON提取器、计数器、beanshell,循环读取邮箱接口的返回字段,筛选出flag为3的收件人,并写入csv文件。 1、调用接口,获取所有的邮件$.data.total.count; 2、beanshell后置处理total转换成页码,这里是227…

STM32 HAL freertos零基础(二)-通过STM32CubeMX配置Freertos后在程序中进行任务创建,便于任务管理与识别。

1、简介 通过STM32CubeMX配置Freertos后,建立的任务都在freertos.c文件中,不易于观察,并且每次生成新任务还需要打开STM32CubeMX,本次教程讲解一种通过STM32CubeMX配置Freertos后在程序中进行任务创建,起到类似添加传…

官宣:28家重点实验室,获5750万元资金支持!

【欧亚科睿学术】 点击关注:关注GZH【欧亚科睿学术】,第一时间了解科研最新动态! 根据省级财政专项资金管理办法有关规定,拟安排2024年省重点实验室28项,拟安排省财政资金5750万元。现予以公示: 本文来源…

企业如何治理“两高一弱”?

攻防演练已经落幕,“两高一弱”专项整治依旧如火如荼。针对高危端口、高危漏洞和弱口令这三大网络环境中最常见的关键安全挑战,公安机关及各行业主管部门高度重视,要求各级组织及时发现并消除网络和信息系统“两高一弱”问题,实现…

照片删除了怎么恢复回来?要学会这些数据恢复方法

在数字化时代,照片已经成为我们记录生活、珍藏回忆的重要载体。然而,有时由于误操作或其他原因,我们可能会不小心删除了重要的照片。面对这种情况,很多人会感到焦虑和无助。幸运的是,有多种方法可以帮助我们恢复删除的…

一次性了解Neo4j图形数据库

Neo4j高性能的NoSQL图形数据库 它将结构化数据存储在网络(从数学角度叫做图)上而不是传统的表格中。 Neo4j是一个嵌入式的、基于磁盘的、具备完全事务特性的Java持久化引擎。 但它在数据表示上采用了图形模型,即数据以节点(Nod…

Facebook与区块链的结合:推动社交平台的去中心化

随着区块链技术的崛起,全球各大科技公司纷纷探索其应用潜力。Facebook作为全球领先的社交媒体平台,也在区块链领域中迈出了关键一步,试图通过去中心化技术来提升用户体验并应对传统社交平台所面临的挑战。本文将探讨Facebook与区块链结合的潜…

vue elementUI更改Checkbox 多选框禁用状态下文本颜色

最近在做vue项目中,根据需求要改变CheckBox禁用状态下的文本颜色,原因是默认的文本颜色太浅,要自定义颜色 找了半天终于解决问题 记录一下 话不多说,上代码 希望能够帮到你~ 点赞加关注,下次再找不迷路~~~~

儿童自闭症康复:找到孩子的微小进步,看见希望

星贝育园的康复之旅 在自闭症儿童康复的漫长道路上,每一个微小的进步都是家长心中的巨大希望之光。星贝育园,作为全国领先的自闭症康复机构,以其独特的教育理念、专业的师资团队和显著的康复效果,为无数家庭带来了希望和改变。 …

ICC2:对指定信号线设置ndr rule

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接:

从程序员到外卖员,再到AI绘画大佬:我的逆袭之路

一、行业之卷,失业之痛 大家好,我是一名初代程序员。曾几何时,我也在互联网行业的光环下,享受着高薪和尊敬。然而,随着行业竞争加剧,就业环境变得越来越差,我最终没能逃脱被大厂裁员的命运。 …

[STM32]从零开始的STM32串口使用教程(小白向)

一、我们为什么需要串口? 在嵌入式通信中,我们常常把像SPI,USART,I2C这些 串行通信接口,统称为串口。但是在我们的日常使用中,我们说的串口通常是指的USART接口。下面我们就来了解USART接口,USA…

在 RT-Thread 上使用单色屏 UI 库 - U8G2

U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,并支持如SSD1306等多种类型的OLED驱动。 U8g2的官方开源地址为:https://github.com/olikraus/u8g2 由于官方已经对 RT-Thread 做了一定的适配,并且存在于 RT-Thread 的软件包…

用Python实现时间序列模型实战——Day 15: 时间序列模型的选择与组合

一、学习内容 1. 模型选择的标准与方法(如 AIC、BIC) 在时间序列建模中,模型的选择是非常重要的,常用的模型选择标准包括 AIC (Akaike Information Criterion) 和 BIC (Bayesian Information Criterion)。 AIC (Akaike Informat…