API接口的概念和接口测试的概念

一、什么是接口测试

        接口测试是项目测试的一部分,顾名思义,它测试的主要对象是接口,是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点。测试的重点是检查数据交互、传递、和控制管理过程以及系统间的相互依赖关系等。

二、接口测试的概念

三、接口测试的目的

        接口测试 是测试接口,尤其是那些与系统相关联的外部接口。 接口测试 的核心战略在于:以保证系统的正确和稳定为核心,以持续集成为手段,提高测试效率,提升用户体验,降低产品研发成本。 质量管理的 目标是保证系统的正确和稳定, 接口测试 作为软件质量管理的一部分也保证系统正确和稳定,更准确地说是保证系统服务端的正确和稳定。

四、如何进行接口测试

(1)首先,明确出发点

        和所有的测试一样,接口测试出发点是你要证明所测的程序是错误的。以这个出发点为导向,你的设计行为就会尽量朝这个方向发展,更易发现问题,不会出现大方向的偏差

其次,选择好测试对象

        对于一个系统做接口测试选择好的测试对象是接口测试关键。一个系统有无数的接口,每个接口如果分别测试,那将是很痛苦的一件事情,不光繁琐浪费,而且任何一个内部接口的变动,都将导致我们用例的不可用。推荐把整个系统作为一个整体,选择整个系统提供给外部使用、交互的最外层接口作为测试对象,以此为测试对象的用例将有很好的健壮性,并且更高效。

(2)另外,根据数据的流向,又可将这些最外层的接口分为两类:一类是数据进入系统的接口;一类是数据流出系统的接口。进入系统的接口实际是我们用例的执行调用的接口。可通过变化参数对这些接口进行调用,模拟外部的使用;而流出的接口则是我们用例真正该验证的点。数据从哪里流出,流出时的状态如何,此时系统又是什么状态都是我们所应该验证的。

确认完整的测试对象的功能:确认外部接口提供给使用这些接口的外部用户什么样的功能,外部用户真正需要什么样的功能。此两个功能一定要准确详细,用例的设计要严格按照测试对象功能设计才是正确的用例。

(3)最后当出发点、对象、功能都确定了,就可以设计用例了。下面详细介绍下如何去设计一个结构好、可读性高、渗透性强的接口测试用例。

接口测试用例设计和其他测试用例设计一样,都应该本着尽可能的发现bug的目标。用例设计的内容应该包括:主要测试功能点、测试环境、测试数据、执行操作以及预期结果。

接口测试环境分为两种,一种是程序内部的环境;一种是程序的

(1)所调用外部接口的环境。

        用例在设计环境上有一个原则即:设计真实而危险的环境,不忽视偶发环境。真实,即你的用例在测试某种功能时,应该去思考这种情况发生时内部、外部环境是什么,通过各种手段将最准确的环境模拟出来。危险,即在这种环境下系统出问题的概率会很大。在设计用例环境时,如果两种环境都能达到你本用例的要求,更推荐选择更危险的环境。所谓偶发,即这种环境出现的概率很小。不要因为这种环境很少出现就无视它,此处很有可能隐藏着问题。

(2)接口测试数据分为接口参数数据和用例执行所需系统数据。

        数据的设计学问大,不要在设计、准备测试用例的数据上偷懒。要通过好的测试数据使用例查错的功能充分发挥。接口参数数据需对每个参数根据测试接口的实际的功能进行分析,在符合业务逻辑的情况下进行逻辑组合排列,不要遗漏了某些边界值和错误点的数据。每个用例执行所需系统数据和接口参数数据尽可能的采用不一样的数据,使用例更容易发现问题。

(3)测试功能点

        如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例具有更好的可读性和维护性。接口划分原则为以接口提供的功能点的不同进行合适粒度的划分。同一功能点的用例又可根据测试环境的不同、数据的不同进行用例的填充。

(4)接口测试用例执行操作非常简单,就是所测接口的调用

预期结果验证,这也是接口用例设计的很关键的一步,应该细而不冗余。所谓细,用例中应详细列出应该验证的点。每个用例均需验证,不要因为前几个用例有验证就认为全部是正确的。避免一个用例中重复做相同的验证,提高测试用例的效率。

五、API接口的定义                                                                 

        应用程序接口(Application Programming Interface 简称API)在现代软件中随处可见,目的在于为某个组件的功能提供一个逻辑接口,同时隐藏该模块内部的实现细节。是对问题的抽象,以及客户与解决问题的软件组件之间进行交互的方式。总的来说:API是一个明确定义的接口,它可以为其它软件提供特定的服务。                                                        

       比如读取图像的API可能仅仅提供一个LoadImage()函数,它接收一个文件名作为参数,然后返回一个2维像素数组,而所有文件格式和数据压缩的细节全部隐藏在这个看似简单的接口之下。客户端代码可以通过调用该API的公有接口。

