metersphere接口测试(1)使用MeterSphere进行接口测试

news/2025/3/16 0:17:09/

文章目录

    • 前言
    • 接口文档
    • 单接口测试
      • 环境配置
      • 梳理接口测试场景
      • 测试接口
    • 接口自动化
      • 怎么写复用性高的自动化测试用例
    • 总结

前言

大汉堡工作第203天,本篇记录我第一次接触接口测试任务,最近有些懈怠啊~

接口文档

  1. 首先就是接口地址,接口测试时用来访问接口。如果一个接口分为两个或多个不同的地址则需要分开进行测试,。
    在这里插入图片描述
  2. 接下来就是定义接口的请求方式,post方法是向指定资源提交数据,请求服务器进行处理。

    请求方式除了post外,还有Get、PUT、DELETE、HEAD、OPTIONS。
  3. 入参示例和请求参数,作用是理解输入格式,构建请求体;设计测试用例。

  4. 请求头(Request Headers)参数作用是定义客户端如何与服务器通信,对测试人员的作用主要有四点:①告诉服务器请求体中的数据格式②身份验证,确保只有经过授权的用户才能访问受保护的资源③提供用户代理信息:发起请求的客户端类型(如浏览器版本、操作系统等)④定制化请求行为:会话ID、语言偏好等
    在这里插入图片描述
  5. sign生成规则,放在接口的前置条件里,生成sign(签名),主要是为了确保请求的安全性和完整性。有效性一般不验证,都是3分钟或者用后即焚,目的是为了防止别人盗用。
    在这里插入图片描述
  6. 响应参数以及响应示例的作用是帮助测试人员了解API在不同情况下的预期输出,包括成功和错误场景;验证接口的正确性。可以根据这些信息来设计测试用例,确保所有可能的输出都被覆盖
    在这里插入图片描述

单接口测试

环境配置

首先是配置测试环境,目的是为了确保测试能够在正确的上下文中运行。
在这里插入图片描述
通用配置是配置一些全局参数,本次我没有使用到。HTTP配置里配置根URL,请求头里的Authorization设置为${token},代表了访问特定接口所需的认证令牌。
在这里插入图片描述
全局前置脚本的目的是为了在所有测试用例执行前统一处理一些公共逻辑,如登录获取token、初始化变量等,从而简化测试用例编写并提高测试效率。
下面的全局前置脚本的作用是执行一次登录操作以获取认证token,并将该token存储为全局变量供后续测试用例使用,使用beanshell语言,脚本执行顺序为步骤内前置脚本前。
在这里插入图片描述

梳理接口测试场景

使用xmind或者其他工具先简单梳理一下接口测试场景。一是因为一些接口的case执行需要他上游的接口先执行一次,比如积分解冻接口,需要先执行积分冻结接口,不然就可能报如下错误:

测试接口

  1. 添加接口
    按照接口文档要求填写参数,请求头可以不写全不影响。因为接口文档里的请求头有的需要写在case里的前置操作里,值没有确定时不方便填写;若是确定值可以填写。通常建议至少包含Content-Type
    在这里插入图片描述
    如果之后的接口测试用例出现了以下报错 – Authorization: Basic Og==,需要将接口的认证方式改为No Auth
    在这里插入图片描述
  2. 单接口测试(以一条正向用例举例)
    API保存完后点击CASE添加接口测试用例
    在这里插入图片描述

请求头中的参数需要前置脚本生成时先编写前置脚本
在这里插入图片描述
正确填写请求头,这里需要填写完整。
在这里插入图片描述
正确填写请求体
在这里插入图片描述
最后添加断言规则,不会写正则表达式的可以使用JSONPath来进行判断。JSONPath需要先执行调试获取响应结果。
在这里插入图片描述
执行完成之后点击推荐JSONPath断言,在出来的窗口中选择需要断言的数据即可。
在这里插入图片描述
这样一条正向的接口测试用例就编辑好了。逆向的测试用例根据需要修改数据即可。

接口自动化

  1. 点击接口自动化,全部场景里可添加子模块
    在这里插入图片描述
    点击右下角指南针一样,一直在转圈的按钮可以导入之前写好的接口测试用例
    在这里插入图片描述
    选择CASE,这里有复制和引用两个按钮
  • 复制:点击 “复制” 按钮,会将选中的接口用例数据(如 “退回不正确的积分” 等用例)进行复制操作,生成一个与原用例完全相同的副本,该副本独立于原用例,后续对副本的修改不会影响原用例,反之亦然。比如复制了 “退回不正确的积分” 用例后,修改副本的 API 路径等信息,原用例的相关信息不会改变。
  • 引用:点击 “引用” 按钮,是创建一个对选中接口用例的引用关系。被引用的用例与原用例指向同一份数据,若原用例发生变化(如修改了用例名称、API 路径等),通过引用使用该用例的地方也会同步变化。例如原 “退回不正确的积分” 用例的 API 路径被修改,那么引用该用例处显示的 API 路径也会随之改变。
    根据需要的场景进行选择,这里我都是选的复制。
    在这里插入图片描述
    根据测试场景选择好对应的case,编排好case的顺序就可以执行自动化测试了
    在这里插入图片描述

