【自动化测试】使用MeterSphere进行接口测试

news2024/11/20 7:20:48

  • 一、接口介绍
  • 二、接口测试的过程
  • 三、接口自动化测试
    • 执行自动化流程
  • 四、接口之间的协议
    • HTTP协议
  • 五、 接口测试用例设计
    • 接口文档
  • 六、使用MeterSphere创建接口测试
    • 创建接口定义
    • 设计接口测试用例

一、接口介绍

自动化测试按对象分为:单元测试、接口测试、UI测试等。
接口是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互。接口就好像一根水管,通过这根水管可以把水房的水传输每家每户,而这根水管的容量大小就决定了传输的水容量,水管越粗,一个时间点内流通的水的体积就越大,也就是说接口的传输容量就决定了服务器向客户端一次传输的数据大小,而对于系统的接口就是方法与方法之间、模块与模块之间的交互,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。

二、接口测试的过程

大体流程: 使用工具(Jmeter、postman),模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,然后向客户端返回响应数据,最后检查响应数据是否符合预期。

具体流程: 发送请求->解析结果->验证结果。 简单来说,接口测试就是参照接口文档,调用接口,看结果的返回是否跟文档说明一致;另外,再测试一下接口对异常逻辑的处理比如非法参数或边界值。
在这里插入图片描述

上图是一个典型的测试金字塔模型,在这个模型中,越往下比例会占的越高,也就是说在一个软件测试中,单元测试比例是最高的,依次是接口测试和 UI 自动化测试,接口测试在中部,承上启下,由此可见其重要性。

三、接口自动化测试

接口自动化测试是什么?
简单说自动化测试是把人为操作的测试行为转化为机器执行的一种过程。

接口自动化测试的好处

不管什么样的测试方式,都是为了验证功能与发现 bug。要做接口测试自动化就是为了节省人力成本。具体来说,包括以下几点:

  1. 减轻自己工作量,把测试从枯燥的重复劳动的人工测试中解放出来;
  2. 协助手工测试完成很难模拟或无法模拟的的工作;
  3. 提高工作效率,比如测试环境的自动化编译、打包、部署、持续集成甚至持续交付等;
  4. 协助定位问题,比如通过接口层发现的问题定位问题所在的模块;
  5. 尽早发现 bug,自动通知测试人员。一旦发现问题,立即通知测试人员,快速高效;
  6. 提高软件质量和稳定性,减少潜在风险,提供稳定可靠的软件。

执行自动化流程

  1. 接口文档:接口请求、响应定义清晰、接口参数说明清晰、接口状态准确
  2. 环境管理:包括测试环境和线上环境、脚本和数据在测试环境、线上环境通用、功能测试环境混用
  3. 脚本管理:管理路径:空间-项目-模块-场景(具体软件具体操作)、重复场景复用、减少维护成本、必须添加断言
  4. 场景管理:场景设计用例评审、场景优先级维护、场景状态及时维护更新
  5. 执行频次:新增测试计划执行自动化任务,设计定时任务和通知信息、每天上午6-8点自动化执行所有已完成的自动化脚本、冲刺上线前手动执行相关的业务场景脚本

四、接口之间的协议

接口之间互相调用也需要遵循一定的规则,这个规则就是网络协议,如:http协议、tcp协议,rpc协议。

HTTP协议

