当前位置: 首页 > news >正文

接口测试介绍以及用例编写

6.1 接口

6.1.1 接口概述

定义: 接口就是API(Application Programming Interface,应用程序接口),是一个软件或服务对外提供的接口,别人只要调用这接口,而内部如何实现,不需要关心。你只要按照要求进行接口调用即可。
外部系统与系统之间以及内部各子系统之间的交互点。包括外部接口、内部接口。

举例:
假设物流中“货物”是数据,存放货物的“总仓库”是数据库,“店铺”是我们的网站、App。页面上显示的内容、数字,以及用户的操作请求和结果都是需要不停搬运的“货物”——数据,则负责调配分配打包的中转站就是API,快递小哥直接从中转站取货就好。

作用: 对于软件提供商来说,留出API,让别的应用程序来调用,软件才能发挥最大的价值,才能更有生命力。(同时别人也看不见代码,不伤害商业机密。)
对于应用开发者来说,有了开放的API,就可以直接调用多家公司做好的功能来做自己的应用,不需要所有的事情都自己操刀,节省精力。

6.1.2 接口的表现形式

客户端要先操作服务端资源,首先要找到服务端提供的接口,然后才能向服务端发送资源请求,那么何为服务端接口呢?其实就是一个地址(URL),比如:

 
http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1

  1. 采用的协议(http:): 一般来讲网址中第一个“:”前面的就是该网址所采用的协议。这里的HTTP就是个协议 。HTTPS是HTTP的安全版本,HTTPS在HTTP的基础对传输的数据进行了加密和签名,以保证数据传输的安全性。我们平常打开两页的时候会看到网址前面都有一个HTTP或HTTPS,这就是告诉你,你在向服务器发送此请求的过程中要遵循的协议是HTTP或HTTPS (也就是规则)。
  2. 服务器地址(//www.qubaobei.com): 以双斜杠“//”开头,后面跟的就是这个服务器的地址,专业术语叫域名。
  3. 请求资源路径(/ios/cf/dish_list.php) : 表示你要请求的资源在该服务器下/ios/cf/dish_list.php的路径下。
  4. 参数(?stage_id=1&limit=20&page=1): 参数可以找到具体内容,和路径之间使用“?”隔开,参数之间使用“&”隔开。参数是以键值对的形式表现出来的。

把此URLhttp://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1称为食品模块个接口, 也称为接口地址。

6.2 接口文档

接口文档展示

6.2.1 封皮

封面最好是本公司规定的封面,有logo,内容标题,版本号,公司名称,文档产生
日期。(错误地方在于,文档的标题要和页眉中的标题一致)

6.2.2 修订历史

表格形式较好些。包括:
版本,修订说明,修订日期,修订人,审核时间,审核人。

6.2.3 接口信息

接口调用方式,是post方式还是get方式,接口地址,别人需要线上的哪个地址就写哪个。(自己提前测试好线上的这个接口,是否有其他问题,千万别犯低级的错误,尤其是某个字母写错)

6.2.4 功能描述

一定要清晰的描述接口功能。(不要遗漏一些细节,比如接口获取的信息不包括哪些,哪些要写明白)

6.2.5 接口参数说明

每个参数都要和实际中调用的一样,包括大小写;参数的含义言简意赅的说明;格式是string 还是int 还是long等格式(例如参数为@RequestParam("appKey") StringappKey, @RequestParam("randomId") Integer randomId);说明部分,说明参数值是需要哪个公司提供,并详细说明参数怎么生成的,例如时间戳,是哪个时间段的;参数是否必填,一些参数是必须要有的,有些是可选参数,一定要注意写清晰。

6.2.6 返回值说明

1、有一个模板返回值,并说明每个返回参数的意义。
2、提供一个真实的调用接口,真实的返回值。
注:现实工作中,对接口有疑问要及时跟同事交流。

6.3 接口测试的概念

6.3.1 概念

测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

6.3.2 接口测试本质

实质就是数据的传输和接受,传输的是接口地址中的参数,接受的是文本字符串,然后对比文本字符串是否正确。

6.4 接口测试的目的和原理

6.4.1 目的

测试接口的正确性和稳定性。

6.4.2 原理

接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。

6.5 常用接口测试工具

6.5.1 典型商业工具:

  1. LoadRunner(LR):一款商业性能测试工具,用来做接口测试,很好很强大 ,但是配置比较麻烦。
  2. SoapUI:开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试;该工具既可作为一个单独的接口测试工具使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。 了解就可以了,基本已经不用了。

6.5.2 典型开源工具

Jmeter :一款开源的接口测试工具,操作简单,方便,既有jdbc request操作数据库数据,也有http request和soap request应对测试

6.5.3 扩展插件

postman:谷歌浏览器的扩展工具,主要用来做接口测试,谷歌商店中选中安装,界面同poster差别不大,界面简洁。

6.6 接口测试应该测什么

6.6.1 单一接口

单一接口功能的测试主要测试返回的数据结构是否和接口文档给出的一致,接口的正常功能是否完成,接口的参数检查测试,接口的异常测试。

6.6.2 组合接口

定义: 组合接口测试主要是通过组合多个单一接口,来测试一个业务场景
案例: 测试购物网站的一个下单的功能,那么因为在下单之前还有一些流程,所以要测试一个场景。
测试:搜索商品 --> 选中商品 --> 添加进购物车 --> 提交订单 -->支付
(提交订单时还涉及到地址的选取等)
注: 涉及到如果使用从cookie或者session在本例中的区别:如果使用cookie加入购物车,那么换一台电脑购物车里的商品就不存在了,但如果使用的是session,购物车里面的东西就一直存在,即:cookie是本机作用的,session不止于本机作用。

6.6.3 结构检查

(1)检查返回值的结构是否正确,如是json类型还是xml类型的数据
(2)字段名称是否正确等
XML和JSON都使用结构化方法来标记数据

6.7 接口测试内容

6.7.1 功能逻辑

通过查数据库或缓存等验证数据是否处理正确。
通过其他辅助途径进行验证

6.7.2 异常测试

接口测试中主要测试接口正常逻辑,但仅逻辑测试不能保证数据的安全及程序接口在异常情况下的逻辑处理的正确性。

6.7.3 路径测试

当被测接口的实现方法中,判断逻辑复杂分支多,且判断中又调用了其他的接口,此时必须要进行路径覆盖测试。

6.7.4 其他异常场景

研发的项目,有些项目是底层使用的系统,根据项目特点,可能会存在特殊的异常场景。
例如: 支付的异步操作,支付消息重试等

6.8 测试案例

6.8.1 get请求

6.8.2 post请求

Postman使用

6.9 接口测试用例模板

相关文章:

接口测试介绍以及用例编写

6.1 接口 6.1.1 接口概述 定义: 接口就是API(Application Programming Interface,应用程序接口),是一个软件或服务对外提供的接口,别人只要调用这接口,而内部如何实现,不需要关心。…...

MATLAB迭代的三种方式以及相关案例举例

系列文章目录 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制 MATLAB求函数极限的简单介绍 文章目录 系列文章目录 前言 …...

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑,而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…...

【C++】链表

链表是一种常见的数据结构,用于存储和组织数据。它的每个元素被称为结点(Node),结点是链表的基本单位,链表由一系列结点(Node)组成,每个结点包含两个部分:数据部分&#…...

day42_jsp

今日内容 零、 复习昨日 一、JSP 二、EL 三、JSTL 四、MVC 零、 复习昨日 一、JSP 1.0 引言 现有问题 在之前学习Servlet时,服务端通过Servlet响应客户端页面,有什么不足之处? 开发方式麻烦:继承父类、覆盖方法、配置Web.xml或注…...

JAVA面试八股整理——基础部分

JAVA 基础 JVM JDK JRE JVM java虚拟机,针对不同的系统,使用相同的字节码会给出相同结果。一次编译,随处可运行 JDK Java SDK 提供给开发者使用,创建和编译Java程序。包含了JRE,同时包含了其它工具(jav…...

【JavaSE】Java基础语法(二十八):HashSet集合

文章目录 1. HashSet集合概述和特点2. HashSet集合的基本应用3. 哈希值4. HashSet集合存储学生对象并遍历【应用】 1. HashSet集合概述和特点 底层数据结构是哈希表存取无序不可以存储重复元素没有索引,不能使用普通for循环遍历 2. HashSet集合的基本应用 存储字符串并遍历 …...

压缩感知重构之匹配追踪算法

算法的重构是压缩感知中重要的一步,是压缩感知的关键之处。因为重构算法关系着信号能否精确重建,国内外的研究学者致力于压缩感知的信号重建,并且取得了很大的进展,提出了很多的重构算法,每种算法都各有自己的优缺点&a…...

【SpinalHDL快速入门】4.6、复合类型之Vec

文章目录 1.1、描述1.2、声明1.2.1、实例 1.3、运算符1.3.1、比较(Comparison)1.3.2、类型转换(Type cast)1.3.3、杂项(Misc)1.3.4、Lib辅助函数(Lib helper functions) 1.1、描述 …...

探访世优科技数字人虚拟直播产品体系 | 世优开放日再次成功举行

2023年5月30日,世优科技全栈技术产品体验活动(第二期)顺利落下帷幕。此次活动共邀请到30余位各行各业的嘉宾到场,在两个多小时的开放日活动中,世优科技全面展示数字人及虚拟直播领域的技术产品体系。来访嘉宾们全程体验…...

有奖励!2023陕西省首台(套)重大技术装备产品项目申报条件、认定材料

本文整理了2023陕西省首台(套)重大技术装备产品项目申报条件,认定材料等相关内容,感兴趣的朋友快跟小编一起来看看吧! 一、重点支持方向及领域 重点支持方向及领域:高档工业母机、电力装备、大型矿山和冶金…...

2023/6/6总结

CSS 如果想要实现背景颜色渐变效果&#xff1a; left是从左边开始&#xff0c;如果想要对角线比如&#xff0c;左上角就是left top&#xff0c;渐变效果始终是沿着一条线来实现的。 下面是跟着视频教学用flex布局写的一个移动端网页&#xff1a; html代码&#xff1a; <!…...

api习题

// 1 整数或者小数 // String a"378.000"; // String rex"[1-9]\\d*|[0-9]|*\\.[0-9]*"; // System.out.println(a.matches(rex)); // 2 只能输入数字&#xff1a; // String rex"\\b*"; // 3 只能输入n位的数字&#xff1a; // String r…...

(STL之string)string类的用法详解

string类成员函数PART1 成员函数(构造函数拷贝构造函数)&#xff1a;string 函数原型&#xff1a; string(); string (const string& str); string (const string& str, size_t pos, size_t len npos); string (const char* s); string (const char* s, size_t n)…...

基于RT-Thread快速上手SD NAND 虚拟文件系统

SD NAND 也称之为贴片式TF卡&#xff0c;贴片式SD卡&#xff0c;采用标准的SDIO接口&#xff0c;兼容SPI接口。下图所示为CS 新一代CS SD NAND NP1GCR01-AOW 大小为128M&#xff0c;对比128M的SD卡&#xff0c;可以看到贴片SD卡尺寸更小&#xff0c;不要SD卡座&#xff0c;占…...

性能测试实战

目录 一、创建线程组与http(s)请求1、JMeter关键词2、创建线程组3、线程组参数举例说明案例1:模拟5个用户,同时访问百度案例2:模拟5个用户,同时访问百度,并且循环2次案例3:模拟5个线程,持续执行10秒的时间案例4:模拟10秒启动10个线程,循环执行20秒4、创建http请求a、操…...

【PWN · 总结】system返回shell(‘/bin/sh‘、‘sh‘、$(0))

pwn题中要通过system/excute等返回shell&#xff0c;进而cat flag。今天遇到一题&#xff0c;参数$(0)也可返回&#xff0c;有必要记录一下。 目录 前言 一、/bin/sh 1.strings 2.IDA 3.pwntools 4.ROPgadget 5.libc中寻找 二、sh 三、$(0) exp IDA查看机器码 …...

《庄子》笔记

庄子 前述&#xff1a;庄子&#xff0c;战国时宋国人。 1.鲲鹏&#xff1a;胸襟宽广&#xff0c;高远&#xff0c;无界限。 2.寒蝉和灵龟&#xff1a;小年的悲哀。 3.小麻雀的得意&#xff1a;境界不同&#xff0c;又有什么可比性呢。 4.列子随风而行&#xff1a;得大道者&…...

五、VBO、EBO 和 VAO

五、VBO、EBO 和 VAO VBO、EBO 和 VAO&#xff1a; VBO&#xff08;Vertex Buffer Object&#xff09;是指顶点缓冲区对象&#xff0c;而 EBO&#xff08;Element Buffer Object&#xff09;是指图元索引缓冲区对象&#xff0c;VAO 是顶点数据的缓冲区对象&#xff0c;VAO 和…...

数据库期末复习(7.2)查询优化

查询优化的概述 商用数据库花了很多的资金投入到查询优化。 查询优化的分类 逻辑查询优化 物理查询优化 比逻辑查询计划多了怎么去执行的方式,为的是数据操作速度更快 逻辑查询优化的三种关键技术 在科学研究的道路上我们往往不是一帆风顺的,人的认识也是局限的,但是我…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...