详解接口测试

目录

什么是接口?

接口协议的类型

接口测试是什么

HTTP接口的测试用例设计

HTTP接口的测试方法


什么是接口?

在面向对象编程中,接口是一个抽象的概念,用于定义类应该具有的方法和属性。一个类可以实现一个或多个接口,并且必须实现接口中定义的所有方法和属性。通过实现接口,类能够表达自己具有某些功能或能力。比如:当我在手机上打开某个APP应用,点击应用里的某个按钮,一般就会调用某个接口,向服务端发起HTTP请求,接口返回数据后,我们就能在应用里看到相应结果

接口协议的类型

基于 HTTP 协议的接口是我们日常测试工作当中接触最多的接口类型,除此之外,还有其他协议的接口,如常见的WebServiceWebSocketDubbo等最好也有所了解。

接口测试是什么

接口测试是对测试系统组件间接口进行测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换传递控制管理过程,以及系统间的相互逻辑依赖关系

调用一个接口A后,通常会触发下面的业务逻辑,这取决于接口A的具体功能和设计。一般来说,调用接口A可能会执行以下操作:

  1. 验证请求:接口A可能会对请求进行验证,以确保请求的合法性和有效性。这可能包括检查请求的参数、权限、身份验证等信息。
  2. 业务处理:一旦请求通过验证,接口A可能会执行相应的业务逻辑。这可能包括处理数据、调用其他接口、更新数据库等操作。
  3. 返回结果:接口A处理完业务逻辑后,把数据格式化成Json或者HTML等返回给前端。这可能包括返回数据、状态码、错误信息等。

从上面我们可以得知,调用一个接口后,数据的流动情况。以上述业务逻辑为例,有两条最基本的数据流,分别是写入数据流和查询数据流 。

  • 写入数据流:从外部参数传入调用接口后,经过业务处理,数据最终会存储到数据库或者缓存当中
  • 查询数据流:从外部参数传入调用接口后,经过业务处理,查询数据库或者缓存,将查询到的数据从接口返回

所以在接口测试时,涉及数据库相关的逻辑,我们都需要去检查数据库或者缓存里的数据是否符合预期。

HTTP接口的测试用例设计

和功能测试一样,在进行接口测试前,需要进行接口的测试用例设计,用例设计也不是凭空想象,我们需要以相关文档为依据

  • 功能测试用例:一般是根据产品需求文档PRD或者交互设计文档来进行设计
  • 接口测试用例:一般是依据接口文档和技术方案来进行设计

一个接口文档的例子:

请求方式
Get请求URL
/test/api/getlist请求参数参数名       | 是否必传 | 数据类型 | 说明
source_type	  Y	          int       来源:百度1;好看2;贴吧3
page	      Y	          int       页码
per_page	  Y	          int       每页数量
word          N           string    关键词预期返回结果{"errno": 0,"status": 0,"msg": "success","time": 1637156975,"duration": 0.01242208480835,"requestid": 29535354
}

有了接口文档以后,我们就可以开始接口测试用例的设计,而接口测试用例设计的重点,在于功能性的业务逻辑检查和参数检查。可以从输入(请求)参数、接口业务逻辑处理、接口输出(返回结果) 三个方面来进行考虑

另外对于客户端功能测试的用例设计方法,如等价类和边界值,在接口测试用例设计对于设计输入参数的部分同样适用,如对于请求参数的有大小限制,运用边界值设计,我们可以分别取空、最小值、最小值-1、最大值、最大值+1来测试

以下是一个接口测试用力的例子:

接口业务逻辑处理的接口用例设计是重中之重,对于这方面的用例设计,除了仔细看接口文档,还需要我们详细阅读开发写的技术方案,在技术方案当中一般有程序流程图,数据流图或者时序图

用例除了正常的接口功能流程,接口业务逻辑异常场景也需要考虑,常见的异常场景是数据库连接超时、没有满足前置条件,如:某个接口需要先登录获取 sesssion,如果直接调用该接口应该给出相应提示

HTTP接口的测试方法

接口测试用例设计完毕后,我们就可以开始正式进行接口测试了,一般接口测试都是对单个接口按照接口用例逐一进行测试

而接口测试方法,最开始可以使用Postman等工具进行手工测试,然后我们可以用Python或者JAVA编写代码进行自动化测试,自动化测试的代码可以逐步完善形成我们的测试框架,在回归测试时解放双手,提高测试效率

后面会给大家带来自动化的教程,希望大家的多多关注我噢💕🤷‍♀️

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

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

相关文章

【Jmeter】Jmeter基础8-Jmeter元件介绍之断言

断言主要用于对服务器响应的数据做验证。Jmeter提供了多个断言元件,其中最常用的是响应断言。 2.8.1、响应断言 作用:对Jmeter取样器返回值进行断言。参数说明: 测试字段 响应文本:从服务器返回的响应文本,Response B…

大数据云计算之OpenStack

大数据云计算之OpenStack 1.什么是OpenStack,其作用是什么?OpenStack主要的组成模块有哪些?各自的主要作用是什么? OpenStack是一个开源的云计算平台,旨在为企业和服务提供商提供私有云和公有云的建设和管理解决方案…

USB设备共享服务USB Redirector如何安装并结合内网穿透实现远程共享和访问USB设备

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序,它提供了共享和访问本地或互联网上的U…

排序算法(详解)

