菜比:你还不会接口测试?

news2024/9/24 23:28:43

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

一、前端和后端

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

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

 如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a 

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

无论是网页还是安卓/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. 测试结果分析:需要对测试结果进行分析,确定问题的原因和影响,优化测试用例和测试方法。

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

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

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

相关文章

QT - 20230710

练习&#xff1a;实现一个简易闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDateTime> #include <QDebug> #include <QTextToSpeech>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpubl…

Kafka入门, Kafka-Kraft 模式 部署(二十六)

Kafka-Kraft 模式 左图为kafka现有架构&#xff0c;元数据在zookeeper中&#xff0c;运行时动态选举controller,由controller进行kafka集群管理&#xff0c;右图为kraft模式架构&#xff08;实验性&#xff09;&#xff0c;不再依赖zookeeper集群&#xff0c;而是用三台control…

MyBatis将查询的两个字段分别作为Map的key和value

问题背景 首先查出 危险源id 和 危险源报警的个数 alarm 遍历危险源&#xff0c;将报警数填充进去 所以&#xff0c;我需要根据id得到alarm 最方便的就是Map 经过sql查询 -- 危险源下的对象的报警个数select id, ifnull(alarm_count,0) alarm from spang_monitor_danger_…

LongLLaMA:LLaMA的升级版,处理超长上下文的利器!

原文来源&#xff1a;芝士AI吃鱼 有效整合新知识&#xff1a;大模型面临的挑战 大家使用过大型模型产品的时候可能会遇到一个共同的问题&#xff1a;在进行多轮对话时&#xff0c;模型可能会忘记之前的对话内容&#xff0c;导致回答不连贯。这实际上是由于大型模型在处理大量新…

ARM day10 (IIC协议接收温湿传感器数据)

iic.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" /* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_SCL ---> PF14* I2C1_SDA ---> PF15** */#define SET_SDA_OUT do{…

c++实现贝塞尔曲线,生成缓动和回弹动画

贝塞尔曲线于1962年由法国工程师皮埃尔贝塞尔(Pierre Bzier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。 一般参数公式 贝兹曲线可如下推断。给定点P0、P1、…、Pn,其贝兹曲线即: 几何学的方向上理解贝塞尔曲线: 一阶贝塞尔曲线 二阶贝塞尔曲线 三阶贝塞尔曲…

记录使用注入的方式为Unity编辑器实现扩展能力

使用场景 当前项目编辑器中不方便存放或者提交扩展代码相同的扩展功能需要在多个项目(编辑器)中使用项目开发中&#xff0c;偶尔临时需要使用一个功能&#xff0c;想随时使用随时卸载 设计思路 使用进程注入&#xff0c;将一个c/c dll注入到当前运行的unity编辑器中使用c/c …

分布式搜索 (二)

一、DSL 查询文档 1. DSL Query 的分类 Elasticsearch 提供了基于 JSON 的 DSL (Domain Specific Language) 来定义查询 常见的查询类型包括&#xff1a; ① 查询所有&#xff1a;查询出所有数据&#xff0c;一般测 试用 例如&#xff1a;match_all ② 全文检索 (full text) …

C++数据结构笔记(8)循环链表实现

1.循环链表与单链表的区别在于尾部结点存在指向头结点的指针 2.无论尾部结点指向第一个结点&#xff08;头结点&#xff09;还是第二个结点&#xff08;第一个有效结点&#xff09;&#xff0c;都可以被称为循环链表 3.判断循环结束的两种方式&#xff1a;遍历次数等于size;或…

《深度探索c++对象模型》笔记

非原创&#xff0c;在学习 1 关于对象&#xff08;Object Lessons&#xff09; 这里最开始从C语言的结构体引出C中的”抽象数据类型&#xff08;ADT&#xff09;“。 而加上封装之后&#xff0c;布局成本没有增加&#xff0c;三个data member直接内含在每一个class object之中…

深入选择屏幕

2.3.4.4 屏幕输入报表筛选条件等 &--------------------------------------------------------------------- *& selection-screen /option/parameter:屏幕输入报表赛选条件 *& TABLES . *selection-screen begin of block test select-options: selection-screen…

PHY芯片快速深度理解

摘要&#xff1a; 什么是phy 为什么要熟悉RJ45网口 网络七层协议 两个模块进行通信 什么是MDIO协议 MDIO的作用 MDIO没那么重要 MDIO读写时序 为什么说读取的phy最多32个 什么是phy 物理层芯片称为PHY、数据链路层芯片称为MAC。 可以看到PHY的数据是RJ45网络接口&am…

linux常见指令下

接下来我们就聊聊linux的后面十条指令。 一:echo 作用是往显示器输出内容&#xff0c;和printf类型&#xff0c;但是该指令最核心的是与之相关的一些概念 概念1.输出重定向&#xff1a; echo不仅可以向显示打印内容&#xff0c;还可以向文件输出内容&#xff0c;本应该输出到…

在服务器上启动springboot项目

环境搭建&#xff1a;要在服务器上运行SpringBoot Web项目&#xff0c;需要先在服务器上安装JDK&#xff08;CentOS系统安装JDK参考&#xff1a;http://t.csdn.cn/0zYml&#xff09; 第一步&#xff1a;创建项目 创建一个简单的springboot项目&#xff0c;并通过测试&#xf…

Java Web Servlet (2)23.7.8

1.7 urlPattern配置 Servlet类编写好后&#xff0c;要想被访问到&#xff0c;就需要配置其访问路径&#xff08;urlPattern&#xff09; 一个Servlet,可以配置多个urlPattern package com.itheima.web;import javax.servlet.ServletRequest; import javax.servlet.ServletRes…

嵌入式基础知识-流水线

提到流水线&#xff0c;最先想到的可能是流水线车间中的产品制造过程。 工业上的流水线&#xff0c;又称装配线&#xff0c;指每一个生产单位只专注处理某一个片段的工作&#xff0c;以提高工作效率及产量。 在计算机领域中&#xff0c;也有流水线的概念&#xff0c;其核心原理…

互联网医院系统定制|互联网医院在线诊疗平台

互联网医院系统对医院有以下几个方面的帮助&#xff1a;   提升医疗服务效率&#xff1a;互联网医院系统可以为医院提供在线挂号、在线问诊、远程会诊等功能&#xff0c;减少患者排队等待时间&#xff0c;提高医疗服务效率。   扩大服务范围&#xff1a;互联网医院系统可以…

【数据结构二叉树OJ系列】6、平衡二叉树

目录 题述&#xff1a; 思路&#xff1a; 正确代码如下&#xff1a; 时间复杂度分析&#xff1a; 现让你把代码优化时间复杂度为O&#xff08;N&#xff09; 思路&#xff1a; 题述&#xff1a; 给定一个二叉树&#xff0c;判断他是否是高度平衡的二叉树。 本题中&#xf…

HttpRunner自动化之接口关联和常用断言

接口关联 第一个test接口获取token,并提取出存储到变量中&#xff0c;在第二个test接口中直接调用该变量&#xff0c;如下图 # 接口关联 - config:name: 微信接口base_url: https://api.weixin.qq.com - test:name: 获取tokenrequest:url: /cgi-bin/tokenmethod: GETparams:g…

在vue3项目中加载Cesium立体地形信息并调整初始化角度

在vue3项目中加载Cesium立体地形信息并调整初始化角度 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium vite -D配置 &#xff08;1&#xff09;在项目的vite.config.js文件中添加&#xff1a; impo…