先做网站还是做APP/重庆网站推广软件
API测试已经成为测试工作中的常规任务之一。为了提高测试效率并减少重复的手工操作,API自动化测试变得越来越重要。本文总结了API自动化测试方面的经验和心得,旨在与读者分享。
掌握自动化技能已经成为高级测试工程师的必备技能。敏捷和持续测试改变了传统测试自动化的做法,使得测试工程师不得不重新思考自动化的实施方式。如今,自动化工程师需要深入到API级别,通过API测试来保证软件的质量。
以下是API测试的基本使用指南:
一、什么是API测试?
API测试是指绕过用户界面,直接与应用程序后端或服务进行通信的测试。通过调用API来发送请求并验证响应内容,以确保应用程序按预期工作。
在这种测试中,客户端通过请求资源来发出请求,并寻找能够满足请求的服务器。服务器找到所需的资源,并将响应发送回客户端。
二、为什么API测试如此重要?
随着敏捷开发成为大多数互联网公司的标准,我们对软件开发和自动化测试的方式发生了巨大变化。在敏捷开发之前,大部分自动化测试都是通过图形用户界面(GUI)完成的。这些测试往往耗时,容易出错且难以维护。
然而,如果您已经进行了一段时间的自动化测试,您就会意识到这种方式的局限性。企业投入大量资金来创建自己的GUI测试自动化框架,但往往最终导致对可靠性失去信心,直到人们停止投入。
此外,GUI测试往往需要很长时间来完成。对于敏捷实践中的一些场景,例如持续构建,无法接受等待GUI回归测试套件的反馈时间。
API测试能够提供更快的反馈。在发现错误的早期阶段,开发人员可以立即知道他们的代码更改是否破坏了构建,从而需要进行修复。在测试驱动的流程中,需要大量的测试集来进行快速且频繁的运行,并且必须能够将它们整合到开发周期中。
GUI测试仍然非常重要,因为它是唯一能够真正测试用户在实际生产环境中如何体验应用程序的测试类型。某些缺陷只能通过GUI测试来捕获。尽管GUI测试至关重要,但它不应该是唯一关注的自动化类型,也不应该占据自动化测试总量的大部分。
敏捷开发更关注可靠的API层次下的测试,而较少涉及GUI自动化。
三、API测试金字塔
GUI测试:GUI测试专注于测试应用程序的用户界面,以确保其功能正确。它位于金字塔的顶部,占据了自动化测试类型总数中的一小部分。
单元测试:单元测试构成了金字塔的最底部,也是最大的部分。它用于验证源代码的单个单元(例如方法),开发人员可以通过此方式隔离代码中最小的可测试部分。单元测试最容易创建并且收益最大。由于单元测试通常使用与应用程序开发相同的编程语言编写,因此开发人员可以轻松地将其纳入开发流程中。
API测试:API测试位于金字塔的中间层,用于验证多个组件的交互是否无误。由于API测试绕过了用户界面,因此比GUI测试更快速、可靠。最重要的是,由于API测试不依赖于GUI,因此可以在开发周期的早期创建。
四、API负载测试
API测试的另一个好处是可以利用相同的功能性API自动化测试来进行性能测试。许多公司使用JMeter进行负载测试,而这些测试用例都是基于API功能测试构建的。
基本思想是,您正在使用工具进行性能测试,但是在针对您的API运行例如负载测试之前,需要确保它实际上可以正常工作。因此,您想先进行功能测试,然后可以利用功能测试脚本完成性能测试。
因此,API测试脚本是性能测试工作流程中的一大优势。
五、如何进行Web服务测试
测试Web服务与测试其他应用程序类似,只是在Web服务中,没有图形用户界面(GUI)这个区别。因此,我们仍然可以使用常规功能测试技术,只需将Web服务视为没有业务流程的应用程序,并相应地编写测试用例。
以下是一些在自动化Web服务测试中需要考虑的问题:
-
服务是否正确响应并返回正确的值?
-
服务的行为是否符合最终用户的预期?
-
服务响应时间是否在可接受范围内?
-
服务能否处理预期和意外的用户负载?
-
服务能否处理无效数据和错误数据导致的异常?
Web服务测试术语 对于大多数测试人员来说,最大的挑战是适应Web服务测试中使用的术语。
例如:
-
XML格式:XML是一种标记语言,允许用户定义自己的标签,并通过Internet与其他系统共享结构化数据。
-
REST:REST(Representational State Transfer)是一种轻量级的用于开发使用HTTP协议的Web服务的选项。
六、HTTP
HTTP是一种用于通过网络传输消息的通信协议。HTTP被称为无状态协议,因为每个请求都是独立的,不依赖于之前的请求。
Cookies用于跟踪先前请求的状态。它们是存储在客户端上的文件,包含从HTTP标头信息中提取的数据。当用户再次访问网站时,存储在Cookies中的信息将被发送回浏览器。这样,网站可以记住先前的活动和当前状态。
理解HTTP对于掌握大多数API测试工具的功能非常重要。
关于HTTP请求 HTTP客户端请求由三个主要部分组成:
-
请求行(HTTP方法):告诉服务器正在发出的请求类型。常见的HTTP方法有GET、POST、PUT、DELETE等。
-
标头:包含额外的信息,如浏览器、操作系统、接受类型和Cookie信息。
-
请求体:包含对应请求方法所需的数据,GET方法为空。
服务器返回的响应也由三个部分组成:
-
响应行(状态码):表示请求的状态,常见的状态码有200表示一切正常。
-
标头信息:包含响应的其他信息。
-
正文:包含响应的文本内容。
HTTP状态码根据请求的情况而不同,200表示一切正常,其他状态码表示不同的情况。
可以从服务器返回的状态码是:
1xx – 100-199范围内的响应表示服务器正在处理请求。
2xx – 200-299范围内的响应表示请求成功。
3xx –响应范围在300-399之间表示未执行请求-需要采取进一步的措施。
4xx –响应范围为400-499,表示请求不完整,可能需要更多信息。
5xx – 500-599范围内的响应表示服务器遇到错误
相关文章:

