API 测试 | 了解 API 接口测试 | API 接口测试指南

什么是 API?

API 是一个缩写,它代表了一个 pplication P AGC 软件覆盖整个房间。API 是用于构建软件应用程序的一组例程,协议和工具。API 指定一个软件程序应如何与其他软件程序进行交互。

例行程序:执行特定任务的程序。例程也称为过程,函数或子例程。

协议:在两个系统之间传输数据的格式。

简单地说,API 代表一个 pplication P AGC 软件覆盖整个房间。API 充当两个软件应用程序之间的接口,并允许两个软件应用程序相互通信。API 是可以由另一个软件程序执行的软件功能的集合。

让我们以更平易近人的方式查看一些 API 示例。

假定 API 是餐厅服务员

在餐厅,您可以根据菜单上的可用商品下订单。餐厅的服务员写下您的订单,然后将其交付给准备餐点的厨房。饭食准备好后,服务员从厨房拿起您的食物,并在您的餐桌旁将其提供给您。

在这种情况下,服务员的角色类似于 API。作为服务员,API 从源接收请求,将该请求接收到数据库,从数据库中获取请求的数据,然后将响应返回给源。

现在让我们来看另一个例子。​

如果您使用的是航班服务引擎,请说出 Expedia,在其中搜索特定日期的航班。出发地,目的地,到达日期和返回日期等数据后,单击搜索。Expedia 根据您的搜索详细信息通过 API 向航空公司发送请求。然后,API 将航空公司对您的请求的响应发送回 Expedia。

API 从用户那里获取请求并给出响应,而不会暴露内部逻辑。API 就像一个抽象的 OOPS 概念。

什么是 API 测试?

API 测试是一种软件测试,涉及直接测试 API,并且是集成测试的一部分,以检查 API 是否在应用程序的功能,可靠性,性能和安全性方面达到期望。在 API 测试中,我们的主要重点是软件体系结构的业务逻辑层。API 测试可以在包含多个 API 的任何软件系统上执行。API 测试不会专注于应用程序的外观。API 测试与 GUI 测试完全不同。

让我们看看 UI 测试与 API 测试有何不同?

UI(用户界面)测试是测试应用程序的图形界面部分。它的主要重点是测试应用程序的外观。另一方面,API 测试支持两个不同软件系统之间的通信。它的主要重点是应用程序的业务层。

API 测试类型?

API 测试通常涉及以下实践:

  • 单元测试: 测试单个操作的功能
  • 功能测试: 通过使用一起测试的一组单元测试结果来测试更广泛场景的功能
  • 负载测试: 测试负载下的功能和性能
  • 运行时 / 错误检测: 监视应用程序以识别问题,例如异常和资源泄漏
  • 安全测试:  确保 API 的实施不受外部威胁的影响
  • UI 测试:此测试  是端到端集成测试的一部分,以确保用户界面的各个方面都能按预期运行
  • 互操作性和 WS 一致性测试:  互操作性和 WS 一致性测试是一种适用于 SOAP API 的测试类型。通过确保符合 Web 服务互操作性概要文件来检查 SOAP API 之间的互操作性。 对 WS- * 遵从性进行了测试,以确保诸如 WS-Addressing,WS-Discovery,WS-Federation,WS-Policy,WS-Security 和 WS-Trust 等标准得到正确实施和利用
  • 渗透测试:  查找来自攻击者的应用程序漏洞
  • 模糊测试:  通过强制输入系统来测试 API,以尝试强制崩溃

API 的常见测试:

我们在 API 上执行的一些常见测试如下。

  • 验证返回值是否基于输入条件。应根据请求验证 API 的响应。
  • 在 API 更新任何数据结构时验证系统是否正在验证结果
  • 验证 API 是触发其他事件还是请求其他 API
  • 在没有返回值的情况下验证 API 的行为

API 测试的优势:

  • 与 GUI 测试相比,API 测试是省时的。API 测试自动化需要更少的代码,因此可以提供更快,更好的测试范围。
  • API 测试可帮助我们降低测试成本。通过 API 测试,我们可以在 GUI 测试之前发现一些小错误。这些小错误将在 GUI 测试期间变得更大。因此,在 API 测试中发现这些错误对公司而言是具有成本效益的。
  • API 测试是独立于语言的。
  • API 测试对测试核心功能很有帮助。我们可以在没有用户界面的情况下测试 API。在 GUI 测试中,我们需要等到应用程序可用以测试核心功能。
  • API 测试可帮助我们降低风险。

