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

接口自动化测试概述

目录

1 接口自动化测试简介

1.1 什么是接口

1.2 什么是接口测试

1.3 为什么要做接口测试

1.4 什么是接口测试自动化

1.5 为什么要做接口测试自动化

2 接口自动化测试规范

2.1 文档准备

2.1.1 需求文档

2.1.2 接口文档

2.1.3 UI 交互图

2.1.4 数据表设计文档

2.2 明确接口自动化测试需要的功能

2.2.1 校验(断言)

2.2.2 数据隔离

2.2.3 数据传递

2.2.4 功能函数

2.2.5 可配置

2.2.6 日志

2.2.7 可视化报告

2.2.8 可持续集成

3 接口自动化测试流程

3.1 测试用例编写

3.2 准备测试数据

3.3 搭建测试环境

3.4 编写测试脚本

3.5 执行测试脚本

3.6 分析测试结果

3.7 定期执行测试

3.8 测试报告生成

3.9 维护和优化

4 接口自动化测试工具

4.1 Postman

4.2 JMeter

4.3 MeterSphere


1 接口自动化测试简介

        接口自动化测试是指通过编写脚本或使用自动化工具,对软件系统的接口进行测试的过程。接口测试是软件测试中的一种重要测试方法,主要用于验证系统组件之间的通信和数据交换是否正常。接口自动化测试可以提高测试效率和准确性,减少人工测试的工作量。通过自动化脚本执行接口测试,可以快速发现接口中的问题,并及时进行修复,确保系统的稳定性和可靠性。

1.1 什么是接口

        官方点说,是计算机系统中两个独立的部件进行信息交换的共享边界。通俗点说,就是服务端对外提供数据服务最常用的信息交换方式。提供数据服务的服务端是个可大可小的机构,做的事大多不止一件,它做了这么多事,最终的目标是给 APP 或其它调用方使用,于是服务端就派出了几个代表,比如 API 1 负责提供用户信息,API 2 负责提供设备信息,API 3 负责提供播放的音频信息等等。同时,服务端规定好跟 API 1 通讯的接头暗号是 param1,param2…,跟 API 2 通讯的接头暗号是 param3,param4…,而 params 就是接口参数,就是用来告诉服务端你要什么服务,具体的要求是什么。接口一般由三个部分组成:协议、地址及参数。

1.2 什么是接口测试

        一般讲的接口测试指的是对某个给定接口进行功能测试,输入不同的参数时,接口返回值是否正确。下图是经典的测试金字塔模型。

        在这个模型中,越往下比例会占的越高,也就是说在一个产品测试中,单元测试比例是最高的,依次是接口测试和UI自动化测试,最顶端是人工测试部分。服务端接口测试在中部,承上启下,由此可见其重要性。

1.3 为什么要做接口测试

        一般做接口测试有如下原因:

  • 接口是服务端对外提供数据服务最常用的信息交换方式,接口大部分内容都是数据,通过数据对比我们可以推测到系统的逻辑,测接口其实也就是测逻辑。

  • 接口测试相对容易实现自动化,也容易实现持续集成,且相对 UI 自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。

1.4 什么是接口测试自动化

        接口测试自动化,简单来讲就是功能测试用例脚本化,然后执行脚本,产生一份可视化测试报告。

1.5 为什么要做接口测试自动化

        不管什么样的测试方式,都是为了验证功能与发现 bug。那为什么要做接口测试自动化呢?一句话概括就是是为了节省人力成本。具体来说,包括以下几点:

  • 减轻自己工作量,把测试从枯燥的重复劳动的人工测试中解放出来;

  • 协助手工测试完成很难模拟或无法模拟的的工作;

  • 提高工作效率,比如测试环境的自动化编译、打包、部署、持续集成甚至持续交付等。

  • 协助定位问题,比如接口层发现问题了,可以通过添加的 traceID 定位到日志错误或错误代码行,

  • 尽早发现 Bug,自动通知测试人员。一旦发现问题,立即通知测试人员,快速高效

2 接口自动化测试规范