API自动化测试是什么?我们该如何做API自动化测试呢?
API测试已经成为测试工作中的常规任务之一。为了提高测试效率并减少重复的手工操作,API自动化测试变得越来越重要。本文总结了API自动化测试方面的经验和心得,旨在与读者分享。 掌握自动化技能已经成为高级测试工程师的必备技能。敏捷和持续测试改变了传…...

PyTorch 的 10 条内部用法
欢迎阅读这份有关 PyTorch 原理的简明指南[1]。无论您是初学者还是有一定经验,了解这些原则都可以让您的旅程更加顺利。让我们开始吧! 1. 张量:构建模块 PyTorch 中的张量是多维数组。它们与 NumPy 的 ndarray 类似,但可以在 GPU …...

Django、Echarts异步请求、动态更新
前端页面 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>echarts示例</title> <script src"jquery.min.js"></script><script type "text/javascript" src "echarts.m…...

Mac部署Odoo环境-Odoo本地环境部署
Odoo本地环境部署 安装Python安装Homebrew安装依赖brew install libxmlsec1 Python运行环境Pycharm示例配置 Mac部署Odoo环境-Odoo本地环境部署 安装Python 新机,若系统没有预装Python,则安装需要版本的Python 点击查询Python官网下载 安装Homebrew 一…...

【✅面试编程题:如何用队列实现一个栈】
✅面试编程题:如何用队列实现一个栈 💡典型回答 💡典型回答 使用两个队列可以实现一个栈,一个队列用来存储栈中的元素,另一个队列用来在pop操作时暂存元素。 上才艺: import java.util.LinkedList; impo…...