API 测试中到底需要验证什么?

基本上,在 API 测试中,我们使用已知数据向 API 发送请求,然后分析响应。

  • 资料准确性
  • HTTP 状态码
  • 响应时间
  • API 返回任何错误时的错误代码
  • 授权检查
  • 非功能测试,例如性能测试,安全性测试

用于 API 测试的工具:

用于 API 测试的一些工具如下:

  • Postman
  • Katalon Studio
  • SoapUI
  • Assertible
  • Tricentis Tosca
  • Apigee
  • JMeter
  • Rest-Assured
  • Karate DSL
  • API Fortress
  • Parasoft
  • HP QTP(UFT)
  • vREST
  • Airborne
  • API Science
  • APIary Inspector
  • Citrus Framework
  • Hippie-Swagger
  • HttpMaster Express
  • Mockbin
  • Ping API
  • Pyresttest
  • Rest Console
  • RoboHydra Server
  • SOAP Sonar
  • Unirest
  • WebInject

API 测试和单元测试之间的区别?

单元测试:

  • 单元测试由开发团队进行
  • 单元测试是白盒测试的一种形式
  • 在将代码包含在构建中之前,先进行单元测试
  • 源代码涉及单元测试
  • 在单元测试中,测试范围是有限的,因此仅考虑基本功能进行测试

API 测试:

  • API 测试由质量检查小组进行
  • API 测试是黑盒测试的一种形式
  • API 测试在构建可用于测试之后进行
  • API 测试中不涉及源代码
  • 在 API 测试中,测试的范围很广,因此要考虑所有正常运行的问题以进行测试

API 测试中的挑战:

在进行 API 测试时,我们面临的一些挑战如下

  • 选择合适的参数及其组合
  • 正确分类参数
  • 需要正确的呼叫排序,因为这可能导致测试覆盖范围不足
  • 验证和验证输出
  • 由于没有 GUI,因此很难提供输入值

我们在执行 API 测试时会遇到的错误类型:

    执行 API 测试时观察到的问题是

  • 压力,性能和安全性问题
  • 功能重复或缺失
  • 可靠性问题
  • 消息传递不当
  • 不兼容的错误处理机制
  • 多线程问题
  • 错误的错误

API 测试最佳做法:

  • 测试预期结果
  • 发送一系列 API 负载测试,给系统增加压力
  • 按测试类别对 API 测试用例进行分组
  • 使用所有可能的输入组合创建测试案例,以完整地覆盖测试
  • 优先处理 API 函数调用,使其易于测试
  • 创建测试以处理无法预料的问题
  • 尽可能自动执行 API 测试

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

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

相关文章

Redux的基本使用详解(从入门到入土)

Redux的基本使用过程详解 学习文档 中文文档: http://www.redux.org.cn/ 英文文档: https://redux.js.org/ Github: https://github.com/reactjs/redux 一,redux是什么 1,介紹: redux是一个专门用于做状态管理的JS库(不是react插件库)。它…

程序员讨厌的“笔试题”,还有存在的必要性吗?

面试,是我们拿到offer的必经之地,在面试中我们会遇到各种“刁难”,而让程序员最为排斥的,非“笔试题”莫属。 △ 截图来源脉脉,如侵删 为什么程序员越来越排斥做面试题呢?我们先来看看网友们的说法&#x…

【Vue2从入门到精通】深入浅出,带你彻底搞懂Vue2组件通信的9种方式

文章目录Vue组件间通信分类1.props / $emit1.1 父组件向子组件传值1.2 子组件向父组件传值2.$parent / $children3.ref / $refs3.1 ref作用于组件3.2 ref作用于Html标签3.3 $nextTick()4.EventBus ($emit / $on)4.1 初始化4.2 发送事件4.3 接收事件4.4 移…

博客首页效果

学习来自风宇blog的博客首页效果 全部用的基本上都是原生的html,css,js特别是flex布局的使用,主轴方向可以是横轴,也可以是纵轴,弹性项还可可以使用百分比sticky粘性布局,作为侧边栏,它不会超出…

分享一个国内可用的免费ChatGPT网站