HTTP: (HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。

下图是HTTP的URL:

在这里插入图片描述

HTTP请求: 包含4个部分,首行,请求报头,空行,正文

1.首行: 包含三个部分,之间使用空格分隔。1、get /post(http方法) 2、url唯一资源定位符 ;3、http/1.1 版本号(GET https://www.baidu.com/ HTTP/1.1)

  • GET、POST:一般一个url的请求通常使用get和post两种方法,当然还有其他的请求方法。GET一般是向服务器获取资源,POST一般是向服务器提交数据。在浏览器地址栏直接输入url和html里面的link,script,img,a…,或者通过js构造get请求,这些都会生成get请求。get请求内容里有首行,header,空行就没了;post的典型场景是登录,上传文件,内容里有首行,请求头header,空行,正文body。所以http请求分为四个部分:首行,请求头,空行,正文。get请求没有正文,正文内容格式是程序猿自己定义。
  • Url:最关键四个部分,协议名称//域名:端口号//带层次的路劲?查询字符串。http默认端口80,https默认端口443

2 .请求报头: 请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型 的请求头有:

  • host:表示服务器所在地址和端口,表示最终要访问的目标,大概率和url里的是一样的

  • content-length:body里的数据长度

  • content-type:body里的数据格式。get请求没body,就没这两个content字段,post有body,就必须有这两个字段。content-type取值范围:text/html、application/json、image/png…等

  • user-agent(UA):以前服务器根据这个字段来判断要发送什么样的响应,要不要带图片、视频等,现在主要用于区分pc端和移动端。

  • referer:表示当前页面的来源,通过收藏夹、手动输入url是没有referer的。通过跳转的网页才会带有referer,表示从哪个网页跳转过来的。

  • cookie:本质上是浏览器给网页提供的本地存储数据的机制。网页是默认不允许访问计算机的硬盘,但是由于需要在本地存储一些数据,所以提供了一个cookie,此时网页就可以去操作cookie。cookie通过键值対方式组织数据,存储的是程序员自定义内容。键值用=分割,键值対之间用;分割。
    请添加图片描述

3.空行: 表示请求头的结束标记。
4.正文(body): 请求头content-type指定什么类型,就决定正文的数据怎么组织的,具体数据是程序猿决定的。比如登录场景:使用POST方法,一般把账号和密码放入body里;而使用GET方法,一般把请求的参数放入query String里。

  • query string:是以?开头,键值对方式组织,键值对之间用&分隔,键值直接用=分隔。
    请添加图片描述

HTTP响应: 四个部分构造,首行(版本号,状态码,状态码描述)、header响应头(键值対格式)、空行(表示header的结束标记)、正文。
请添加图片描述

  • 状态码:表示此次请求的结果,成功or失败。分为1** 等待、2** 成功、3** 重定向、4** 客户端错误、 5** 服务器错误。
  • 200 OK
  • 404 Not Found 访问资源不存在,在服务器上没找到。
  • 403 Forbidden 访问被拒绝,没有权限访问
  • 302 Move temporarily 重定向,在header里有个location属性,通过这个属性描述要跳转到哪个新页面。重定向是服务器返回一个新地址让客户端重新访问,两次相互;请求转发是服务器自己访问新的网站然后把新的结果返回给客户端,一次交互。
  • 500 服务器内部错误,服务器代码抛异常 504 gateway timeout 请求超时,服务器响应时间太久

五、 接口测试用例设计

接口文档

在这里插入图片描述
接口文档: 又称为API文档,一般是由开发人员所编写的,用来描述系统所提供接口信息的文档。 大家都根据这个 接口文档进行开发,并需要一直维护和遵守。

一个规范的接口文档,要包含以下信息:

  1. 基本信息: 接口名称、请求方法、请求路径、接口描述
  2. 请求参数: 请求头,请求体(包含具体的请求参数名称、参数类型、是否必须、示例、备注)
    返回数据
  3. 不同情况的响应状态码
  4. 响应数据 (包含具体的响应数据名称、类型、是否必须、默认值、示例、备注)

六、使用MeterSphere创建接口测试

前面说过一般接口测试工具可以使用Jmeter和Postman,但是我使用的是MeterSphere,这是我在实习中企业使用的一款不错的平台。 因为MeterSphere 是一站式开源持续测试平台,涵盖测试跟踪、接口测试、UI 测试和性能测试等,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队在线共享协作,实现端到端的测试管理跟踪可视化、自动化测试、性能测试及融入持续交付 DevOps 体系,并充分利用云弹性进行高度可扩展的自动化测试,从而加速高质量的软件交付,推动中国测试行业整体效率的提升。

具体操作可以看官网文档:

  • MeterSphere官方文档
  • MeterSphere接口测试文档
  • MeterSphere接口自动化测试文档

创建接口定义

注意:这是企业里使用的,一般来说需要有企业管理员授权,给你一个账号才能登录进去使用。

目标: 测试MeterSphere的登录接口
URL: http://192.168.62.51:8079/signin

进入MeterSphere,点击左侧任务栏,选中【接口测试】,紧接着选择【接口定义】,进入下图页面

在这里插入图片描述

创建一个接口

在这里插入图片描述

此时打开了创建接口页面,输入相关内容
1、请求栏部分:完整的请求地址是 http://192.168.62.51:8079/signin ,但是此处的url只用输入接口的URL,也就是/signin,选择POST请求方法
2、选中请求体
3、选择JSON格式
4、根据接口文档,输入请求体内容,或者通过Fiddler抓包,抓到该URL请求里的请求体内容
5、点击保存

在这里插入图片描述

配置该接口的使用环境
点击两处任意一处,进入编辑页面
在这里插入图片描述

在编辑接口页面,右上角的下拉框,选中【环境配置】

在这里插入图片描述

进入到环境配置页面
1、点击左上角【+】,新建一个环境,选中【HTTP配置】
2、环境域名:以完整的请求地址是 http://192.168.62.51:8079/signin ,那么此处就填写域名为192.168.62.51:8079
3、点击右下角【添加】
4、点击右上角【确定】,完成配置

在这里插入图片描述

执行接口测试
1、选中刚才配置的环境
2、点击【测试】
3、执行接口测试后,会返回一个响应结果

在这里插入图片描述

设计接口测试用例

  1. 可以更换请求方法,进行测试
  2. 可以点击【请求体】,把请求体里的参数更换,比如输入有效、无效参数、不输入参数,进行测试
  3. 可以更换传参的格式进行测试,比如请求体里使用JSON格式传参,XML传参;或者使用QUERY参数传参

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

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

相关文章

C语言/数据结构——每日一题(移除链表元素)

一.前言 今天在leetcode刷到了一道关于单链表的题。想着和大家分享一下。废话不多说,让我们开始今天的知识分享吧。 二.正文 1.1题目要求 1.2思路剖析 我们可以创建一个新的单链表,然后通过对原单链表的遍历,将数据不等于val的节点移到新…

【Java从入门到精通】Java 流(Stream)、文件(File)和IO

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流…

获取淘宝商品销量数据接口

淘宝爬虫商品销量数据采集通常涉及以下几个步骤: 1、确定采集目标:需要明确要采集的商品类别、筛选条件(如天猫、价格区间)、销量和金额等数据。例如,如果您想了解“小鱼零食”的销量和金额,您需要设定好价…

扫雷实现详解【递归展开+首次必展开+标记雷+取消标记雷】

扫雷 一.扫雷设计思路二.扫雷代码逐步实现1.创建游戏菜单2.初始化棋盘3.打印棋盘4.随机布置雷5.统计周围雷的个数6.递归展开棋盘7.标记雷8.删除雷的标记9.保证第一次排雷的安全性棋盘必定展开10.排查雷11.判断输赢 三.扫雷总代码四.截图 一.扫雷设计思路 1.创建游戏菜单。  2.…

Javascript基础(三)

Javascript基础(一) Javascript基础(二) 引用数据类型 在之前的文章中,我们提及了与基本数据类型并列的引用数据类型,当时提到引用数据类型大致分为三类:数组Array,函数Function&a…

13.1 QQ邮箱

1. 邮箱发送 2. 准备工作 3. 整合SpringBoot 3.1 配置 依赖引入 <!-- 邮件服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>application.…

浅析扩散模型与图像生成【应用篇】(二十)——TiNO-Edit

20. TiNO-Edit: Timestep and Noise Optimization for Robust Diffusion-Based Image Editing 该文通过对扩散模型中添加噪声的时刻 t k t_k tk​和噪声 N N N进行优化&#xff0c;提升SD等文生图模型的图像编辑效果。作者指出现有的方法为了提升文生图模型的图像编辑质量&…

VISO流程图之子流程的使用

子流程的作用 整个流程图的框图多而且大&#xff0c;进行分块&#xff1b;让流程图简洁对于重复使用的流程&#xff0c;可以归结为一个子流程图&#xff0c;方便使用&#xff0c;避免大量的重复性工作&#xff1b; 新建子流程 方法1&#xff1a; 随便布局 框选3 和4 &#…

基于YOLOv8的水稻虫害识别系统,加入BiLevelRoutingAttention注意力进行创新优化

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的水稻虫害识别&#xff0c;阐述了整个数据制作和训练可视化过程&#xff0c;并加入BiLevelRoutingAttention注意力进行优化&#xff0c;最终mAP从原始的 0.697提升至0.732 博主简介 AI小怪兽&#xff…

MATLAB - 自定义惯性矩阵

系列文章目录 前言 一、关键惯性约定 Simscape 多体软件在惯性定义中采用了一系列约定。请注意这些约定&#xff0c;因为如果手动进行惯性计算&#xff0c;这些约定可能会影响计算结果。如果您的惯性数据来自 CAD 应用程序或其他第三方软件&#xff0c;这些约定还可能影响到您需…

【计算机毕设】在线商城系统设计与开发 - 免费源码(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 本项目旨在设计并实现一个在线商城系统&#xff0c;提供商品展示、购物车管理、订单管理等功能&#xff0c;为用户提供便捷的购物体验&#xff0c;…

并发-启动线程的正确姿势

目录 启动线程的正确姿势 Start方法原理解读 Run方法原理解读 常见问题 启动线程的正确姿势 start()与run()方法的比较测试结果可以看出&#xff0c;runnable.run()方法是由main线程执行的&#xff0c;而要子线程执行就一定要先调用start()启动新线程去执行run方法并不能成…

人工智能|推荐系统——工业界的推荐系统之召回

基于物品的协同过滤 ⽤索引,离线计算量⼤,线上计算量⼩ Swing额外考虑重合的⽤户是否来⾃⼀个⼩圈⼦,两个⽤户重合度⼤,则可能来⾃⼀个⼩圈⼦,权重降低。 基于用户的协同过滤 同样是离线计算索引,在线召回的流程 离散特征处理 Embedding 层参数数量=向量维度 类别数量 矩

知识图谱需求

文章目录 公共安全数字经济金融科技资源优化科学研究制造业转型公共健康人文发展 公共安全 公共安全领域信息化以现代通信、网络、数据库技术为基础&#xff0c;将所研究对象各要素汇总至数据库&#xff0c;并针对各个业务领域进行定制化开发&#xff0c;以满足公共安全实战需求…

网易研发休闲游戏,AI技术助力提升品质

易采游戏网5月3日消息&#xff0c;在数字化时代&#xff0c;游戏已经成为人们休闲娱乐的重要方式。作为国内领先的互联网科技公司&#xff0c;网易一直在游戏领域深耕细作&#xff0c;不断推出高质量的游戏产品。近期&#xff0c;网易宣布正在研发一系列休闲游戏&#xff0c;并…

【k8s】利用Kubeadm搭建k8s1.29.x版本+containerd

文章目录 前言1.准备的三台虚拟机2.安装 kubeadm 前的准备工作3.安装containerd1.解压安装包2.生成默认配置文件3.使用systemd托管containerd4.修改默认配置文件 4.安装runc5.安装 CNI plugins6.安装 kubeadm、kubelet 和 kubectl6.1 配置crictl 7.初始化集群1.打印初始化配置到…

2024五一杯数学建模B题思路分析 - 未来新城背景下的交通需求规划与可达率问题

文章目录 1 赛题选题分析 2 解题思路详细的思路过程放在文档中 ! ! &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;3 最新思路更新 1 赛题 B题 未来新城背景下的交通需求规划与可达率问题 随着城市化的持续发展&#xff0c;交通规划在新兴城市建设中显得尤为关…

Idea 自动生成测试

先添加测试依赖&#xff01;&#xff01; <!--Junit单元测试依赖--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.1</version><scope>test</scope><…

【Python可视化】pyecharts

Echarts 是一个由百度开源的数据可视化&#xff0c;凭借着良好的交互性&#xff0c;精巧的图表设计&#xff0c;得到了众多开发者的认可。而 Python 是一门富有表达力的语言&#xff0c;很适合用于数据处理。当数据分析遇上数据可视化时&#xff0c;pyecharts 诞生了。 需要安…

【idea-sprongboot项目】SSH连接云服务器进行远程开发

继上一篇博客【阿里云服务器】ubuntu 22.04.1安装docker以及部署java环境-CSDN博客 目录 五、远程开发方式 1&#xff09;SSH进行远程开发 步骤 配置文件同步 window电脑远程操控 正式通过window电脑远程操控 运行在linux服务器上的远程程序 调试在linux服务器上的远程程…