自学接口测试系列 —— 自动化测试用例设计基础!

news2024/11/25 4:56:13

一、接口测试思路总结

❓首先我们在进行接口测试设计前思考一个问题:接口测试,测试的是什么?

❗我们必须要知道,接口测试的本质:是根据接口的参数,设计输入数据,验证接口的返回值。

那么接口测试的范围就包括:围绕参数进行用例的设计----->准备各种各样的数据,对接口的返回值进行验证。

动图

接口测试用例的设计思路涵盖了许多方面,旨在确保测试覆盖面广泛、详尽和有效。以下是我总结出来的一些接口测试用例设计思路:

  1. 正向测试

- 针对接口的正常使用情况编写测试用例,验证它是否按照预期工作。这包括测试各种请求和参数的组合,以确保接口返回正确的结果。

  1. 边界值测试

- 测试接口的边界条件,包括最小和最大值、边界值和特殊字符。这有助于发现潜在的边界错误。

  1. 异常测试

- 针对接口可能遇到的异常情况编写测试用例,包括无效参数、错误请求方法、权限不足等。

  1. 鉴权和授权测试

- 验证接口的鉴权和授权机制是否正常工作,包括测试不同角色的访问权限。

  1. 性能测试

- 编写性能测试用例,测试接口的响应时间、吞吐量和稳定性。这包括模拟不同负载下的请求。

  1. 数据一致性测试

- 测试接口的数据一致性,包括数据的创建、读取、更新和删除操作。确保数据在接口操作后保持一致性。

  1. 数据验证测试

- 验证接口的响应数据是否与预期的数据一致。这包括字段验证、数据类型验证和数据格式验证。

  1. 并发测试

- 测试接口的并发性,包括多个并发请求对接口的影响。确保接口在并发条件下稳定工作。

  1. 安全性测试

- 测试接口的安全性,包括检查是否存在安全漏洞,如SQL注入、跨站点脚本(XSS)等。

  1. 跨域请求测试

- 验证接口是否能够正确处理跨域请求,确保它在不同域之间的通信正常工作。

  1. 回归测试

- 编写回归测试用例,以确保接口在代码更改后仍然按照预期工作。

  1. 异常处理测试

- 测试接口对于错误情况的处理方式,包括检查错误消息、状态码和错误日志。

  1. 性能优化测试

- 测试接口的性能,识别性能瓶颈,并提供性能优化建议。

  1. 缓存测试

- 如果接口使用了缓存,测试缓存的命中率和有效性。

  1. 文档一致性测试

- 检查接口文档与实际接口行为之间的一致性,确保文档准确反映了接口的功能和参数。

  1. 随机测试

- 随机生成请求参数,测试接口的稳定性和容错性。

  1. 复杂场景测试

- 测试接口在复杂场景下的行为,包括多步骤操作、嵌套请求等。

  1. 安全漏洞测试

- 针对常见的安全漏洞进行测试,如跨站点脚本(XSS)、跨站请求伪造(CSRF)等。

这些是设计接口测试用例时可以考虑的不同方面和思路。具体的测试用例设计将根据项目的需求、接口的复杂性和风险因素而有所不同。

那么作为新手刚开始一定需要掌握的常见思路是以下几点:

  • 正确的值
  • 错误的值
  • 异常的值
  • 边界的值
  • 根据场景设计的值
  • ......

即黑盒测试用例设计方法but要尽量根据接口产生画面感。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

二、接口自动化测试用例设计要点

❗尽量让人和代码都能够看懂且用得上

❗但是,很多时候我们做不到那就只能分开

(一)设计要点

目标明确:明确测试的目标和预期结果。断言:编写明确的断言来验证接口的响应是否符合预期。
测试覆盖:确保测试用例覆盖了接口的各种功能、参数和边界情况。异常处理:测试接口对于无效输入和错误情况的处理方式,包括检查错误消息和状态码。
数据驱动:考虑使用不同的数据集来测试接口,以确保数据的多样性和完整性。性能测试:如果适用,包括性能测试用例,以测试接口的响应时间、吞吐量和稳定性。
可维护性:编写易于维护的测试用例,使用模块化、可重用的代码和参数化测试数据。报告和日志:生成详细的测试报告,记录测试结果、问题报告和性能数据。此外,考虑生成日志以帮助故障排除。
清晰的命名:使用清晰、有意义的命名来描述测试用例,以便于理解和维护。并发和并行测试:如果需要,编写测试用例来测试接口在并发和并行条件下的行为。
预处理和后处理:在测试用例中考虑预处理和后处理步骤,以确保测试环境的准备和清理。

 

(二)实施前提

