从零开始的软件测试学习之旅(七)接口测试三要素及案例

接口测试三要素及案例

    • 接口测试介绍
    • 接口预定义
    • 接口测试的主要作用
    • 测试接口流程如下
    • 接口测试三要素
    • 接口测试分类
    • RESTful架构风格
    • RESTful架构三要素
      • 要素一
      • 要素二
      • 要素三
    • RESTful架构风格实现
    • 案例
    • 复习复盘

接口测试介绍

接口介绍
不同主体之间进行通信的通道,它应具有一套规范/标准 (分类 硬件接口:USB接口 网线接口; 软件接口)

软件接口

1.软件系统中,前端和后端是两大重要组成部分

2.前端主要用于与用户交互,用户通过前端可以提交数据并查看响应的结果

3.后端主要处理用户提交的数据产生相应

比如:百度搜索,思考前后端分工前后端通过某个通道完成数据交互 搜索12306时,https://www.baidu.com/s?wd=12306

访问路径包括/s,建立通信管道 参数包括wd=12306符合标准

采用接口的好处
(实现了前后端分离)为了数据交互同时,
1.前后端都可以使用自己熟悉的技术
2.缩短了研发周期
3.保证代码安全
4.拓展性更好

接口预定义

落实到文档,该文档称之为API文档
前后端编码时,1.需要参考API文档/
2.前人总结的相关规范 如:RESTful架构风格

举例:
编写登录接口的API文档
描述:登录接口
URL:http://www.xxx.com/login
请求方式:POST
提交数据:账号 usename
密码 password
响应结果: 成功true 失败 false
前端实现:
在这里插入图片描述

后端实现:

1.获得用户提交的数据 2.查询结果相应数据(true/false)

接口测试的主要作用

主要作用 1.更好的辅助定位bug(前/后端) 2.发现程序中的安全隐患 3.提高测试效率

测试接口流程如下

1.绕过前端 2.通过URL定位接口资源 3.提交测试数据 4.判断响应是否满足预期

接口测试三要素

  1. 定位接口资源 2.提交测试资源 3.判断相应资源

接口测试分类

1.B/S测试(web形式的接口测试): 1.服务器接口测试->自实现接口 2.外部接口测试 如支付宝接口,微信测试

2.C/S模块之间的接口测试

RESTful架构风格

为什么要学习RESTful架构风格?

避免千人千面, 使API文档风格统一

RESTful架构是一种接口设计架构, 约束了接口实现的规范

架构的作用:提高了文档的可读性

RESTful架构的设计在API文档中关于接口的描述也是围绕三要素展开的:

描述: 实现用户的登录功能
流程:
1、登录表单的数据提交到服务器: http://www.xxx.com/login, 请求方式 POST
2、提交的数据格式: username=xxxx&password=yyyy
3、响应结果:
200 {“msg”:“登录成功”}
200 {“msg”:“登录失败”}

注意: 一般响应结果的msg中, 提示信息很可能是英文

RESTful架构三要素

要素一

组成

  • URL(统一资源定位符), 例如: http://www.baidu.com/s
    • 协议: 常见的有 http/ https/ ftp/ ftps
    • IP: 服务器 IP 地址
    • 端口: http默认端口一般是80, https默认端口一般是443
    • 路径: 一个资源路径映射一个接口实现
  • 请求方式: 常见GET/POST/PUT/DELETE 分别对应 查/增/改/删 四种操作

get 和 post 的区别

  • 提交方式不同
    • get 提交的数据显示在地址栏
    • post 是隐式提交, 更安全
  • 可提交的数据量不同
    • get 提交的数据量有限制
    • post 无限制
  • 执行效率不同
    • get 的效率比 post 高

要素二

两种常见的数据提交格式

  • 键值对格式
  • JSON格式(类似于 python 中的字典)

在这里插入图片描述

一般情况下, 使用 get 方式进行提交时, 使用的是键值对格式 使用 post 方式进行提交时, 使用的是JSON格式

要素三

状态码

  • 1xx 请求正常, 但是无响应, 只在实验状态下使用
  • 2xx 请求正常, 响应正常, 如: 200 201 204…
  • 3xx 以其他方式获取响应, 如: 302 重定向 304 取本地缓存
  • 4xx 浏览器端异常, 如: 404 资源路径有误
  • 5xx 服务器端异常, 如: 500 服务器运行异常

响应体

常见的接口的响应体有两种类型

  • 响应 html 文档, 例如: 访问百度搜索接口
  • 响应 JSON 格式数据

RESTful架构风格实现

在这里插入图片描述

RESTful 只是一种规则, 并不是标准, 换言之, 不是硬性约束

案例

