API 自动化测试指南

news2024/11/22 23:37:13

目录

前言:

什么是 API 测试?

为什么 API 测试很重要?

测试金字塔

GUI 测试

单元测试

API 测试

API 负载测试

API 测试工具如何选择

如何测试 Web 服务

HTTP

关于 HTTP 请求

请求行(HTTP 方法)

标头

请求体

HTTP 状态码

什么是 REST API?

什么是 JSON


前言:

 API自动化测试是现代软件开发中至关重要的一环。它可以帮助开发团队快速、准确地验证API的功能和性能,提高软件质量和开发效率。

我相信自动化技能已经成为高级测试工程师总体技能的标配。敏捷和持续测试破坏了传统的测试自动化实践,导致测试工程师重新考虑自动化的完成方式。当今的自动化工程师需要在 GUI 的下方深入到 API 级别完成软件质量的保护。

导致转向 API 测试的第二个变化是物联网。物联网是具有嵌入式功能的日常对象,允许它使用 HTTP 或 HTTPS 在 Web 上进行通信以与远程后端服务进行通信。

下面分享一下 API 测试的基础使用指南:

什么是 API 测试?

应用程序编程接口(API)是充当软件组件接口的规范。大多数功能测试都涉及测试网页或表单等用户界面,而 API 测试涉及绕过用户界面并通过调用其 API 直接与服务程序通信。

API 测试允许测试绕过 GUI 并将请求直接发送到应用程序的后端或服务,并在验证响应内容以确保按预期运行的同时收到响应。

上面的示例通常称为客户/服务器关系。客户端通过请求资源来发出请求,然后请求出去寻找将满足请求的服务器。服务器找到所需的资源,然后将响应发送回客户端。

为什么 API 测试很重要?

随着敏捷开发成为大多数互联网公司的标准,我们开发软件和自动化测试的方式已经发生了巨大变化。在敏捷开发之前,大部分自动化时间都是通过图形用户界面(GUI)完成的。这是 Selenium 和 UFT/QTP 等工具处理的部分。

但是,如果您已经进行了一段时间的自动化操作,您就会知道这些类型的测试是多么耗时,脆弱且难以维护。企业投入大量资金来创建自定义功能 GUI 测试自动化框架,单很可能最终使他们对其可靠性失去了信心,直到人们停止投入。

同样,针对用户界面的 GUI 测试往往需要花费很长时间才能运行。对于某些敏捷实践(例如连续构建),迁入新代码时,从 GUI 回归测试套件接收反馈所花费的时间是不能被接受的。

  • API 快速反馈

在这些情况下,需要更快的反馈。发现错误的时间越早越好,因为开发人员会立即知道他们所做的代码更改已破坏了构建,因此需要进行检查。在测试驱动的流程中,用户需要大量测试集才能快速且频繁地运行,并且必须能够将它们集成到开发生命周期中。

GUI 测试仍然非常重要。它是唯一能够真正测试用户在生产过程中如何体验应用程序的测试类型。某些缺陷只能通过 GUI 测试来捕获。换句话说,尽管至关重要,但 GUI 不应是用户关注的唯一自动化类型,也不应该是自动化测试总量中最大的一部分。

敏捷关注的自动化类型是更可靠的 API 下层测试,而较少涉及 GUI 自动化。

测试金字塔

GUI 测试

GUI 测试专注于测试应用程序用户界面,以确保其功能正确。GUI 测试位于金字塔的顶部,仅占应该创建的自动化测试类型总数的一小部分。

单元测试

单元测试构成了金字塔的最大部分,形成了坚实的基础。创建单元测试以验证源代码的单个单元,例如方法。通过这样做,开发人员可以隔离其代码中最小的可测试部分。单元测试是最容易创建的,并能带来最大的收益。由于单元测试通常是用与编写应用程序相同的语言编写的,因此开发人员可以轻松将它们添加到开发过程中。

API 测试

中间服务层是创建诸如 Rest-Assured 和 Postman 之类的工具的 “最佳位置” 。