背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具,近期的热度直接沸腾🌋。 作为一个程序员,我也忍不住做了一个基于ChatGPT的网站,免费!免登陆!!国内可直接对话ChatGPT,也…

c++类和对象

🙆🏼关注作者:玺子写代码 ✍️gitee:玺子写代码 目录👉🏻类的定义👉🏽类的两种定义方式👉🏼类的访问限定符及封装👉🏽访问限定符&…

ML@sklearn@ML流程Part3@AutomaticParameterSearches

文章目录Automatic parameter searchesdemomodel_selection::Hyper-parameter optimizersGridSearchCVegRandomizedSearchCVegNoteRandomForestRegressorMSEpipeline交叉验证🎈egL1L2正则Next stepsUser Guide vs TutorialAutomatic parameter searches Automatic p…

6 计时器(一)

计时器 6.1 TIM TIM简介 TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中…

如何在现实场景中随心放置AR虚拟对象?

随着AR的发展和电子设备的普及,人们在生活中使用AR技术的门槛降低,比如对于不方便测量的物体使用AR测量,方便又准确;遇到陌生的路段使用AR导航,清楚又便捷;网购时拿不准的物品使用AR购物,体验更…

Spring-aop面向切面

1、理解必要的专业术语 先看看上面图,这是我的个人理解。(画的丑,主打真实) 1)Advice,通知/增强:类方法中提出来的共性功能(大白话就是提出来的重复代码) 2)Pointcut,切入点/切点&#…

centos7修改ip

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

uniapp国际化配置

1、创建资源文件 创建一个locale文件夹,新增index.js,en.json,zh-hans.json 2.配置locale文件夹中的index.js文件 import Vue from vue import VueI18n from vue-i18n// v8.x import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from .…

Redis大key问题

Redis大key问题 什么是big key? bigKey的危害: 大key不仅仅是占用内存而已,如果是仅仅内存的问题 那么扩大内存就好了。禁止大key是主要是因为你操作redis,比如说读/写等操作redis的时候 会有io操作,大key会导致io操作…

【K8S】k8s中secret使用方法

secret可以加密用户名和密码文件,将其打包成一个secret并在API服务器上创建对象 echo -n admin > ./username.txt echo -n xvagaxx > ./password.txt将username.txt和password.txt打包成secret kubectl create secret generic db-user-pass \--from-file./u…

【Mysql系列】——详细剖析数据库中的存储引擎

【Mysql系列】——详细剖析数据库中的存储引擎😎前言🙌存储引擎什么是存储引擎?Mysql的体系结构:Mysql的体系结构分为四层:连接层服务层引擎层存储层存储引擎的查看存储引擎的指定存储引擎的特点InnoDB介绍InnoDB特点I…

客户反馈终极指南

客户反馈包括客户在交易后分享的有关产品或服务体验的所有信息、问题和输入。 客户反馈可帮助公司改善他们提供的客户体验,并可以在企业内产生积极的变化和增长。无论是正面的还是负面的,客户反馈都有助于调整您的产品和服务,以满足并超越客户…

基于vivado(语言Verilog)的FPGA学习(5)——跨时钟处理

基于vivado(语言Verilog)的FPGA学习(5)——跨时钟处理 1. 为什么要解决跨时钟处理问题 慢时钟到快时钟一般都不需要处理,关键需要解决从快时钟到慢时钟的问题,因为可能会漏信号或者失真,比如&…

Python零基础自学

很多零基础想做程序员的同学,最开始接触的基本上都是 Python 作为常年霸榜的 “最好上手的编程语言” ——Python,深受互联网大厂的喜爱。 而很多小伙伴反应,在刚开始学Python时遇到不少问题: 比如找不到学习资源,不…

Linux系统centos7关闭防火墙命令

CentOS 7使用的防火墙是firewalld,要关闭防火墙可以使用以下命令: 1. 停止firewalld服务: systemctl stop firewalld 2. 禁止firewalld服务开机启动: systemctl disable firewalld 3. 查看firewalld服务状态: sys…

java 线程池

一.简单的线程池设计: 线程池的执行示意图: 二. 线程池的核心参数: 三.线程池的处理流程: 四.线程池的阻塞队列: 1.基于数组的有界阻塞队列 2.基于链表的有界阻塞队列 3.基于链表的无界阻塞队列 4.同步移交阻塞队列…