API自动化测试你以为很难?看完这篇文章直接打开你的任督二脉

API测试已成为日常的测试任务之一,为了提高测试效率,减少重复的手工操作,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自动化。

三、API测试金字塔

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”一词时,都不会感到不安,而是13号恐怖电影《星期五》中杰森的恐怖形象浮现在我的脑海。

但是实际上,JSON只是另一个无害的技术首字母缩写,您很快就会发现它没什么好害怕的。

什么是JSON

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

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

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单调栈题目总结

单调栈 496. 下一个更大元素 I 503. 下一个更大元素 II 739. 每日温度 6227. 下一个更大元素 IV 模版归纳 「单调栈」顾名思义就是具有单调性的栈结构,一般常用于找到下一个更大的元素,即当前元素右侧第一个更大的元素 看下面一个例子&#xff1a…

消毒柜行业分析:市场渗透率不足20%

目前消毒柜仍然属于“小众”品类,疫情前期市场渗透率也不足20%。有业内人士表示,多年来消毒柜零售量规模基本在400万台左右徘徊,这个角度看,消毒柜是具有自身的产品消费人群的,其市场相对稳定,而且消毒柜的…

DoRA(权重分解低秩适应):一种新颖的模型微调方法

来自:小互 DoRA(权重分解低秩适应):一种新颖的模型微调方法 DoRA在LoRA的基础上进一步发展,通过将预训练权重分解为“幅度”和“方向”两个部分进行微调。 这种权重分解方法允许DoRA更精细地控制模型的学习过程&…

error: ‘QWidget‘ file not found

说明你没有加载 widgets模块 缺少widgets,就报错

mysql 2-17

UNION关键字和UNION ALL 自然连接 USING使用 函数 单行函数 基本函数 三角函数 指数和对数 进制间的转换 字符串函数 时间和日期函数 计算日期和时间的函数 日期的格式化和解析 流程控制函数

这样用TVS管

对于工程师来说,浪涌保护不仅仅是选择合适的电源板或者拔下几根电缆,主要涉及在 PCB 布局中放置瞬态保护组件并应用明确的接地策略。 TVS 二极管是用于保护PCB布局中组件的常用组件,这些组件放置在数据线上,一旦电路中接收到ESD脉…

激活函数30年回顾总结,全paper第一份详尽研究来了!

B站:啥都会一点的研究生公众号:啥都会一点的研究生 新年好,离退休又近了一年 假期躺平未更新,但该保存的素材及热点还是拿小本本记了下来,如这篇今年2月14号arXiv上发表的长达100页神经网络中激活函数大总结文章就进…

综合练习

目录 查询每个员工的编号、姓名、职位、基本工资、部门名称、部门位置 确定要使用的数据表 确定已知的关联字段 查询每个员工的编号、姓名、职位、基本工资、工资等级 确定要使用的数据表 确定已知的关联字段 查询每个员工的编号、姓名、职位、基本工资、部门名称、工资…

string的用法

概念 可代替字符数组来存储字符串 访问 string name[i];//下标访问 string::iterator it;//迭代器访问常用函数 1.begin():获得字符串首地址 2.end():获得字符串末地址 3.:字符串的加法,可将两个字符串拼接起来 4.比较符:,>…

GET与 POST

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) GET 和 POST 有什么区别? 根据 REC 规范,GET的语义是从服务器获取指定的资源,这个资源可以是静态的文本、页面、图片视频等。GET请求的参数位置一般是写在 URL 中,UR…

Python Selenium实现自动化测试及Chrome驱动使用!

本文将介绍如何使用Python Selenium库实现自动化测试,并详细记录了Chrome驱动的使用方法。 通过本文的指导,读者将能够快速上手使用Python Selenium进行自动化测试。 并了解如何配置和使用Chrome驱动来实现更高效的自动化测试。 一、Python Selenium简…

ClickHouse监控及备份

第1章 ClickHouse监控概述 第2章 Prometheus&Grafana的安装 第3章 ClickHouse配置 第4章 Grafana集成Prometheus 第5章 备份及恢复

2024 前端面试题(GPT回答 + 示例代码 + 解释)No.114 - No.121

本文题目来源于全网收集,答案来源于 ChatGPT 和 博主(的小部分……) 格式:题目 h3 回答 text 参考大佬博客补充 text 示例代码 code 解释 quote 补充 quote 上一篇链接:2024 前端面试题(GPT回答 示例…

Linux系统:iptables 防火墙

目录 一、安全技术与防火墙 1、安全技术概念 2、防火墙 2.1 防火墙概念 2.2 防火墙分类 2.3 linux的防火墙Netfilter 2.4 防火墙工具介绍 2.5 netfilter 和 iptables 的关系 二、iptables 1、概念 2、五表五链 2.1 五个table表 2.2 五个chain链 2.3 内核中数据包…

全网最详细的从0到1的turbo pnpm monorepo的前端工程化项目[搭建篇]

全网最详细的从0到1的turbo pnpm monorepo的前端工程化项目[搭建篇] 引言相关环境技术栈初始化工程安装turbo配置pnpm-workspace安装husky安装lint-staged安装eslint安装prettier配置 .editorconfig配置 .gitignore初步项目结构结语 引言 最近各种原因,生活上的&am…

PHP支持的伪协议

php.ini参数设置 在php.ini里有两个重要的参数allow_url_fopen、allow_url_include。 allow_url_fopen:默认值是ON。允许url里的封装协议访问文件; allow_url_include:默认值是OFF。不允许包含url里的封装协议包含文件; 各协议的利用条件和方法 php:/…

机器人内部传感器-位置传感器-电位器式位置传感器

位置传感器 位置感觉是机器人最基本的感觉要求,可以通过多种传感器来实现。位置传感器包括位置和角度检测传感器。常用的机器人位置传感器有电位器式、光电式、电感式、电容式、霍尔元件式、磁栅式及机械式位置传感器等。机器人各关节和连杆的运动定位精度要求、重…

【Java】图解 JVM 垃圾回收(一):GC 判断策略、引用类型、垃圾回收算法

图解 JVM 垃圾回收(一) 1.前言1.1 什么是垃圾1.2 内存溢出和内存泄漏 2.垃圾回收的定义与重要性3.GC 判断策略3.1 引用计数算法3.2 可达性分析算法 4.引用类型5.垃圾回收算法5.1 标记-复制(Copying)5.2 标记-清除(Mark…

Diffusion Model——扩散模型

Diffusion Model 文章目录 Diffusion ModelDenoising Diffusion Probabilistic Model(DDPM)去噪过程:Denoise结构训练过程Text-to-image Generation Model High Resolution Image Synthesis With_Latent Diffusion Models (Stable Diffusion)基本结构与推理过程Text…

【OpenAI Sora】 最强文生视频怎么用-新手小白必看教程

1. Sora 是什么AI 2024年2月16日,OpenAI在其官网上面正式宣布推出文本生成视频的大模型 Sora。 Sora能够根据简单的文本描述,生成高达60秒的高质量视频,使得视频创作变得前所未有的简单和高效。本文将为您提供关于如何使用Sora的最新详细教程…