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

接口测试入门:深入理解接口测试!

很多人会谈论接口测试。到底什么是接口测试?如何进行接口测试?这篇文章会帮到你。

一、前端和后端

在谈论接口测试之前,让我们先明确前端和后端这两个概念。

前端是我们在网页或移动应用程序中看到的页面,它由 HTML 和 CSS 编写而成,让我们看到漂亮的页面,并进行一些简单的校验,例如确保必填字段不为空。后端则实现了页面上的业务逻辑和功能,例如购物和发布微博等功能。当你在页面上进行这些操作时,后端会负责扣除余额或将微博发布到指定的账户。那么前端和后端如何交互呢?这就是通过接口完成的。

虽然这些概念可能有点抽象,但你只需要记住:前端负责让页面看起来漂亮,后端负责实现网页的功能。

无论是网页还是安卓/iOS 客户端,或者是微信小程序,或者是 Windows/Mac 上的软件,都是同一个道理,都会区分前端和后端。前端就是在你的手机或者电脑上运行的那个软件,后端则是在服务器上运行的那个软件。

在公司里,前端和后端往往会分成不同的职位,他们开发和实现的东西也截然不同。

二、接口

了解了前端和后端的概念,接下来就到接口了。

接口是一种通信机制,用于在前端和后端之间交换信息。可以将其想象为两个人之间在对话。

前端就像提问者,而后端则像回答者。当前端需要某些信息或执行某些任务时,它会通过一个接口向后端发送请求。这个请求就像是一个问题,告诉后端需要做什么。后端则会根据请求执行相应的操作,并将结果返回给前端。这个结果就像是答案,告诉前端完成了什么任务或提供了哪些信息。

这种交互就像一个问答游戏,前端和后端通过接口不断地问答,从而实现应用程序的功能和数据交换。例如,当你在购物网站上点击“加入购物车”按钮时,前端会向后端发送一个请求,告诉它要将该商品添加到购物车中。后端将执行相应的操作,并将结果返回给前端,告诉它是否成功添加了商品。

总之,接口就像是前端和后端之间的“对话”,用于交换信息和执行任务。

接口又叫 API(Application Programming Interface)。我们一般讲到接口或者 API,指的都是同一个东西。所以接口测试跟 API 测试也是同一个东西。

三、接口测试

大家都知道,接口是用于前端页面或应用与后端交互的。所以很多人会问:“我已经测试了功能,为什么还需要测试接口?”在回答这个问题之前,我们来举个例子:

例如,在测试用户注册功能时,用户名必须是 6-12 个字符,包括字母(区分大小写)、数字和下划线。在功能测试中,用户名规则肯定会进行测试,例如输入 20 个字符或特殊字符等。但这些可能仅在前端进行验证,而后端则没有进行验证。如果有人绕过前端验证并直接发送信息到后端,会发生什么呢?

比如,你拿到了微信的注册接口,用Postmon或Apifox 工具直接模拟客户端访问,发送一个注册请求。如果后端没有验证用户名和密码,那就意味着任何人都可以输入任何他们喜欢的用户名和密码,用户名设成多长都可以,跟什么人重复都可以。

而对于登录功能,如果没有进行完善的接口测试,也许会出现可以使用 SQL 注入的方式登录的漏洞,甚至获得管理员权限。这不是很可怕吗?

因此,接口测试的必要性体现在:

  1. 发现很多在页面操作中无法发现的错误。
  2. 检查系统处理异常的能力。
  3. 检查系统的安全性和稳定性。
  4. 只要接口测试得好,如果前端进行更改,后端就不需要更改。
  5. 在接口测试的基础上,可以进行接口自动化测试,大大提升测试的效率。

这里有 Apifox 提供的企业微信的更新用户资料接口,你可以自己尝试一下,看看他们有没有限制用户名的长度。

你也可以在 Apifox 的 API Hub 阅读各家大厂的 API 文档,学习他们是如何设计和测试 API 的。点击访问:https://apifox.com/apihub/

为什么要进行 API 测试?

随着 API 数量的激增, API 的质量也变得愈加重要,任何一个错误的 API 都可能会对整个系统产生严重的影响。

API 测试可以检测 API 的功能正确性、可靠性、安全性等方面的问题,帮助开发者在代码部署到生产环境之前,检测和修复潜在的问题,从而提高整个系统的可用性和可靠性。除此之外,API 测试还可以帮助开发者更快地响应业务需求。尤其是在微服务架构中,不同的服务可能会频繁地进行版本迭代和更新,相对于界面测试,API 测试可以更早开始,让系统更快地响应业务需求。