一.查询
1.1 学员-查询所有
请求方法:GET
请求地址:http://127.0.0.1:8000/api/students
1.2 学员-查询指定单个
请求方法:GET
请求地址:http://127.0.0.1:8000/api/students?s_id=S001
(注: s_id 为参数名称; S001,S005,S088 为学员ID;)
1.3 学员-查询指定多个
请求方法:GET
请求地址:http://127.0.0.1:8000/api/students?s_id=S001,S005,S088
(注: s_id 为参数名称; S001,S005,S088 为学员ID;)
1.4 学员-组合查询
请求方法:GET
请求地址:http://127.0.0.1:8000/api/students?chengji=A&banji=B01
(注: chengji:成绩; banji:班级;)

二.新增
2.1 学员-新增
1) 请求方法:POST
2) 请求地址:http://127.0.0.1:8000/api/newstudents/
3) 请求JSON报文:
4) 调用传入的json串如下(可新增多条,之间用,隔开):

  {"data": [{"s_id":"S009","s_name":"zhangsanfeng","banji":"B01","chengji":"A"}]}
  1. 新增成功返回报文:
   {"already_exist": {"results": [],"count": 0},"create_success": {"results": [{"s_id":"S009","s_name":"zhangsanfeng","banji":"B01","chengji":"A"}],"count": 1}}
	6) 新增失败id已存在-返回报文:{"already_exist": {"results": [{"s_id":"S009","s_name":"zhangsan","banji":"B02","chengji":"B"}],"count": 1},"create_success": {"results": [],"count": 0}}7) 新增失败json格式错误:
{"status_code": 400,"detail": "请求体参数格式错误。"}

三.更新
3.1 学员-更新
1). 请求方法:PUT
2). 请求地址:http://127.0.0.1:8000/api/updatestudents/S009/
(注:1:为学院ID)
3). 请求JOSN报文:

  {"data": [{"s_id":"S009","s_name":"zhangsanfeng","banji":"B01","chengji":"A"}]}4). 修改成功返回:{"s_id":"S009","s_name":"zhangsanfeng","banji":"B01","chengji":"A"}

四.删除
4.1 学员-删除单个
请求方法:DELETE
请求地址:http://127.0.0.1:8000/api/deletestudents/S003/
(注:S003为学员ID)

s_id":"S009","s_name":"zhangsanfeng","banji":"B01","chengji":"A"}

复习复盘

1.接口的概念是什么?
2.接口的作用是什么?
3.如何实现接口的通道?
4.如何预定义接口规则?
5.接口测试的概念是什么?
6.接口测试的作用是什么?
7.接口测试三要素是什么?
8.接口测试可以怎样分类?

9.RESTful三要素

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【智能优化算法】海象优化器(Walrus optimizer,WO)

海象优化器(Walrus optimizer,WO)是期刊“EXPERT SYSTEMS WITH APPLICATIONS”(中科院一区 IF 8.3)的2024年智能优化算法 01.引言 海象优化器(Walrus optimizer,WO)的灵感来自海象通过接收关键信号(危险信号和安全信号)选择迁徙、…

自动化运维管理工具 Ansible-----【inventory 主机清单和playbook剧本】

目录 一、inventory 主机清单 1.1inventory 中的变量 1.1.1主机变量 1.1.2组变量 1.1.3组嵌套 二、Ansible 的脚本 ------ playbook(剧本) 2.1 playbook介绍 2.2playbook格式 2.3playbooks 的组成 2.4playbook编写 2.5运行playbook 2.5.1ans…

VS Code中PlatformIO IDE的安装并开发Arduino

VS Code中PlatformIO IDE的安装并开发Arduino VS Code的安装 略 PlatformIO IDE的安装 PlatformIO IDE是是什么 PlatformIO IDE 是一个基于开源的跨平台集成开发环境(IDE),专门用于嵌入式系统和物联网(IoT)开发。…

15.计算机网络

1.物理层的互联设备 中继器 和 集线器 2.集线器可以看做特殊的多路中继器 集线器 不可以做到自动寻址的功能 3.数据链路层 网桥 和 交换机 4.交换机是多端口网桥 5.网络层 路由器 6.应用层 网关 7.广播域 网络层 可以形成多个广播域 冲突域 网络层数据链路层 可以形成多个冲突域…

数据结构复习/学习9--二叉树

一、堆与完全二叉树 1.堆的逻辑与物理结构 2.父节点与子节点的下标 3.大小根堆 二、堆的实现(大根堆为例) 注意事项总结: 注意堆中插入与删除数据的位置和方法与维持大根堆有序时的数据上下调整 三、堆排序 1.排升序建大堆效率高 注意事项…

变限积分函数的求导(被积函数中含上限变量)