服务测试的重点是验证许多小组件的交互是否可以集成在一起而不会出现问题。由于 API 测试绕过了用户界面,因此它们往往比 GUI 测试更快,更可靠。

最重要的是:由于 API 测试不依赖 UI 即可完成,因此可以在开发周期的早期创建它们。

API 负载测试

API 测试的另一个好处是,您可以利用相同的功能性 API 自动测试来在性能测试工作中使用。很多公司使用 JMeter 进行负载测试,而这些测试用例都是基于 API 功能测试。

基本思想是,您正在使用工具进行性能测试,但是在针对您的 API 运行例如负载测试之前,需要确保它实际上可以正常工作。因此,您想先进行功能测试,然后可以利用功能测试脚本完成性能测试。

因此,API 测试脚本是性能测试工作流程中的一大优势。

API 测试工具如何选择

您可以使用许多工具来帮助您进行 API 测试自动化。

如何测试 Web 服务

测试任何其他应用程序一样!通常,对于 Web 服务,正常功能测试的最佳方法是相同的(除了与大多数其他应用程序不同的是,Web 服务没有 GUI 用户界面这一区别除外)。

因此,一直使用的功能测试技术仍然适用。只需将 Web 服务视为没有业务流程,然后相应地编写测试用例。

自动化 Web 服务时要问的一些好问题:

  • 服务是否以正确的值响应?
  • 该行为是否符合最终用户的预期要求?
  • 该服务多快将响应发送给用户?
  • 服务可以处理预期和意外的用户负载吗?
  • 服务可以处理无效数据和错误数据导致的异常吗?
  • Web 服务测试术语

对于大多数测试人员而言,最大的障碍是适应谈论 Web 服务时使用的术语。

例如:

  • XML 格式
    XML 是一种创建标记语言的方法,您可以使用它定义自己的标签。XML 允许用户与众多系统共享结构化数据,包括通过 Internet。

  • REST
    REST(表示性传输状态)是用于开发使用 HTTP 协议的 Web 服务的轻量级选项。

HTTP

HTTP 是一种通过网络传输消息的通信协议。HTTP 也被称为无状态协议,因为它发出的每个请求都独立于所有先前的请求。

Cookies 用于跟踪会话的先前请求的状态。Cookies 是存储在客户端上的文件,具有从 HTTP 标头信息中添加的信息。当向用户已经访问过的网站发出请求时,存储在 Cookies 中的信息将发送回浏览器。以这种方式,网站能够记住用户的先前活动和当前的状态。

  • 理解 HTTP 将为我们了解大多数 API 测试工具功能奠定良好的基础。

关于 HTTP 请求

HTTP 客户端请求包含三个主要部分。他们是:

请求行(HTTP 方法)

告诉服务器正在发出什么类型的请求。在上面的示例中,我们发出了 GET 请求,但您可以使用更多请求,具体取决于您需要发出的请求类型。HTTP 方法具有以下选项(前四个方法是最常见的):

GET –从指定来源检索数据
POST –将新数据发送到指定的源
PUT –更新指定来源的信息
DELETE –从指定的源中删除数据
TRACE –要求代理人声明自己
选项 –询问有关服务器上可用选项的信息
HEAD –与 GET 请求类似,但仅发送有关文档的信息
CONNECT –客户端必须使用 HTTPS 服务器时使用

标头

包含要发送到服务器的其他信息,例如浏览器,操作系统,接受和 Cookie 信息。标头的不同类型是:

常规 -可选的标头,其中包含诸如当前时间之类的信息
请求 -向服务器提供有关客户端的更多信息
实体 -包含有关发送文档的特定信息,例如长度和编码方案。

请求体

包含用于需要它的方法的数据,Get 方法为空。

从服务器返回的响应也包含三个部分,就像我们在 HTTP 请求中看到的那样:

  • 响应行(状态码)
  • 标头信息
  • 包含响应中所有文本的正文

HTTP 状态码

在我们的示例中,状态代码为 200,表示一切正常。状态代码将根据原始请求发生的情况而有所不同。

可以从服务器返回的状态码是:

1xx – 100-199 范围内的响应表示服务器正在处理请求。
2xx – 200-299 范围内的响应表示请求成功。
3xx –响应范围在 300-399 之间表示未执行请求 - 需要采取进一步的措施。
4xx –响应范围为 400-499,表示请求不完整,可能需要更多信息。
5xx – 500-599 范围内的响应表示服务器遇到错误。

什么是 REST API?

REST(表示性传输状态)是用于使用 HTTP 协议开发 Web 服务的轻量级选项,这一事实使其比使用 SOAP 协议的 Web 服务更简单,开销也更少。当 API 遵循 REST 体系结构时,它称为 REST API。当围绕 REST 标准设计服务时,可以说使该服务 “ RESTful”。

REST API 由大量资源组成。这称为资源模型,它利用统一资源标识(URI)。URI 语法允许您指定一个查询,该查询从 REST API 返回所需的信息。REST 系统的主要元素是:

  • 资源是客户端请求从主机获取的信息,例如网页或数据库记录。
  • 资源标识符是用于命名资源的 URI。
  • 表示形式是服务器发送带有完成格式的资源的响应时。
  • REST API 测试(如何创建 REST API 测试)

什么是 JSON

JSON 代表 JavaScript Object Notation,并且被设计为轻量级的数据交换格式。JSON 无疑变得越来越流行,并且在某些情况下正在取代 XML 进行 API 数据交换。www.json.org 网站描述了如何在两种结构上构建 JSON:

“ 名称/值对的集合。在各种语言中,这被实现为对象,记录,结构,字典,哈希表,键列表或关联数组。
“值的有序列表。在大多数语言中,这是通过数组,向量,列表或序列来实现的。”

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)

相信能使你更好的进步!

点击下方小卡片

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

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

相关文章

Jenkins持续集成项目搭建 —— 基于Python Selenium自动化测试

第一步:去官网Jenkins下载最新的war包 第二步:安装.war包即:安装jinkens 打开命令窗口,进入.war包所在的路径下 执行java -jar jenkins.war命令 安装成功的标志如图2所示 在浏览器中试一下是否成功输入:0.0.0.0:8080进…

springboot乒乓球预约管理系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…

Oracle EBS更新付款银行帐户弹性域

批量更新 应用: 现金管理系统 标题: 银行帐户弹性域 create or replace PROCEDURE ML_UPDATE_BANK_ACCT_INFO(errbuf OUT VARCHAR2,retcode OUT VARCHAR2,ic_user_file IN VARCHAR2 ) ASTYPE T_BANK_ACCT ISRECORD(BANK_ACCOUNT_ID NUMBER(15),-- B…

springboot数码论坛系统

在国外很多发达国家,软件产业早已得到全面普及,但我国经济已不断发展,不断引进国外信息化建设,使国内软件行业得以不断发展,在摸索中进步,最终也得到一些成果,我国的软件业迎来了高速的发展&…

不同conda不同cuda环境变量

文章目录 更改虚拟环境中的环境变量删除虚拟环境的环境变量其他问题,参考:https://blog.csdn.net/mifangdebaise/article/details/124428380 参考了博客 conda虚拟环境内安装CUDA9.0 conda虚拟环境中设置环境变量关于 cuda 的详细安装参见: 记录自己 Ubu…

(CVPR-2019)用于人体姿势估计的深度高分辨率表示学习

用于人体姿势估计的深度高分辨率表示学习 paper题目:Deep High-Resolution Representation Learning for Human Pose Estimation paper是中国科学技术大学发表在CVPR 2019的工作 paper地址 Abstract 在本文中,我们对人体姿势估计问题感兴趣,…

什么是真正的骨传导耳机,列举出几款实用的骨传导耳机

骨传导耳机从发布到现在有了几年的时间,也有很多人开始了解,但真正去选购的人还是很少,如果你没有使用过骨传导耳机,在选购时会很迷茫。作为一个骨传导耳机的重度使用者,下面就给大家分享一下我的体验感受以及选购建议…

OpenCv色彩空间

目录 一、RGB 二、图像处理入门 三、色彩空间的转换 一、RGB 在表示图像时,有多种不同的颜色模型,但最常见的是红、绿、蓝(RGB) 模型RGB 模型是一种加法颜色模型,其中原色 (在RGB模型中,原色是红色 R、绿色 G 和蓝色 B)混合在…

selenium自动化测试工具

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。 查看chrome版本,114.05735.199 去 http://chromedriver.storage.googleapis.com/index.html 网…

【从零开始学爬虫】采集全国各地历年房价数据

l 采集网站 【场景描述】采集全国各地历年房价数据。 【源网站介绍】58同城—国内专业的“本地、免费、真实、高效”生活服务平台! 【使用工具】前嗅ForeSpider数据采集系统,免费下载: http://www.forenose.com/view/commodity/forespider…

正则表达式与“三贱客”

第三阶段基础 时 间:2023年7月11日 参加人:全班人员 内 容: 正则表达式与“三贱客” 目录 shell脚本的基本应用: 一、正则表达式与grep 2)正则表达式的组成 1)正则表达式grep常见的选项 2&…