排序在日常生活中十分重要,购物平台上商品的排序,各国高校等级的排序......可以说,现代生活中已经离不开排序了;因此学好排序算法至关重要,本篇文章就来讲讲常见的排序算法 排序的种类非常多,按照种类划分&…

分割均衡字符串 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 均衡串定义:字符串只包含两种字符,且两种字符的个数相同。 给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。 约定字符串中只…

汇川SV660P伺服MODBUS通信设置回原

汇川伺服MODBUS-RTU通信的详细设置可以查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/134942690https://rxxw-control.blog.csdn.net/article/details/134942690首先我们介绍最简单的回原方式,就是以当前位置为原点回原,此时伺服电机不动作,绝对…

Layui实现自定义的table列悬停事件并气泡提示信息

1、概要 使用layui组件实现table的指定列悬停时提示信息&#xff0c;因为layui组件中没有鼠标悬停事件支持&#xff0c;所以需要结合js原生事件来实现这个功能&#xff0c;并结合layui的tips和列的templte属性气泡提示实现效果。 2、效果图 3、代码案例 <!DOCTYPE html&g…

智能优化算法应用:基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌鸦算法4.实验参数设定5.算法结果6.参考文献7.MA…

vue2-安装elementUI时警告

警告内容&#xff1a;npm WARN deprecated core-js2.6.12: core-js<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up …

微软免费开发隧道(内网穿透)服务

软件下载 Windows x64&#xff1a;https://aka.ms/TunnelsCliDownload/win-x64 macOS (arm64)&#xff1a;https://aka.ms/TunnelsCliDownload/osx-arm64-zip macOS (x64)&#xff1a;https://aka.ms/TunnelsCliDownload/osx-x64-zip Linux x64&#xff1a;https://aka.ms/…

漏电保护芯片——可直接驱动SCR,输出脉宽模式可选择。适用于交流110V~220V(50~60Hz)供电系统

D4140 D4145 D4147 D54123等芯片适用于交流110V~220V(50~60Hz)供电系统&#xff0c;用于检测AC型剩余漏电信号&#xff0c;可直接驱动SCR&#xff08;可控硅&#xff09;&#xff0c;当有漏电信号时&#xff0c;OS输出高电平延时脉冲&#xff0c;输出脉宽模式可选择。

docker安装RabbitMQ3.8.34

&#x1f60a; 作者&#xff1a; 瓶盖子io &#x1f496; 主页&#xff1a; 瓶盖子io-CSDN博客 a.拉取rabbitmq镜像 docker pull rabbitmq:3.8.34-management b.根据镜像创建容器 在yml配置文件中port是5672 访问是ip:15672 docker run --name rabbitmq -d -p 5672:5672 -…

JavaScript如果实现一段文字的高亮显示

JavaScript实现将一段文字检索高亮显示,效果如下: 实现方法:调用highlight函数 highlight("JavaScript如果实现一段文字的高亮显示", "高亮")实战代码实现: function highlight(value, search)

node.js express JWT token生成与校验

目录 JWT header&#xff08;标头&#xff09; payload&#xff08;有效负载&#xff09; signature&#xff08;签名&#xff09; 访问令牌&#xff08;token&#xff09; express jwt生成、验证 生成jwt 验证jwt JWT JWT 是轻量级的数据交换格式&#xff0c;相对于传…

5分钟搞懂Kubernetes:轻松理解所有组件

Kubernetes 首先&#xff0c;我想强调的是&#xff0c;在学习任何一项知识时&#xff0c;官方文档都是最重要的资源&#xff1a;Kubernetes 文档 | Kubernetes 官方文档提供了详尽、准确的信息&#xff0c;帮助我们深入了解和掌握这个技术。因此&#xff0c;如果你真的对Kubern…

Jenkins 添加节点报错

报错日志 Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime (cl…

Python接口测试 requests.post方法中data与json参数区别

引言 requests.post主要参数是data与json&#xff0c;这两者使用是有区别的&#xff0c;下面我详情的介绍一下使用方法。 Requests参数 1. 先可以看一下requests的源码&#xff1a; def post(url, dataNone, jsonNone, **kwargs):r"""Sends a POST request.…

c# 字段和属性(get、set、init)

目录 基本概念&#xff1a; 个人理解&#xff1a; 访问器的默认写法&#xff1a; set与init无法共存&#xff1a; init&#xff1a; 必须在类的实例化时给字段赋值的情况(require属性): 基本概念&#xff1a; “字段”就是类内成员变量&#xff0c;一般为了隐藏数据&…

抗EMC干扰高精度隔离放大器ISO EC 系列

SunYuan ISO EC系列模拟信号隔离放大器是一种有较强抗EMC干扰特性的电容耦合隔离混合集成电路。该放大器采用了全新的调制-解调电容耦合隔离技术&#xff0c;模块中信号以数字信号的方式通过电容隔离层进行传输&#xff0c;通过数字调制和电容耦合隔离方式保持信号的完整性&…

【深度学习】注意力机制(三)

本文介绍一些注意力机制的实现&#xff0c;包括EMHSA/SA/SGE/AFT/Outlook Attention。 【深度学习】注意力机制&#xff08;一&#xff09; 【深度学习】注意力机制&#xff08;二&#xff09; 【深度学习】注意力机制&#xff08;四&#xff09; 【深度学习】注意力机制&a…