Windows本地的RabbitMQ服务怎么在Docker for Windows的容器中使用
1. 进入管理界面 windows安装过程请访问:Windows安装RabbitMQ、添加PHP的AMQP扩展 浏览器访问:http://127.0.0.1:15672/ 2. 创建虚拟主机 上面访问的是 RabbitMQ 的管理界面,可以在这个界面上进行一些操作,比如创建虚拟主机、…...

YOLOv5改进 | 2023卷积篇 | AKConv轻量级架构下的高效检测(既轻量又提点)
一、本文介绍 本文给大家带来的改进内容是AKConv是一种创新的变核卷积,它旨在解决标准卷积操作中的固有缺陷(采样形状是固定的),AKConv的核心思想在于它为卷积核提供了任意数量的参数和任意采样形状,能够使用任意数量…...

微信小程序:模态框(弹窗)的实现
效果 wxml <!--新增(点击按钮)--> <image classimg src"{{add}}" bindtapadd_mode></image> <!-- 弹窗 --> <view class"modal" wx:if"{{showModal}}"><view class"modal-conten…...

uniapp交互反馈api的使用示例
官方文档链接:uni.showToast(OBJECT) | uni-app官网 1.uni.showToast({}) 显示消息提示框。 常用属性: title:页面提示的内容 image:改变提示框默认的icon图标 duration:提示框在页面显示多少秒才让它消失 添加了image属性后。 注…...

XUbuntu22.04之HDMI显示器设置竖屏(一百九十八)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...

如何用 Cargo 管理 Rust 工程系列 甲
以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/ceMTUzRjDoiLwjn_KfZSrg 这几年 Rust 可谓是炙手可热的新兴编程语言了,而且被投票为最受程序员喜爱的语言。它很现代,专门…...

Windows下ping IP+端口的方法
有两种方法: 1. windows 开通 telnet 参考: https://zhuanlan.zhihu.com/p/570982111 2. 安装插件 参考:Windows下ping IP端口的方法 推荐使用第二种。...

【python】os.getcwd()函数详解和示例
os.getcwd() 是 Python 的一个内建函数,用于获取当前工作目录的路径。这个函数属于 os 模块,需要导入这个模块才能使用它。 import os data_rootos.path.abspath(os.path.join(os.getcwd(),"../.."))# get data root path data_root1os.path.…...

Linux(二十一)——virtualenv安装成功之后,依然提示未找到命令(-bash: virtualenv: 未找到命令)
Linux(二十一)——virtualenv安装成功之后,依然提示未找到命令(-bash: virtualenv: 未找到命令) 解决办法: 创建软连接 ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv...

RNN介绍及Pytorch源码解析
介绍一下RNN模型的结构以及源码,用作自己复习的材料。 RNN模型所对应的源码在:\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 RNN的模型图如下: 源码注释中写道,RNN的数学公式: 表示在时刻的隐藏状态…...

Qt 文字描边(基础篇)
项目中有时需要文字描边的功能 1.基础的绘制文字 使用drawtext处理 void MainWindow::paintEvent(QPaintEvent *event) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);painter.setRenderHint(QPainter::SmoothPixmapTransform, true);painte…...

.360勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
导言: 在数字化时代,.360勒索病毒如影随形,威胁个人和组织的数据安全。本文将深入介绍.360病毒的特征、威胁,以及如何有效地恢复被加密的数据文件,同时提供预防措施,助您更好地保护数字资产。如不幸感染这…...

Nginx(四层+七层代理)+Tomcat实现负载均衡、动静分离
一、Tomcat多实例部署 具体步骤请看我之前的博客 写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/134956765?spm1001.2014.3001.9457 1.1 访问测试多实例的部署 1.2 分别在三个tomcat服务上部署jsp的动态页面 mkdir /usr/local/tomcat/webapps/test vim …...