四、如何进行接口测试

接口测试的过程可以包括以下步骤:

1、确定测试目的和范围:首先需要阅读产品设计文档和接口文档,明确要测试的接口的功能和特性,并确定测试的范围,例如测试的是哪些接口、测试的条件和环境等。接口文档一般在 Apifox 中设计。

2、设计测试用例:根据测试数据,设计测试用例,包括测试步骤、预期结果等。测试用例需要覆盖接口的各种功能和特性,例如输入验证、数据存储、安全性、性能等。Apifox 的“自动化测试”功能中可以设计测试用例。

3、准备测试数据:根据测试目的和范围,确定测试需要的数据,包括输入数据、预期结果、边界条件等。测试数据需要覆盖不同的情况,包括正常情况、异常情况、边界情况等。在 Apifox 中可以支持使用测试数据,也可以使用动态值功能自动生成动态测试数据。

4、执行测试用例:执行测试用例,记录测试结果和发现的问题。如果发现问题,需要记录问题的详细信息,例如问题的描述、发生时间、重现步骤、影响程度等。在 Apifox 中,会自动生成测试报告,包含每个不通过测试用例的详细信息,方便复现和查找问题。

5、分析测试结果:根据测试结果,分析问题的原因和影响,确定问题的优先级和修复计划。如果问题需要修复,需要将问题反馈给开发人员,并跟踪问题的解决进度。

在设计接口测试用例时,需要考虑以下几点:

  1. 接口功能:需要测试接口的各种功能,例如输入验证、数据存储、安全性、性能等。如参数验证:验证接口参数的正确性、完整性、合法性等,包括参数类型、长度、格式、范围等。
  2. 测试数据:需要准备各种测试数据,覆盖不同的情况,包括正常情况、异常情况、边界情况等,如接口返回值验证:验证接口返回值的正确性、完整性、合法性等,包括返回值类型、长度、格式、范围等。
  3. 测试用例设计:需要设计覆盖接口功能和特性的测试用例,包括测试步骤、预期结果等。
  4. 异常测试:验证接口在异常情况下的处理能力,包括参数错误、数据异常、网络异常、服务器错误等。
  5. 测试环境:需要确定测试的环境和条件,包括测试的设备、网络环境、数据库环境等。
  6. 测试结果分析:需要对测试结果进行分析,确定问题的原因和影响,优化测试用例和测试方法。

最后,接口测试用例设计需要根据实际情况和测试需求进行调整和优化,不断提高测试效率和测试质量。

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

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

相关文章:

接口测试入门:深入理解接口测试!

很多人会谈论接口测试。到底什么是接口测试?如何进行接口测试?这篇文章会帮到你。 一、前端和后端 在谈论接口测试之前,让我们先明确前端和后端这两个概念。 前端是我们在网页或移动应用程序中看到的页面,它由 HTML 和 CSS 编写…...

Redis微服务架构

Redis微服务架构 缓存设计 缓存穿透 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常出于容错的考虑,如果从存储层查不到数据则不写入缓层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去…...

【C++】 局部对象,引用返回