2.1 文档准备

        磨刀不误砍柴工,准备好分详细的接口相关文档能够帮助后续接口自动化测试工作的高效展开。相关文档包括但不限于以下内容:

2.1.1 需求文档

        明确定义:接口背后的业务场景,即该接口是干什么用的,用到哪里,每次调用会发生什么等;

2.1.2 接口文档

        明确定义:接口名,各个入参值,各个返回值,和其他相关信息;

2.1.3 UI 交互图

        明确定义:各单页面需展示的数据;页面之间的交互等;

2.1.4 数据表设计文档

        明确定义:表字段规则、表 N 多 N 关系(一对一、一对多、多对多)等;

务必和相关需求方确认好文档中的信息是可靠且最新的,只有依赖可靠的文档才能设计出正确详尽的接口用例,才能得到最正确的结果。

2.2 明确接口自动化测试需要的功能

2.2.1 校验(断言)

        测试断言是自动化测试中的测试通过条件,用于判断测试用例是否符合预期。所以支持对返回值校验是一个必须的功能。

2.2.2 数据隔离

        数据隔离就是指具体的请求接口、参数、校验等数据做到与代码相隔离,便于维护,一旦需要调整接口用例、新增接口用例时可很快速的找到位置。隔离的另一个好处就是可复用,框架可以推广给其他团队,使用者可以使用相同的代码,只需要根据要求填写各自用例即可测试起来。

2.2.3 数据传递

        做到数据隔离可维护后,数据传递是另外一个更重要的需求。接口测试时,首先我们会实现单接口解耦,后续按照业务场景组合多个接口。而数据传递是则是组合多个接口的必要条件,它让接口用例之间可以做到向下传参。举个例子,我们通过设备信息查询接口查询到当前天猫精灵音箱的设备信息,该接口会返回一个 UUID,接下来我们要通过用户信息查询接口去查询当前设备绑定的用户信息,此时第二个接口的请求数据是需要从第一个接口用例中的返回中提取的。

2.2.4 功能函数

        实际的业务场景测试会需要各种辅助功能的支持,比如随机生成时间戳,请求 ID,随机的手机号码或位置信息等等,此时我们就需要代码可以支持做到识别对应关键字时可以执行对应的功能函数进行填充。

2.2.5 可配置

        目前测试环境包括但不限于日常、预发一、预发二、线上等等,因此用例不单单只能在一个环境上执行,需要同一份接口用例可以在日常、预发、线上等多个环境都可以执行。所以框架需要做到可配置,便于切换,调用不同的配置文件可以在不同的环境执行。

2.2.6 日志

        日志包含执行的具体执行接口、请求方式、请求参数、返回值、校验接口、请求时间、耗时等关键信息,日志的好处一来是可以便于在新增用例有问题时快速定位出哪里填写有问题,二来是发现 bug 时方便向开发反馈提供数据,开发可以从触发时间以及参数等信息快速定位到问题所在。

2.2.7 可视化报告

        用例执行后,就是到了向团队展示结果的时候了,一个可视化的报告可以便于团队成员了解到每次自动化接口用例执行的成功数、失败数等数据。

2.2.8 可持续集成

        对于已经有测试用例并测试完成的接口,我们希望能够形成回归用例,在下一个版本迭代或上线之前,通过已有用例进行一个回归测试,确保新上线的功能不影响已有功能。因此,这就需要接口自动化测试是可持续集成的而不是一次性的。

3 接口自动化测试流程

        大多数公司的接口自动化,主要是将系统的主要业务流程转换成自动化脚本,它的主要流程如下:

3.1 测试用例编写

        根据接口的需求和功能,编写相应的测试用例。测试用例应包括正常情况下的测试、异常情况下的测试、边界情况下的测试等。

3.2 准备测试数据

        根据测试用例的要求,准备相应的测试数据。数据可以通过手动输入、数据库查询、文件导入等方式进行准备。

3.3 搭建测试环境

        搭建适合接口自动化测试的测试环境,包括测试服务器、数据库、接口调用工具等。