《向量数据库指南》:向量数据库Pinecone关键概念和工作流程

目录 用例 关键概念 向量搜索 向量嵌入 向量数据库 工作流程 定价和部署选项 开始使用 介绍PINECONE向量数据库 Pinecone使构建高性能的向量搜索应用程序变得轻松。 它是一个托管的、云原生的向量数据库,具有简单的API和无需基础架构的优势。 Pinecone具有以下特…

[论文分享]SimMIM:一种简单的掩模图像建模框架

文章地址:https://arxiv.org/abs/2111.09886 代码地址:GitHub - microsoft/SimMIM: This is an official implementation for "SimMIM: A Simple Framework for Masked Image Modeling". 1 摘要 本文介绍了SimMIM,这是一个用于掩模…

React初学者需要的库从哪里下载?

在react官网下载react.js的方法介绍 1、访问react的github官方页面 访问地址为:Downloads | Reacthttps://react-cn.github.io/react/downloads.html 2、点击Download页面中的"Download Starter Kit"按钮,进行下载 学react的时候用到了babe…

波士顿矩阵模型:产品定位

波士顿矩阵 波士 顿 矩 阵 (BCG Matrix) 又称市 场 增 长 率 — 相 对 市 场 份 额 矩 阵 、波士顿咨 询 集 团 法、四象限分析法、 产 品系列 结 构管理法等。 波士 顿 矩 阵是由美国大型商业 咨 询 公司 —— 波士 顿 咨 询 集 团 首 创 的一种 规 划企业产品 组 合的方法。…

什么是统一建模语言(UML)UML与UML类图的基本概念

什么是统一建模语言UML(Unified Modeling Language) UML(统一建模语言)是一种通用的建模语言,用于描述软件系统的结构、行为和交互。它提供了一组符号和规则,用于创建可视化的图形模型,帮助开发…

【雕爷学编程】Arduino动手做(149)---MAX9814咪头传感器模块6

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

resolvecomreference任务返回了false,但未记录错误

IDE从VS2015升级到了VS2022,然后就报了这个错,百度搜了下,没有啥结果,后来发现,2015可以用的一个dll在2022不能用了,把不能用的dll移除即可

VxLAN学习

目录 什么是VXLAN 为什么需要VXLAN 虚拟机动态迁移,要求提供一个无障碍接入的网络 什么是服务器虚拟化技术? 什么是虚拟机动态迁移? VXLAN如何满足虚拟机动态迁移时对网络的要求? 数据中心租户数量激增,要求提供…

TIOBE 2023年7月编程语言排行榜:C++即将超越C!

一、TIOBE统计数据(2023年7月) TIOBE Index编程社区指数是编程语言流行度的一个指标。评级基于全球熟练工程师的数量、课程和第三方供应商的数量。Google、Bing、Yahoo!、维基百科、亚马逊、YouTube 和百度等流行搜索引擎用于计算评级。 七月头条&#…