六、内外部接口的调用

1.外部接口

        对外部提供的接口(提供给第三方使用的接口)

例如:我们自己开发系统调用调用微信或支付宝支付接口,微信或支付宝供我们调用的接口为外部接口,外部接口需要覆盖各种正常和异常情况。

2.内部接口

        对自身系统提供的接口(供系统内部调用的接口)

   一般为了尽早的介入测试,所以一般接口开发完成测试人员就可以进行内部接口测试。一般大公司可能要求比较高,需要考虑安全问题,那么内部接口测试也是一定要测的。对于小公司都是不对内部接口进行测试的,直接在UI层测试即可。这样做的原因是为了防止攻击者会绕过前端的验证直接对接口进行攻击,那么后端接口的验证也是必不可少的。

七、接口测试的范围

  (1)接口范围包括:

          一、被测项目中同层之间的接口(如DAO层、Service层),一个接口调用了其他的接口

          二、外部系统与系统之间的交互点(如一个App调用了第三方支付宝的API)

          三、各个子系统之间的交互点(如App客户端调用了服务端的Http接口)

  (2)被测接口范围:

        接口很多,依据公司的测试资源,项目特点来进行对部分接口/全部接口进行筛选被测API。在一般的中小型公司里,第1类的接口是由相应的开发同学去做。测试同学主要是测试第2种

   (3)接口测试的重点测试范围: 着重测试主要业务,业务复杂的接口

八、用jemter还是python编写接口自动化脚本

        Jmeter是一个测试工具,而Python是一个脚本语言,这是两个范畴的概念,无法进行区别比对。简单来说可以这样理解

        使用Jmeter可以通过人工的操作来进行接口测试的执行工作,我们暂且称为接口手工测试。这样的工作方式非常简单,在接口

测试工作量比较小的情况下,还是可行的,但是需要测试接口的数量非常多,一般来说超过20个以上,就不太适合再用工具

建议可以在接口基本已经稳定的情况下,使用python来编写自动化接口测试脚本来进行,可以大大提高测试工作的整体效能。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群:,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

三级_网络技术_17_交换机及其配置

1.下面是一台三层交换机的部分路由表信息。根据表中的路由信息,以下描述错误的是()。 此设备启用了OSPF动态路由协议,并学到了E1和E2两种类型的OSPF外部路由 比设备通过动态路由协议得到缺省路由,下一跳是设备的TenGigabitEthernet1/15接口 …

Linux的初级简单命令

目录 初学简单命令 ls: cd: username: touch: mkdir: cp: rmdir: rm: mv: 课后习题: 初学简单命令 ls: ls [选项] [文件或目录] 选项: -l : 每列仅显示一个文件或目录名称。 -a 或--all &am…

uniapp 截取两条数据 进行页面翻页滚动

// 轮播信息 <view class"sales_list" ><view class"sales_item" v-for"(item,index) in sellDisplayList" :key"index" click"salesFn(item)"><image :src"item.goodsImg"></image><…

聚类分析方法(三)

目录 五、聚类的质量评价&#xff08;一&#xff09;簇的数目估计&#xff08;二&#xff09;外部质量评价&#xff08;三&#xff09;内部质量评价 六、离群点挖掘&#xff08;一&#xff09;相关问题概述&#xff08;二&#xff09;基于距离的方法&#xff08;三&#xff09;…

MybatisPlus 一些技巧

查询简化 SimpleQuery 有工具类 com.baomidou.mybatisplus.extension.toolkit.SimpleQuery 对 selectList 查询后的结果进行了封装&#xff0c;使其可以通过 Stream 流的方式进行处理&#xff0c;从而简化了 API 的调用。 方法 list() 支持对一个列表提取某个字段&#xff…

Qt/QML学习-ComboBox