3.4 编写测试脚本

        使用适合的编程语言和工具,编写接口自动化测试脚本。脚本应包括发送接口请求、接收和解析接口响应、校验接口返回结果等步骤。

3.5 执行测试脚本

        执行编写好的测试脚本,发送接口请求,并对接口的响应结果进行校验。记录测试结果和日志。

3.6 分析测试结果

        根据测试脚本的执行结果和日志,分析接口的测试结果。如果有失败的测试用例,需要进行排查和修复。

3.7 定期执行测试

        根据项目需求,定期执行接口自动化测试,以保证接口的稳定性和功能的正确性。

3.8 测试报告生成

        根据测试结果,生成测试报告。报告应包括测试的概述、测试用例的执行情况、错误日志和建议等。

3.9 维护和优化

        根据接口的变更和项目需求,及时维护和优化接口自动化测试脚本,以保持测试的准确性和可靠性。

4 接口自动化测试工具

        接口自动化测试工具主要有Postman、JMeter、MeterSphere等,它们主要有以下特点:

4.1 Postman

        Postman 是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好,主要用于接口测试。

  • 优点:

    • 用户友好的界面和易于使用,无需编程知识即可进行接口测试和调试。

    • 支持多种HTTP请求和丰富的断言机制,可以进行全面的接口验证。

    • 提供了脚本编写和执行的能力,可以进行自动化的接口测试和流程控制。

    • 支持团队协作和版本控制,方便多人协同开发和测试。

    • 可以生成详细的测试报告和自动生成API文档,便于测试结果的分析和文档化工作。

  • 缺点:

    • Postman在处理大量请求时可能性能较低,特别是在负载较高的情况下。

    • 高级功能和定制化选项相对较少,对于复杂的测试场景可能不够灵活和扩展。

    • Postman的某些高级功能和团队协作功能可能需要付费订阅才能使用。

4.2 JMeter

        JMeter是一个纯Java编写的开源软件,主要用于进行性能测试功能测试。它支持测试的应用/服务/协议包括Web (HTTP, HTTPS)、SOAP/REST Webservices、FTP、Database via JDBC等。我们最常使用的是HTTP和HTTPS协议。

  • 优点

    • 不依赖于界面,如果服务正常启动,传递参数明确就可以添加测试用例,执行测试;

    • 测试脚本不需要编程,熟悉http请求,熟悉业务流程,就可以根据页面中input对象来编写测试用例。

    • 测试脚本维护方便,可以将测试脚本复制,并且可以将某一部分单独保存。

    • 利用badboy录制测试脚本,可以快速的形成测试脚本

    • Jmeter断言可以验证代码中是否有需要得到的值

    • 使用参数化以及Jmeter提供的函数功能,可以快速完成测试数据的添加修改等

  • 缺点

    • 使用Jmeter无法验证JS程序,也无法验证页面所以需要手工去验证。

    • Jmeter的断言功能不是很强大,需要人工测试,人工确认。

    • Jmeter脚本的维护需要保存为本地文件,而每个脚本文件只能保存一个测试用例,不利于脚本的维护。

    • Jmeter的测试脚本的管理不可以纳入版本控制。

4.3 MeterSphere

        是一站式的开源持续测试平台,遵循 GPL v3 开源许可协议,涵盖测试管理、接口测试、UI 测试和性能测试、团队协作等功能

  • 优点:

    • 开源免费:MeterSphere是一个开源工具,可以免费使用,没有任何额外的费用。

    • 功能全面:MeterSphere提供了全面的测试管理功能,可以满足不同层次和类型的测试需求。

    • 分布式测试支持:MeterSphere支持分布式测试,可以通过多个节点进行并发测试,提高测试效率。

    • 插件扩展性:MeterSphere提供了丰富的插件和扩展接口,可以方便地扩展其功能,满足特定的测试需求。

  • 缺点:

    • 学习曲线较陡峭:对于没有经验的用户来说,MeterSphere的学习曲线可能较陡峭,需要花费一定的时间和精力去学习和掌握其使用方法。

    • 对于大规模测试的支持有限:MeterSphere在处理大规模测试时可能性能有限,可能需要使用其他工具或进行优化来满足需求。