怎么写复用性高的自动化测试用例

比如在编写一个成功消费积分再退回的场景时,我的接口顺序如下:积分余额查询;组合支付积分冻结成功;组合支付积分扣减成功;积分余额查询;成功退回积分;积分余额查询
积分余额里的断言是写死的,等于固定值。
举个例子:执行了积分冻结和积分扣减接口操作后,剩余的积分还有760分,所以第二个积分余额接口的断言就直接用JSONPath拿取积分数据和760对比。
那这样只要我传入token的测试账号的积分发生变化,这个场景里的第二个积分余额查询断言就会发生错误,那该怎么处理这个问题呢?
在这里插入图片描述
解决办法之一就是使用全局变量,使用代码逻辑来进行判断。
全局变量可以在后置操作里提取,有两种方法

  • 使用JSONPath提取变量:适用于不需要进行运算的变量
    eg:JSONPath表达式:$.data.point ;变量名:point_before_deduction
  • 使用脚本编写变量:适用于需要进行运算的变量
    eg:def expectedPoint = point_before_deduction - deduction_point
    vars.put(“expectedPoint”, expectedPoint.toString())

定义完全局变量后就可以在断言里使用了。根据上面的例子,在第一个接口的后置操作里提取未进行扣减操作的积分。
在这里插入图片描述
第三个扣减积分的接口提取扣减的积分的值
在这里插入图片描述
第四个接口,积分余额查询接口JSONPath提取扣减完的积分的值,后置脚本计算期望的积分值并放入全局变量。
在这里插入图片描述
再在断言里添加脚本进行判断
PS:建议自己写脚本或者交给AI写,系统自己生成的代码总是出错
在这里插入图片描述
同样的操作再在最后一个积分查询接口执行一次,问题解决。这样不管传入token的测试账号的积分如何变化我都不需要维护脚本了。
在这里插入图片描述

总结

文章首先介绍了接口文档,如地址、请求方式等要素。接着阐述单接口测试流程,从环境配置到用例编写。最后介绍接口自动化,包括导入用例、编写高复用性用例及解决断言问题的办法 。


http://www.ppmy.cn/news/1579435.html

相关文章

Java泛型是什么?有什么作用?

Java泛型(Generics)是Java语言中一种类型参数化的机制,允许在类、接口、方法中使用类型参数,使代码能够处理多种数据类型,同时保证类型安全。泛型的主要目的是增强代码的复用性和安全性,避免类型转换错误。…

DeepSeek API 客户端使用文档

1. 简介 deep.py 是一个用于与 DeepSeek API 交互的 Python 客户端封装。它提供了简单易用的接口,支持对话历史管理、日志记录等功能,使得与 DeepSeek API 的交互更加便捷和可靠。 2. 功能特点 简单的接口设计自动管理对话历史完整的日志记录灵活的配…

《C#上位机开发从门外到门内》3-1:串口调试助手

文章目录 **1. 项目概述****2. 功能需求****2.1 核心功能****2.2 扩展功能** **3. 技术选型****3.1 开发语言****3.2 GUI 框架****3.3 串口通信库****3.4 数据解析****3.5 日志记录** **4. 系统设计****4.1 模块划分****4.2 数据流设计** **5. 详细设计****5.1 串口通信模块***…

深入理解Linux网络随笔(七):容器网络虚拟化--Veth设备对

深入理解Linux网络随笔(七):容器网络虚拟化 微服务架构中服务被拆分成多个独立的容器,docker网络虚拟化的核心技术为:Veth设备对、Network Namespace、Bridg。 Veth设备对 veth设备是一种 成对 出现的虚拟网络接口&…

探索 Rust 高效 Web 开发:Hyperlane 框架深度解析

探索 Rust 高效 Web 开发:Hyperlane 框架深度解析 在当今的 Web 开发领域,追求高性能、轻量级的框架一直是开发者们的不懈追求。对于 Rust 语言开发者而言,Hyperlane 框架正以其独特的魅力崭露头角,为构建现代 Web 服务提供了一种…

clickhouse网络安全日志 网络安全日志保存时间

系统账号管理不规范 由于root权限为系统最高权限,可以对系统进行所有管理配置操作,一旦被攻击者获取利用,将严重威胁网站的安全性。建议禁用roo直接登录,开放普通用户登录,通过普通用户登录再su进行系统管理 adduser …

蓝桥杯第二天:2023省赛C 1题 分糖果

public static void main(String[] args) {Scanner scan new Scanner(System.in);int n,x;n scan.nextInt();x scan.nextInt();String res1;res1 scan.next();char res[] res1.toCharArray();Arrays.sort(res);//第一种情况:糖果是aaaaaa...这种类型的&#xf…

宇树ROS1开源模型在ROS2中Gazebo中仿真

以GO1为例 1. CMakelists.txt更新语法 cmake_minimum_required(VERSION 3.8) project(go1_description) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")add_compile_options(-Wall -Wextra -Wpedantic) endif() # find dependencies find…