QML学习 ComboBox例程视频讲解代码 main.qml import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15Window {width: 640height: 480visible: truetitle: qsTr("ComboBox")ComboBox {id: comboBox// 列表项数据模型model: ListModel {List…

泛微E-Cology WorkflowServiceXml SQL注入漏洞复现(QVD-2024-26136)

0x01 产品简介 泛微e-cology是一款由泛微网络科技开发的协同管理平台,支持人力资源、财务、行政等多功能管理和移动办公。 0x02 漏洞概述 2024年7月,泛微官方发布了新补丁,修复了一处SQL注入漏洞。经分析,攻击者无需认证即可利用该漏洞,建议受影响的客户尽快修复漏洞。…

掌握Gradle配置艺术:使用Gradle Properties的精粹指南

掌握Gradle配置艺术&#xff1a;使用Gradle Properties的精粹指南 在构建自动化的世界中&#xff0c;Gradle以其灵活性和强大的依赖管理能力&#xff0c;成为了Java项目构建的首选工具之一。然而&#xff0c;随着项目规模的扩大和配置需求的增加&#xff0c;如何高效地管理和应…

springboot 适配ARM 架构

下载对应的maven https://hub.docker.com/_/maven/tags?page&page_size&ordering&name3.5.3-alpinedocker pull maven:3.5.3-alpinesha256:4c4e266aacf8ea6976b52df8467134b9f628cfed347c2f6aaf9e6aff832f7c45 2、下载对应的jdk https://hub.docker.com/_/o…

《后端程序员 · Nacos 常见配置 · 第一弹》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

C++ 类和对象(A)

一、类与对象的初步认识 1.类是对象的抽象&#xff0c;而对象是类的具体实例。 类是抽象的&#xff0c;不占用内存&#xff1b;而对象是具体的&#xff0c;占用存储空间。 2.面向过程与面向对象 C语言是面向过程的&#xff0c;关注的是过程中的数据与方法。 C是面向对象的&…

3D打印技巧

blender建模设置 避免破面 插件&#xff1a;3D打印 其中 错误连续边bad contig. edges指的是同一条线两侧法向不同&#xff0c;解决方案&#xff1a;shiftn 零面zero face指有两个面重叠&#xff0c;解决方案&#xff1a;按距离合并 非平面non flat face指四边形面的四个顶…

Django select_related()方法

select_related()的作用 select_related()是Django ORM&#xff08;对象关系映射&#xff09;中的一种查询优化方法&#xff0c;主要用于减少数据库查询次数&#xff0c;提高查询效率。当你在查询一个模型实例时&#xff0c;如果这个实例有ForeignKey关联到其他模型&#xff0…

vue3相比于vue2有哪些新特性?

Composition API&#xff1a; 组合式 API 提供了更灵活和可组合的方式来组织代码。它允许将逻辑功能集中在一起&#xff0c;而不是分散在生命周期钩子中。 import { ref, reactive, computed, watch } from vue;export default {setup() {const count ref(0);const state r…

【.NET全栈】ASP.NET开发web应用——ASP.NET中的样式、主题和母版页

文章目录 前言一、在ASP.NET中应用CSS样式1、创建CSS样式&#xff08;1&#xff09;内联样式&#xff08;2&#xff09;内部样式表&#xff08;3&#xff09;外部样式表 2、应用CSS样式&#xff08;1&#xff09;菜鸟教程-简单例子&#xff08;2&#xff09;菜鸟教程-用户界面&…

2024-07-12 Unity AI状态机1 —— 框架介绍

文章目录 1 有限状态机2 状态机实现框架2.1 StateMachine2.2 BaseState2.3 ...State2.4 IAIObject 3 框架类图 本文章参考 B 站唐老狮 2023 年直播内容。点击前往唐老狮 B 站主页。 1 有限状态机 ​ 有限状态机&#xff08;Finite - State Machine&#xff0c;FSM&#xff09…

以下不属于清廉金融文化建设推进工作思路的是() A.监管引领B.协会推进C.机构推进D.社会共建

以下不属于清廉金融文化建设推进工作思路的是() 查看完整试题答案 A.监管引领B.协会推进 C.机构推进D.社会共建 以下不属于拒腐防变的五道关口的是&#xff1a;() A.政治关B.权力关 C.交往关D.价值观 对2023年度《上海银行业保险业营业网点“清廉角“建设规范》要求在…

【Diffusion学习】【生成式AI】Diffusion Model 原理剖析 (2/4) (optional)【公式推导】

文章目录 影像生成模型本质上的共同目标【拟合分布】Maximum Likelihood Estimation VAE 影像生成模型本质上的共同目标【拟合分布】 Maximum Likelihood Estimation VAE

Python使用蓝牙抓包

在此之前需要安装pyshark库 import pyshark def capture_bluetooth_packets(): # 捕获蓝牙接口的数据包 capture pyshark.LiveCapture(interfaceyour_bluetooth_interface) for packet in capture.sniff_continuously(): print(packet) if __name__ &quo…

网络安全-网络安全及其防护措施3

11.虚拟专用网络&#xff08;VPN&#xff09; VPN的定义和作用 虚拟专用网络&#xff08;VPN&#xff09;是一种通过公用网络&#xff08;如互联网&#xff09;建立安全、加密连接的方法&#xff0c;使用户能够安全地访问内部网络资源。VPN的主要作用包括&#xff1a; 数据保…