​​​​​​一、问题描述 本科阶段学习的变积分上限的函数求导,要求被积分函数中不能包含积分上限函数中的变量,即形式如下 对其求导的公式是 若是被积分函数中存在变量,则需要做出一定的变换,如下例 二、解决方法 令&#xff…

基于FPGA的数字电子钟VHDL代码Quartus仿真

名称:基于FPGA的数字电子钟VHDL代码Quartus仿真(文末获取) 软件:Quartus 语言:VHDL 代码功能: 数字电子钟 1)设计一个能显示秒、分、时的24小时数字钟 2)用数码管显示出时,分,…

基于51单片机的自动售货机系统

一、项目概述 本文设计了一款以AT89C51单片机为核心的自动售货机系统,并且着重详细地介绍了自动售货机的整体系统设计方案、硬件选择基础、软件使用方法及技巧。 以AT89C51作为CPU处理单元连接各个功能模块;以44矩阵键盘作为输入控制模块对货物进行种类…

rag-embeddings基础流程

什么是检索增强的生成模型 LLM 固有的局限性 LLM 的知识不是实时的LLM 可能不知道你私有的领域/业务知识 检索增强生成 RAG(Retrieval Augmented Generation)顾名思义,通过检索的方法来增强生成模型的能力。 类比:你可以把这个…

【牛客】Tokitsukaze and Average of Substring

原题链接:登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 前缀和。 开一个int类型的前缀和数组pre[30][N](pre[i][j]表示某字符转成的数字 i 在一段区间的前缀个数。因为字母表有‘a’~z…

开源go实现的iot物联网新基建平台

软件介绍 Magistrala IoT平台是由Abstract Machines公司开发的创新基础设施解决方案,旨在帮助组织和开发者构建安全、可扩展和创新的物联网应用程序。曾经被称为Mainflux的平台,现在已经开源,并在国际物联网领域受到广泛关注。 功能描述 多协…

Meta最新研究: Flash Attention 为何是系统性能瓶颈?

I. 引言 随着机器学习趋向于更大和更复杂的模型,模型训练过程变得越来越计算和资源密集。生成式AI的出现进一步推动了模型开发的边界,大型语言模型(LLMs)通常在数百或数千个GPU上训练数月。以LLaMA2的70-B参数模型为例,需要1,720,320 GPU小时来训练。对于如此长的训练作业,训练…

【初阶数据结构】单链表之环形链表

目录标题 前言环形链表的约瑟夫问题环形链表环形链表|| 前言 前面我们已经学习了关于单链表的一些基本东西,今天我们来学习单链表的一个拓展——环形链表,我们将用力扣和牛客网上的三道题目来分析讲解环形链表问题。 环形链表的约瑟夫问题 我们首先来看…

关于执行CLAM的代码的一些需要记录的点

文章链接:[2004.09666] Data Efficient and Weakly Supervised Computational Pathology on Whole Slide Images (arxiv.org) 代码链接:GitHub - mahmoodlab/CLAM: Data-efficient and weakly supervised computational pathology on whole slide images…

Python做自动化测试必知必会思维导图

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

【busybox记录】【shell指令】uniq

目录 内容来源: 【GUN】【uniq】指令介绍 【busybox】【uniq】指令介绍 【linux】【uniq】指令介绍 使用示例: 去除重复行 - 默认输出 去除重复行 - 跳过第n段(空格隔开),比较n1以后的内容,去重 去…

蓝牙模块HC-08+WIFI模块ESP-01S

蓝牙模块 又叫蓝牙串口模块。 串口透传技术:透传即透明传送,是指在数据的传输过程中,通过无线的方式使这组数据不发生任何形式的改变,仿佛传输过程是透明的一样,同时保证传输的质量,原封不动地道了最终接收…

C++手写协程项目(协程实现线程结构体、线程调度器定义,线程挂起函数、线程切换函数、线程恢复函数、线程结束函数、线程结束判断函数,模块测试)

协程结构体定义 之前我们使用linux下协程函数实现了线程切换,使用的是ucontext_t结构体,和基于这个结构体的四个函数。现在我们要用这些工具来实现我们自己的一个线程结构体,并实现线程调度和线程切换、挂起。 首先我们来实现以下线程结构体…

Elasticsearch 数据聚合

Bucket聚合(桶聚合) 对文档做分组,aggs 按照文档字段值或日期进行分组,能参与分词的字段不能做聚合,如text类型的字段 例如:根据城市名称做聚合,也就是城市名称对数据进行分组统计。可以加qu…

如何在已经安装好的PostgreSQL14中安装uuid 扩展

当前环境 PG14.8 LINUX 8.8 存在问题: 开发人员问,PG中,支持 生成UUID吗,具体是什么,答,类似这个函数 uuid_generate_v4() 看了一下, select uuid_generate_v4();会报错&#xff0…