API文档:必须有可用的API文档,包括接口端点、请求参数、响应格式、鉴权机制等信息。版本控制:最好将测试用例存储在版本控制系统中,以便跟踪和管理更改。
开发环境:需要可用的开发环境或测试环境,以便执行自动化测试。自动化测试框架:如果需要,可以使用测试框架(如TestNG、JUnit、pytest等)来组织和运行测试用例。
自动化测试工具:您需要选择合适的自动化测试工具,例如Postman、RestAssured、Requests库(Python)等。团队协作:与开发团队和其他相关团队成员合作,以确保测试用例的准确性和及时性。
测试数据:需要准备测试数据,包括有效数据、无效数据和边界数据,以覆盖各种情况。持续集成/持续交付(CI/CD):将自动化接口测试集成到CI/CD流程中,以便在每次代码更改后自动运行测试。
测试环境配置:确保测试环境已正确配置,包括鉴权凭证、访问权限等。监控和报警:建立监控和警报机制,以便在生产环境中检测和响应问题。

 

(三)接口自动化测试用例字段设计

以下是一份较为完善的接口自动化测试用例模板字段:

字段名称描述示例值或说明
用例名称测试用例的名称测试创建用户
用例编号唯一标识符或编号TC001
用例描述测试用例的详细描述测试创建新用户的正常情况。
请求方法HTTP请求方法POST
接口端点要测试的接口的URLhttps://api.example.com/users
请求头部请求中的HTTP头部{"Content-Type": "application/json"}
请求体请求的主体数据(JSON/XML等格式){"name": "John", "email": "john@example.com"}
请求参数请求中的查询参数和路径参数{"id": "12345", "status": "active"}
前提条件测试执行前需要满足的条件用户已登录
测试步骤执行测试用例的具体步骤1. 发送POST请求<br>2. 验证响应状态码<br>3. 验证响应体
预期结果每个步骤的预期结果1. 响应状态码为201<br>2. 响应体包含用户ID
断言用于验证响应的断言语句- 验证状态码是否等于201<br>- 验证响应体中是否包含用户ID
环境变量用于存储和引用环境数据的变量- 用户令牌,用于授权访问
相关链接与测试用例相关的链接或文档- API文档链接
优先级测试用例的优先级
作者编写测试用例的人员姓名或用户名JohnDoe
标签用于分类和检索测试用例的标签功能、创建用户、API

三、接口自动化测试用例书写

  1. 项目实战测试案例

以下是针对项目编写的接口测试用例:

用例编号用例标题请求接口类别请求地址输入数据(分字段)数据格式请求方式是否需要登录期望结果
login-01正确的登录登录/loginWithJwt{"userName":"imooc","password":"12345678"}paramsget010000
login-02错误的登录登录/loginWithJwt{"userName":"imooc","password":"123456789"}jsonget010006
product-01获取商品列表商品列表/product/list00get010000
cart-01添加商品到购物车购物车/cart/list{"count":1,productId":3}formpost110000
cart-02获取购物车列表购物车/cart/list00get110000
cart-03添加错误商品到购物车购物车/cart/list{"count":1,productId":3000}formpost110016
  1. 常见数据结构汇总

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

软件测试面试文档

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

在这里插入图片描述

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

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

相关文章

Fast DDS之Transport

目录 transport层负责为DDS用户数据收发和服务发现提供通信。包含UDP&#xff0c;TCP&#xff0c;SHM。

Python——— 模块

&#xff08;一&#xff09;模块化(module)程序设计理念 模块和包概念的进化史 模块和包概念的进化史 ① Python程序由模块组成。一个模块对应 python 源文件&#xff0c;一般后缀名是&#xff1a; .py ② 模块由语句组成。运行Python 程序时&#xff0c;按照模块中语句的顺…

手把手教你编写LoadRunner脚本

编写 LoadRunner 脚本需要熟悉脚本语言、业务场景、参数化技术、断言和事务等基础知识。 在实际编写时&#xff0c;可以根据具体测试需求&#xff0c;结合实际情况进行合理的配置和调整。 基本步骤 创建脚本 在 LoadRunner 的 Controller 模块中&#xff0c;创建一个新的测试…

详解TCP三次握手(建立连接)和四次握手(释放连接)

TCP是是一个面向连接的协议&#xff0c;无论哪一方发送数据之前&#xff0c;都必须在双方之间建立一条连接。 一、建立连接 建立TCP连接时&#xff0c;要经历这样的流程&#xff1a; ① 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口&#xff0c;以及初始…

基于微信小程序的个人健康数据管理平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Unity可视化Shader工具ASE介绍——2、ASE的Shader创建和输入输出

大家好&#xff0c;我是阿赵&#xff0c;这里继续介绍Unity可视化写Shader的ASE插件的用法。上一篇介绍了ASE的安装和编辑器界面分布&#xff0c;这一篇主要是通过一个简单的例子介绍shader的创建和输入输出。 一、ASE的Shader创建 这里先选择Surface类型的Shader&#xff0c;…

Git 学习笔记 | 版本控制和版本控制工具

Git 学习笔记 | 版本控制和版本控制工具 Git 学习笔记 | 版本控制和版本控制工具什么是版本控制&#xff1f;版本管理工具的特性版本管理工具的发展简史主流的版本控制器本地版本控制集中版本控制分布式版本控制 Git与SVN的主要区别 Git 学习笔记 | 版本控制和版本控制工具 学…

孕期能吃韭黄吗?坐月子和哺乳期能吃韭黄吗?宝宝能不能吃韭黄?

韭黄又称韭芽、黄韭、韭菜白。韭菜隔绝光线&#xff0c;完全在黑暗中生长&#xff0c;因无阳光供给&#xff0c;不能进行光合作用&#xff0c;合成叶绿素&#xff0c;就会变成黄色&#xff0c;称之为「韭黄」。 孕期能吃吗&#xff1f; 能吃 韭黄味道独特&#xff0c;富含膳…

[Python入门教程]01 Python开发环境搭建

Python开发环境搭建 本文介绍python开发环境的安装&#xff0c;使用anaconda做环境管理&#xff0c;VS code写代码。搭建开发环境是学习的第一步&#xff0c;本文将详细介绍anaconda和vs code的安装过程&#xff0c;并测试安装结果。 视频教程链接&#xff1a;https://www.bil…

【ElasticSearch】深入了解 ElasticSearch:开源搜索引擎的力量

文章目录 前言一、初识 ElasticSearch 搜索引擎1.1 ElasticSearch 的核心概念1.2 ElasticSearch 的演进历程1.3 ElasticSearch 的优势与未来 二、正排索引与倒排索引&#xff1a;数据库与 ElasticSearch 的差异2.1 对正排索引的认识2.2 对倒排索引的认识2.3 正排索引 vs. 倒排索…

强迫症福音!一个小技巧,让DALLE-3创作排列美学

夕小瑶科技说 原创 编译 | 奶茶子 最近在Twitter上有一条备受欢迎的推文&#xff0c;其介绍了一个令人印象深刻的DALL-E应用。该推文中写道&#xff1a;“你可以使用DALL-E 3来制作一些令人惊叹的整齐排列风格的Knolling照片。”作者(chaseleantj)还分享了他所生成的Knolling…

【Golang】DFA算法过滤敏感词Golang实现

什么是DFA算法 DFA全称&#xff1a;Deterministic Finite Automaton&#xff0c;翻译过来就是确定性有限自动机&#xff0c;其特征是&#xff0c;有一个有限状态集合和一些从一个状态通向另一个状态的边&#xff0c;每条边上标记有一个符号&#xff0c;其中一个状态是初态&…

java 常见api Arrays类

int类型数组 package daysreplace;import java.util.Arrays;public class Test {public static void main(String[] args) {int[] arrays{38,24,42,56,22,44};//直接输出数组名称就是内存地址System.out.println(arrays);//Arrays.toString()会将数组内容转成字符串形式System…

6款好用良心的国产软件,每一款都是精品,电脑秒变黑科技

在如今科技发展迅猛的时代&#xff0c;我们在工作中基本都会使用到电脑&#xff0c;其实电脑上有很多非常实用的软件&#xff0c;能够提高我们的工作效率。今天给大家分享6款良心好用的国产软件&#xff0c;每一款都是精品&#xff0c;让你电脑秒变黑科技。 01、滴答清单 滴答清…

mac文件为什么不能拖进U盘?

对于Mac用户来说&#xff0c;可能会遭遇一些烦恼&#xff0c;比如在试图将文件从Mac电脑拖入U盘时&#xff0c;却发现文件无法成功传输。这无疑给用户带来了很大的不便。那么&#xff0c;mac文件为什么不能拖进U盘&#xff0c;看完这篇你就知道了。 一、U盘的读写权限问题 如果…

17795-2019 建筑绝热用玻璃棉制品 思维导图

声明 本文是学习GB-T 17795-2019 建筑绝热用玻璃棉制品.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了建筑绝热用玻璃棉制品的分类和标记、技术要求、试验方法、检验规则以及标志、包 装、运输和贮存。 本标准适用于建筑围…

归并排序与非比较排序详解

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; &#x1f354;前言&#xff1a; 上篇博客我们讲解了非常重要的快速排序&#xff0c;相信大家已经学会了。最后我们再学习一种特殊的排序手法——归并排序。话不多说我们直接上菜。 目录 归并排序 基本思想 递归思路…

Altium Designer培训 | 2 - 原理图库创建篇

目录 原理图界面屏幕放大&缩小&移动 元件库介绍及电阻容模型的创建 【SCH Library】面板 元件符号 绘制一只电阻的模型 设置栅格大小 绘制一只电容的模型 IC类元件模型的创建 排针类元件模型的创建 光耦及二极管元件模型 现有元件模型的调用 参考上一篇文章…

10.6数构(概念,优先队列复习,漏斗倒水时间期望,小木棍dfs,括号匹配,后缀表达式,PTA第三题)

选择应试 数据项是数据的最小单位 数据的逻辑结构与数据元素本身的内容和形式无关 带头结点的单循环链表中&#xff0c;任一结点的后继结点的指针域均不空 顺序存储结构的主要缺点是不利于插入或删除操作 顺序存储方式不仅能用于存储线性结构&#xff0c;还可以用来存放非…

【juc】countdownlatch实现并发网络请求

目录 一、截图示例二、代码示例2.1 测试代码2.2 接口代码 一、截图示例 二、代码示例 2.1 测试代码 package com.learning.countdownlatch;import lombok.extern.slf4j.Slf4j; import org.springframework.web.client.RestTemplate;import java.util.Arrays; import java.uti…