1、new 关键字 会在堆内申请空间,如果仅仅是普通调用构造函数,不会在堆内开辟空间。 2、函数调用会形成栈帧,进行压栈操作,函数调用结束,会进行弹栈。 函数内的局部对象,会随着弹栈,而被销毁(…...

线性代数中涉及到的matlab命令-第二章:矩阵及其运算

目录 1,矩阵定义 2,矩阵的运算 3,方阵的行列式和伴随矩阵 4,矩阵的逆 5,克莱默法则 6,矩阵分块 1,矩阵定义 矩阵与行列式的区别: (1)形式上行列式…...

计算机毕业设计选什么题目好?springboot 美食推荐系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...

爆肝整理,Jmeter接口性能测试-跨线程调用变量实操(超详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、Jmeter中线程运…...

Maven导入程序包jakarta.servlet,但显示不存在

使用前提:(Tomcat10版本)已知tomcat10版本之后,使用jakart.servlet。而tomcat9以及之前使用javax.servlet。 问题描述:在maven仓库有导入了Jakarta程序包,但是界面仍然显示是javax。(下图&…...

es6(二)——常用es6说明

ES6的系列文章目录 es6(一)——var和let和const的区别 文章目录 ES6的系列文章目录一、变量的结构赋值1.数组的结构赋值2.对象的结构赋值 二、模板字符串三、扩展运算符1.字符串的使用2.数组的使用 四、箭头函数1.普通函数的定义2.箭头函数的定义3.箭头…...

经典垃圾回收器

1.各垃圾回收器之间的配合使用关系 2.垃圾回收器的种类 2.1 Serial收集器(默认新生代收集器) Serial收集器是历史最悠久的收集器,曾经是新生代收集器的唯一选择,它是一个单线程工作的收集器,其“单线程”的意义不仅仅…...

台达DOP-B07S410触摸屏出现HMI no response无法上传的解决办法

台达DOP-B07S410触摸屏出现HMI no response无法上传的解决办法 台达触摸屏(B07S410)在上载程序时(显示No response from HMI)我以前的电脑是WIN7的,从来没出现过这样的问题,现在换成win10的,怎么都不行,(USB显示是一个大容量存储)换一台电脑(win10)有些行,有些不行…...

[资源推荐] 复旦大学张奇老师科研分享

刷B站的时候首页给我推了这个:【直播回放】复旦大学张奇教授亲授:人工智能领域顶会论文的发表指南先前也散漫地读了些许论文,但没有在一些宏观的方法论下去训练,读的时候能感觉出一些科研的套路,论文写作的套路&#x…...

C++数位动态规划算法:统计整数数目

题目 给你两个数字字符串 num1 和 num2 &#xff0c;以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件&#xff0c;我们称它是一个好整数&#xff1a; num1 < x < num2 min_sum < digit_sum(x) < max_sum. 请你返回好整数的数目。答案可能很大&…...

ip 网段设置 --chatGPT

问&#xff1a;host all all 127.0.0.1/32 scram-sha-256 里的 127.0.0.1/32 是什么含义 &#xff0c;要指定某个呢 gpt: 在 PostgreSQL 的 pg_hba.conf 文件中&#xff0c;127.0.0.1/32 是一个用于定义访问控制规则的CIDR&#xff08;无类域间路由&#xff09;标记&#xff0…...

使用JMeter进行接口测试教程

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Cho…...

文本生成解码策略

解码策略 1. sample实现了怎样的功能 不是直接选择概率最大的token&#xff0c;而是根据多项式分布进行采样获得下一个token 这里的概率通过设置一些策略&#xff0c;进行处理。例如&#xff0c;解码最小长度&#xff08;当长度小于该值的时候&#xff0c;eos的采样概率为0&am…...

华为数通方向HCIP-DataCom H12-831题库(单选题:221-240)

第221题 以下关于IS-IS的LSP分片功能的描述,正确的是哪一项? A、IS-IS的分片扩展功能的Mode-1模式,虚拟系统是需要参与路由SPF计算的 B、IS-IS的LSP分片功能,是用于让收到LSP分片报文的设备老化相关路由信息 C、IS-IS的分片扩展功能,是通过LSP报文中的LSPID实现的 D、IS-…...

AttributeError: module ‘hanlp.utils.rules‘ has no attribute ‘tokenize_english‘

附原文链接&#xff1a;http://t.csdnimg.cn/wVLib import hanlp tokenizer hanlp.utils.rules.tokenize_english tokenizer(Mr. Hankcs bought hankcs.com for 1.5 thousand dollars.) 改为&#xff1a; from hanlp.utils.lang.en.english_tokenizer import tokenize_eng…...

苍穹外卖(四) AOP切面公共字段自动填充及文件上传

一.AOP切面公共字段填充 问题分析 如果都按照上述的操作方式来处理这些公共字段, 需要在每一个业务方法中进行操作, 编码相对冗余、繁琐&#xff0c;那能不能对于这些公共字段在某个地方统一处理&#xff0c;来简化开发呢&#xff1f; 答案是可以的&#xff0c;我们使用AOP切…...

vue-cli + vue3 项目 ios 苹果手机白屏问题

目录 问题描述原因分析解决方案遇到的坑1&#xff0c;架构问题2&#xff0c;项目引入其他依赖的问题 参考 问题描述 vue-cli vue3 的项目&#xff0c;在苹果手机上打开白屏&#xff0c;安卓手机正常显示。 原因分析 1&#xff0c;借助 vconsole 发现并没有打印报错信息&…...

Spring Boot中的JdbcTemplate是什么,如何使用

Spring Boot中的JdbcTemplate是什么&#xff0c;如何使用 Spring Boot是一个流行的Java应用程序开发框架&#xff0c;它简化了Java应用程序的开发过程&#xff0c;并提供了丰富的功能和工具。在Spring Boot中&#xff0c;JdbcTemplate是一个强大的数据库访问工具&#xff0c;它…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...