相关文章:

接口自动化测试概述

目录 1 接口自动化测试简介 1.1 什么是接口 1.2 什么是接口测试 1.3 为什么要做接口测试 1.4 什么是接口测试自动化 1.5 为什么要做接口测试自动化 2 接口自动化测试规范 2.1 文档准备 2.1.1 需求文档 2.1.2 接口文档 2.1.3 UI 交互图 2.1.4 数据表设计文档 2.2 明…...

Fingerprint.js:精准用户识别的浏览器指纹技术

在数字化时代,用户识别成为互联网服务中不可或缺的一环。随着隐私保护意识的增强,传统的用户识别方法如Cookies和本地存储面临着越来越多的挑战。而Fingerprint.js作为一种创新的浏览器指纹技术,以其高效、隐私友好的特性,逐渐在个…...

Gson将对象转换为JSON(学习笔记)

JSON有两种表示结构,对象和数组。对象结构以"{"大括号开始,以"}"大括号结束。中间部分由0或多个以”,"分隔的”key(关键字)/value(值)"对构成,关键字和值之间以":"分隔,语法结…...

什么是IPv6

目前国内的网络正在快速的向IPv6升级中,从网络基础设施如运营商骨干网、城域网,到互联网服务商如各类云服务,以及各类终端设备厂商如手机、电脑、路由器、交换机等。目前运营商提供的IPv6线路主要分为支持前缀授权和不支持前缀授权两种。 说…...

python画图|放大和缩小图像

在较多的画图场景中,需要对图像进行局部放大,掌握相关方法非常有用,因此我们很有必要一起学习 【1】官网教程 首先是进入官网教程,找到学习资料: https://matplotlib.org/stable/gallery/subplots_axes_and_figures…...

Mac优化清理工具CleanMyMac X 4.15.6 for mac中文版

CleanMyMac X 4.15.6 for mac中文版下载是一款功能更加强大的系统优化清理工具,软件只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉,节省宝贵的磁盘空间。CleanMyMac X 4.15.6 for mac 软件与最新macOS系统更加兼容,流畅地…...

资质申请中常见的错误有哪些?

在申请建筑资质的过程中,企业可能会犯一些常见的错误,以下是一些需要避免的错误: 1. 资料准备不充分: 申请资质需要提交大量的资料,包括企业法人资料、财务报表、业绩证明等。资料不齐全或不准确都可能导致申请失败。…...

基于单片机的多路温度检测系统

**单片机设计介绍,基于单片机CAN总线的多路温度检测系统设计 文章目录 前言概要功能设计设计思路 软件设计效果图 程序设计程序 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探…...

面试题:通过栈实现队列

题目描述: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素i…...

网络战时代的端点安全演变

​ 在恶意网络行为者与对手在世界各地展开网络战争的日常战争中,端点安全(中世纪诗人可能会称其为“守卫大门的警惕哨兵”)当然是我们的互联数字世界的大门。 端点安全类似于我们今天称之为现代企业的数字有机体的免疫系统,可以将…...

雷池 WAF 如何配置才能正确获取到源 IP

经常有大哥反馈说雷池攻击日志里显示的 IP 有问题。 这里我来讲一下为什么一些情况下雷池显示的攻击 IP 会有问题。 问题说明 默认情况下,雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题,雷池获取到的…...

libcrypto.so.10内容丢失导致sshd无法运行

说明: 我的是centos的服务器,被扫出有ssh漏洞,需要升级到OpenSSH_9.8p1, OpenSSL 3.0.14 4 报错 我的系统和环境升级前的版本 这是升级之后的版本 OpenSSH_9.8p1, OpenSSL 3.0.14 4 解决:我这个的原因是升级的时候把这个文件给删除了, 复制旧服务器上的 libcrypto.so.1…...

DTH11温湿度传感器