【前端】vscode 相关插件
一 插件: 01、ESLint 用来识别并检查ECMAScript/JavaScript 代码的工具 02、Prettier 用来格式化代码,如.js、.vue、css等都可以进行格式化 03、Vetur 用来识别并高亮vue语法 04、EditorConfig 用来设置vscode的编程行为 二、安装依赖 01、…...

【MySQL】MySQL库的增删查改
文章目录 1.库的操作1.1创建数据库1.2创建数据库案例 2.字符集和校验规则2.1查看系统默认字符集以及校验规则2.2查看数据库支持的字符集2.3查看数据库支持的字符集校验规则2.4校验规则对数据库的影响 3.操纵数据库3.1查看数据库3.2显示创建语句3.3修改数据库3.4数据库删除3.5备…...

基于基于深度学习的表情识别人脸打分系统
1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着人工智能技术的快速发展,深度学习在计算机视觉领域取得了巨大的突破。表情识别是计算机视觉领域的一个重要研究方向,它可以通过分析人…...

Linux|操作系统|Error: Could not create the Java Virtual Machine 报错的解决思路
现在都流行kubernetes这样的云原生了,因此,很多Java微服务也都集成到类似kubernetes这样的环境下了,毫无疑问的,kubernetes会省去很多环境问题,而最近在部署一个二进制Java项目的时候,遇到了Error: Could n…...

K8S学习指南-minikube的安装
简介 Minikube 是一个用于在本地开发环境中运行 Kubernetes 集群的工具。它允许开发人员在单个节点上体验 Kubernetes,无需配置复杂的生产环境。本指南将详细介绍在 Windows、CentOS 和 Ubuntu 系统上安装 Minikube 的步骤。 1. Windows 系统安装 1.1 ࿱…...

恒创科技:有哪些免费的CDN加速服务
CDN加速技术已经成为提升网站性能和用户体验的重要手段之一。许多网站都使用CDN来加速内容传输,提高网站的响应速度和可用性。然而,对于许多小型企业和个人网站来说,使用CDN服务需要支付一定的费用。那么,有没有免费的CDN加速服务…...

Kibana搜索数据利器:KQL与Lucene
文章目录 一、搜索数据二、KQL查询1、字段搜索2、逻辑运算符3、通配符4、存在性检查5、括号 三、Lucene查询1、字段搜索2、逻辑运算符3、通配符4、范围搜索5、存在性检查6、括号 四、总结 一、搜索数据 默认情况下,您可以使用 Kibana 的标准查询语言,该…...

float32、int8、uint8、int32、uint32之间的区别
float32、int8、uint8、int32、uint32这些类型在数据表示范围、精度和存储大小等方面存在明显的差异。 float32:是一种单精度浮点数,占32位(也就是4个字节),可以提供约7位有效数字的精度。这种数据类型通常用于需要高…...

百度搜索展现服务重构:进步与优化
作者 | 瞭东 导读 本文将简单介绍搜索展现服务发展过程,以及当前其面临的三大挑战:研发难度高、架构能力欠缺、可复用性低,最后提出核心解决思路和具体落地方案,期望大家能有所收货和借鉴。 全文4736字,预计阅读时间12…...

icmp协议、ip数据包 基础
icmp协议、ip数据包 ICMP 协议 1 定义与用途: ICMP(Internet Control Message Protocol)定义: ICMP 是 Internet Control Message Protocol(互联网控制消息协议)的缩写。它是 TCP/IP 网络模型中的一个核…...

es6从url中获取想要的参数
第一种方法 很古老,通过 split 方法慢慢截取,可行是可行但是这个方法有一个弊端,因为 split 是分割成数组了,只能按照下标的位置获取值,所以就是参数位置一旦发生变化,那么获取到的值也就错位了 let user…...

【elementui笔记:el-table表格的输入校验】
之前做得比较多的校验是在el-form表单里做的,但有时也遇到,需要在table内输入数据,然后校验输入的数据是否符合要求的情况。因此记录一下。 思路: 1.需要借助el-form的校验,el-table外层嵌套一层el-form,使…...