DHT11 是一款温湿度复合传感器,常用于单片机系统中进行环境温湿度的测量。以下是对 DHT11 温湿度传感器的详细讲解: 一、传感器概述 DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感…...

【Linux系列】CMA (Contiguous Memory Allocator) 简单介绍

CMA (Contiguous Memory Allocator) CMA是Linux内核中的一种内存分配机制,用于分配物理上连续的内存块。它主要解决了在系统运行一段时间后,物理内存碎片化导致难以分配大块连续物理内存的问题。 CMA的工作原理 在系统启动时,CMA会预留一块…...

基于单片机餐厅呼叫控制系统仿真设计

文章目录 前言资料获取设计介绍设计程序具体实现截图设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…...

详细分析Mysql中的定时任务(Event事件)

目录 前言1. 基本知识2. Event事件3. Demo 前言 基本的知识推荐阅读: 详细分析Mysql触发器的基本使用(图文解析)详细分析SQL Server触发器的基本知识详细分析Corn表达式(附Demo) 特性事件定时任务触发器触发条件基于…...

SpinalHDL之语义(Semantic)(三)

本文作为SpinalHDL学习笔记第七十一篇,介绍SpinalHDL的规则(Rules)。 目录: 1.简介(Introduction) 2.并⾏性(Concurrency) 3.以最后赋值为准(Last valid assignment wins) 4.Scala下的信号和寄存器的内在联系(Signal and register interactions with Scala)(OOP引⽤+函数…...

SpringBoot 请求和响应

1. Spring Boot 请求与响应概述 在 Spring Boot 开发中,客户端通过浏览器发起请求,后端使用内置的 Tomcat Web 服务器处理请求,返回响应数据。请求和响应的过程遵循 HTTP 协议。Spring Boot 的核心 Servlet 程序是 DispatcherServlet&#x…...

LQR算法核心思想

本章以倒立摆为解决目的 什么是线性二次型控制器(LQR) 开环系统 即状态变量的倒数 系统的状态空间矩阵A * 系统状态变量x A状态矩阵:描述系统本身物理特性的一个矩阵,它是由系统本身的机械结构、物理结构决定的,无法…...

AI大模型之旅-最强开源文生图工具Stable Diffusion WebUI 教程

1.1克隆 Automatic1111 的 GitHub 仓库 在你想安装 Web UI 的文件夹路径下执行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 这将会克隆整个仓库到本地。 这里会默认访问 https://huggingface.co/ 下载 因此需要魔法 1.2 进入仓库目录 cd stable-di…...

WinForm程序嵌入Web网页

文章目录 前言一、三方库或控件的选择测试二、Microsoft Edge WebView2安装、使用步骤1.安装2.使用 前言 由于此项目需要winform客户端嵌入web网页并于JAVA端交互数据,所以研究了一下嵌入web网页这部分,趟了一遍雷,这里做下记录。 一、三方库…...

Redis string类型hash类型

string类型 类型介绍 在Redis中的所有的key都是string类型,而value的类型有多种。 Redis中的字符串是直接按照二进制的方式进行存储的,也就是不会做任何的编码转换,存的是什么,取出来的就是什么。这样一般来说,Redi…...

Solidity智能合约中的异常处理(error、require 和 assert)

Solidity 中的三种抛出异常方法:error、require 和 assert 在 Solidity 开发中,异常处理是确保智能合约安全性和正确性的关键步骤。Solidity 提供了三种主要方法来抛出异常:error、require 和 assert。本文将详细介绍这三种方法的用途、实现方…...

True NAS禁用ipv6

在 TrueNAS Scale 中,禁用 IPv6 的方法如下:12 进入 System->Advanced->Sysctl,设置一个 sysctl 可调整变量 net.ipv6.conf.all.disable_ipv6,值为 1,以完全禁用 IPv6。\...

笔记整理—linux进程部分(2)使用fork创建进程

为什么要创建进程,首先每个程序的运行都需要一个进程;多进程实现宏观上的并行。 fork的原理,是进程的分裂生长模式。如果操作系统需要一个新的进程,那么就会以cp的方法得到一个新的进程,此时老的进程是父进程&#xff…...

在Python中实现多目标优化问题(6)

在Python中实现多目标优化问题 在Python中实现多目标优化,除了传统的进化算法(如NSGA-II、MOEA/D)和一些基于机器学习的方法外,还有一些新的方法和技术。这些新方法通常结合了最新的研究成果,提供了更高效的解决方案。…...

Java EE中的编码问题及解决方案

Java EE中的编码问题及解决方案 在Java EE开发中,处理字符编码是确保数据正确传输和显示的重要环节。不同的编码不一致会导致乱码,影响用户体验。本文将总结在Java EE中可能遇到的编码问题及其解决方案。 1. 输入数据编码问题 在表单提交时&#xff0c…...

9月27日,每日信息差

第一、中国科学家团队在干细胞治疗领域取得重要突破,通过化学重编程技术成功制备出胰岛细胞,并用于移植治疗一名 1 型糖尿病患者,实现了临床功能性治愈。相关研究成果已发表在国际权威期刊《细胞》上。 第二、交通运输部公路局局长周荣峰在国…...

什么是 Angular 开发中的 Dumb components

Dumb components,在 Angular 开发中也被称为 Presentational components,它们的主要职责是通过展示数据和触发事件,把业务逻辑和 UI 表现分离开来。Dumb components 只通过 Input() 接收数据,Output() 向外发送事件,不…...

Docker 进入容器运行命令的详细指南

Docker 进入容器运行命令的详细指南 Docker 是一个开源的容器化平台,广泛应用于开发和生产环境中。它允许开发者打包应用程序及其依赖项到容器中,并能够在不同的平台上快速部署和运行。容器通常是独立且隔离的,但在开发、调试或维护过程中&a…...

做网站公众号多少钱/上海app开发公司

实验二:缓冲区溢出实验(war-ftp 1.65)一、实验目的1、掌握缓冲区溢出的原理缓冲区是程序运行期间在内存中分配的一个连续的区域,用于保存包括字符数组在内的各种数据类型。溢出就是所填充的数据超过原有的缓冲区边界,使…...

中国电影家协会是什么级别/适合seo优化的网站

1.概述 介绍如何使用过滤器技术,防止通过其他URL地址直接访问本站资源。运行本实例,当URL地址不是本站地址时,在网页中将显示错误提示信息。 2.技术要点 主要应用request对象的getHeader()方法获取信息头来源地址,若是来自其它网站…...

重庆网站建设注意事项/快排seo

接上一篇 WPF多进程UI探索(Like Chrome) 找到了相对较靠谱的跨进程传递WPFUI的方法,本篇将对WPF多进程UI框架进行设计。 功能性需求 一个主进程作为宿主,承载多个子进程的UI每个子进程相互独立,互不影响主进程和子进程…...

做网站和游戏是如何赚钱/百度排名服务

实现了一个简单的char二维数组函数&#xff0c;传入二维数组&#xff0c;打印二维数组的内容。 #include <cstdio>#define VEINKAPI __callback #define IN typedef int YNHANDLE;VEINKAPI void PrepareList(IN int fingercount, IN char **fingerlist, IN char** nameli…...

wordpress语言切换 seo/品牌广告视频

索引是帮助mysql获取数据的数据结构。最常见的索引是Btree索引和Hash索引。不同的引擎对于索引有不同的支持&#xff1a;Innodb和MyISAM默认的索引是Btree索引&#xff1b;而Mermory默认的索引是Hash索引。Hash索引所谓Hash索引&#xff0c;当我们要给某张表某列增加索引时&…...

建设金融网站哪家好/seozou是什么意思

顶管施工其实就是我们平时说的不开挖或者非开挖施工啦&#xff0c;其原理是借助于主顶油缸及管道间、中继间等推力&#xff0c;把工具管或掘进机从工作坑内穿过土层一直推进到接收坑内吊起。管道紧随工具管或掘进机后&#xff0c;埋设在两坑之间。为了响应中央的号召&#xff1…...