文章目录

  • 1. 前置准备
  • 2. 项目环境设置
  • 3. 创建接口
    • 3.1 创建接口API
    • 3.2 测试接口API
    • 3.3 设置接口case
  • 4. 场景接口自动化
    • 4.1 创建自动化场景
    • 4.2 场景化操作说明
      • 4.2.1 设置脚本场景变量
      • 4.2.2 接口列表导入
      • 4.2.3 场景导入
      • 4.2.4 自定义请求
      • 4.2.5 事务控制器
      • 4.2.6 等待控制器
      • 4.2.7 循环控制器
      • 4.2.8 条件控制器
  • 5. 操作说明
    • 5.1 前置操作
    • 5.2 后置操作
    • 5.3 断言规则
  • 6. 编写脚本
    • 6.1 脚本规则
    • 6.2 选择编译语言
    • 6.3 代码模板
    • 6.4 脚本代码细节说明
  • 7. 设置测试计划

1. 前置准备

MeterSphere 是基于JMeter核心引擎实现的开源持续测试平台,全面兼容 JMeter、Selenium 等主流开源标准,能够进行接口测试、UI测试、性能测试等

MeterSphere官网:https://metersphere.io

下载及安装教程:https://metersphere.io/docs/v3.x/installation/offline_installation/#41

当前所使用的版本是V2.10

2. 项目环境设置

  1. 新建项目环境

先对测试环境进行配置

  1. 配置环境—HTTP配置

在HTTP配置中配置域名或IP,设置请求头的参数,比如Authorization对应的值设置为 ${Authorization},变量${Authorization}的结果是从登录脚本中获得,在登录后,从响应结果中提取token的值,赋值给Authorization变量
在这里插入图片描述

  1. 配置环境—通用配置

将登录的账号和密码设置为全局变量,其它的自动化脚本都可以引用这个账号和密码,灵活性更好。后续若要调整系统登录的账号和密码直接修改这两个变量即可

在登录接口的后置操作中,添加提取参数,选择JSONPath,提取响应中的token,设置变量名为Authorization

3. 创建接口

创建接口:接口创建完毕后,可以在接口自动化时直接引用或复制已经写好的API或CASE,提高编写自动化脚本的效率,更加方便的维护接口

3.1 创建接口API

  1. 创建模块

选择左侧接口测试,点击创建模块及子模块

  1. 创建接口

选择创建的模块,点击创建接口

  1. 接口信息配置

输入下面这些信息:名称、模块、状态、请求类型、请求URL、请求头、请求体等

选择运行环境,点击保存

3.2 测试接口API

选择test,测试创建的API,可以设置断言,对接口响应进行校验

  1. 控制台:如果设置的前置脚本或后置脚本,脚本中有打印的日志的操作(log.info()),就可以在控制台中查看打印内容
  2. 提取:如果在后置操作中设置提取参数,那么就可以在提取这里查看参数的值
  3. 请求内容:在这里可以查看一个完整的请求信息,包括请求类型、URL、请求提、身份信息等

3.3 设置接口case

接口中传参是有必填和选填的,参数组合的情况不同,导致接口适用的场景也不同,所以就可以设置给接口传入不同参数的case

设置接口case 的目的:后面在做场景接口自动化时,可以直接引用case,这样更方便

  1. 点击添加case

  1. 修改case参数

设置用例名称,设置请求体参数,加上后置操作,断言等,再点击执行

最后点击保存case

4. 场景接口自动化

4.1 创建自动化场景

  1. 创建场景模块和子模块

  1. 设置场景信息

a. 填写脚本名称、选择模块、选择状态、责任人、用例登记

b. 点击右下角的+号,有这几种操作选取

c. 选择接口列表导入

接口导入弹窗中,先选择要使用的是哪个模块的API或CASE,在列表中勾选对应CASE,点击复制/引用

复制:就是把这个API或CASE直接复制过来,复制过来后,就可以对API或CASE进行修改参数等其他操作,这里的修改操作不影响原本的API或CASE

引用:只能使用API或CASE,不能进行修改操作,这个引用操作的好处就是,在接口定义中修改这个API或CASE时,这里引用就会同步修改

d. 选择运行环境,点击保存

在这里选择前面配置的项目环境后,点击保存,点击调试,运行脚本

4.2 场景化操作说明

场景化脚本一般有这几种操作方式:接口列表导入、场景导入、自定义请求、场景断言、等待控制器、事务控制器、循环控制器、条件控制器、自定义脚本

4.2.1 设置脚本场景变量

设置场景变量,这个变量的作用域就是这个脚本

场景变量当前使用频率比较高的就是常量和随机数

设置变量后,如果要使用这个变量那么就可以这样${user_name}来使用,非常的方便

a. 常量:比如要随机生成一个用户名,那么可以设置变量名和值,这个值一般写的是函数去随机获取值

点击下面这个,里面有很多常用的函数,比如取随机数,获取当前时间等

b. 随机数:按照对应操作输入数即可

4.2.2 接口列表导入

接口列表导入其实就是把前面在接口定义中写的API或CASE在这里来选择使用

选择要导入的哪个API或CASE,然后选择复制或引用

选择CASE和复制,在脚本步骤中也会体现出来

4.2.3 场景导入

场景导入就是将其它场景化脚本拿过来使用,当前场景导入主要用来导入账号登录

如下例子,登录场景的导入选择的是引用,这样好处是:

后面比如要修改所有脚本中登录的账号和密码,那么不用一个一个去修改,只需要修改这一个登录的脚本即可,维护性更好

4.2.4 自定义请求

自定义请求这个一般用于临时只用一次的接口请求(如果是后面会多次用到,还是建议在接口定义中创建API或CASE),当前自定义请求使用频繁不高

填写这个请求的信息后点击保存即可

4.2.5 事务控制器

事务控制器适用的情况是,如果脚本中许多步骤都是为了某一步骤来服务的,那么这里就建议使用事务控制器,好处是脚本步骤条理更加清晰、并且维护性更好

如下例子,添加新用户这个脚本,主要就是为了验证添加3个不同的角色是否能添加成功,但是添加完成后为了保证系统数据不会冗余,就要删除添加的这个新用户,所以这里使用事务控制器,将对这个一个角色的账号操作放在一起,使结构更加清晰

4.2.6 等待控制器

等待控制器适用的情况是,某些接口不能频繁请求或执行该接口后等几秒才会有数据,所以需要使用等待控制器

如下例子,从列表中提取xxx_id,因为有时候数据会等待几秒才生成完毕,需要等待几秒才可以。(强制等待

也可以使用循环控制器来实现软等待,就是设置比如每1秒请求一次,直到获取到数据才结束等待。

4.2.7 循环控制器

循环控制器适用的场景就是,在满足某些条件后,循环执行该步骤多少次

循环控制器有3种使用方式:次数循环、ForEach循环、While循环

次数循环就是固定的设置某个步骤执行多少次

While循环就是在满足某个条件后,循环执行多少次,但是注意设置超时时间

如下例子,While循环,必须满足${xx_num}值小于100时,才循环执行,直到${xxx_num}为100时,结束循环

4.2.8 条件控制器

条件控制器适用的情况是,某些步骤执行需要满足一些条件,所以这里用条件控制器来判断,保证条件满足后才执行该步骤,否则不执行

如下例子,查询数据列表,提取xxx_id,只有当xxx_id非空有值的时候,下面的下面的步骤才可以执行,否则就不执行

5. 操作说明

5.1 前置操作

前置操作:执行该接口之前要执行的操作

前置操作分为3种:前置脚本、前置SQL、等待控制器

前置操作主要使用前置脚本和等待控制器,后面会在目录6中详细介绍脚本编写

5.2 后置操作

后置操作:执行步骤后,需要执行的操作

后置操作分为3种:后置脚本、后置SQL、提取参数

后置脚本和前置脚本类似,这里说明一下提取参数

提取参数主要有这三种,当前接口响应主要是JSON格式的,所以一般选择JSONPath

要提取参数,需要先运行该步骤,也就是需要先有响应结果,才能提取值

5.3 断言规则

场景化脚本每一步执行完成后,需要添加断言,这是为了验证接口的响应结果是否为预期结果

脚本断言一般分为7种:文本、正则、JSONPath、Xpath、响应时间、脚本、文档结构校验

当前断言一般会用到:JSONPath、文本、脚本

JSONPath适用的情况是,只有当接口响应为JSON体是才可以

脚本是比较通用的,不论哪种情况都可以用写脚本来断言

文本就比较局限了,下面会进行说明

  1. JSONPath断言(使用频率最高)

只要接口响应是JSON格式,那么一般选JSONPath断言,

MS平台,提供了非常便捷的JSON断言功能,可以直接从响应结果中选取需要断言的内容

还有一种情况就是需要断言的值是变量,或者是从其他接口响应中提取出来的,那么下面就可以使用这种方式进行获取${xxxx}

这里的值${xxx},一般有这几种获取途径

(1)从场景变量中获取

(2)从当前接口的后置操作中获取

(3)从其他响应结果的后置操作(提取变量)中获取

(4)从整个项目的环境配置变量中获取
在这里插入图片描述

  1. 脚本断言(使用频率一般)

脚本断言虽相比与JSONPath方式断言较麻烦,但是好处是通用性更好,任何情况都可以用脚本断言完成

比如断言筛选24小时内的数据,但是直接用JSONPath就不能断言这种情况了,所以需要用脚本来实现时间的校验

  1. 文本断言(使用频率低)

文本断言主要分为3种:

确定断言内容后,选择断言条件,输入断言的值

比如断言接口响应的code等于200,或者断言请求头中是否包含application/octet-stream的情况

6. 编写脚本

编写脚本主要出现在这几种情况,前置操作脚本、后置操作脚本、断言规则脚本、场景化自定义脚本

脚本的编写方法是通用的,下面介绍如何快速编写脚本

6.1 脚本规则

只有断言脚本和其他脚本有所不同,这里多了变量名称和值,这是MS为了方便生成断言脚本提供的功能,输入变量名称选择等于或其他选项,输入预期值,然后MS就可以自动生成对应代码

变量名称和值不是必须要填写,也可以直接编写代码

6.2 选择编译语言

脚本的编译语言有4种:beanshell、python、groovy、javascript

使用python时,需要注意的是MS V2.10中内置的Python解释器是2.7的版本,而2.7版本是不支持中文的,所以在出现或使用中文的时候需要指定 utf-8"

6.3 代码模板

脚本中提供了一些比较会经常用到的代码模板

下面简单介绍几种使用频率比较高的模板,这个不区分编程语言,是通用的

  1. 在控制台打印信息:log.info(“xxx”)
  2. 设置环境参数

第一步提取token

第二步设置环境变量(全局):vars.put(${__metersphere_env_id}+“key”,“value”);

  1. 设置变量:vars.put(“variable_name”, “variable_value”)

下面看一下这个例子

提取用户id,在脚本中通过${id}方式使用提取的值,下面通过log.info(auth)在控制台打印获取的auth值,通过vars.put(“auth”, auth),设置变量auth,后面的所有步骤都可以提取到auth的值,通过${auth}使用上面设置的变量

  1. 插入自定义代码片段

设置经常会用到的代码模板,每次点击“插入自定义代码片段”使用设置的好的代码模板

a. 项目设置,点击自定义代码片段

b. 创建代码片段

c. 输入代码片段的名称,选择编程语言,编写脚本后保存

d. 在场景化中使用前面设置的代码片段模板,切换编程语言

注意这里只有切换到前面编写脚本使用到的编程语言后,这个代码片段中才会出现对应模板

e. 选取代码片段模板

6.4 脚本代码细节说明

下面这个代码片段中用if判断,当条件不满足时会执行if里面代码,需要注意的是,下面这个代码在断言脚本中必须出现,这个是断言脚本执行不通过时,会提示的信息,一般这三行代码中,我们只需要修改msg里面的内容即可

7. 设置测试计划

创建测试计划,将编写的所有场景化脚本都添加进去,可以一键执行,同时一键执行也可以暴露出脚本编写的一些问题,比如多个脚本之间是否会冲突导致执行失败,参数是否设置不合理等等

进入刚刚创建的计划,点击左侧场景用例,关联接口测试用例,设置完成后

点击一键执行,在报告中查看执行的结果

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

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

相关文章

C 语言介绍

C语言是由Dennis Ritchie开发的,用于创建与硬件设备(例如驱动程序,内核等)直接交互的系统应用程序。C编程被认为是其他编程语言的基础,这就是为什么它被称为母语。C是一种功能强大的通用编程语言。它可以用于开发操作系…

AI产品经理面试宝典第48天:产品设计与用户体验优化策略

1. 用户体验分析与产品设计逻辑 1.1 问:如何通过用户反馈优化AI产品体验? 答: 建立反馈闭环机制:通过应用内评分、用户访谈、行为埋点三维度收集数据,例如某语音助手产品通过NLP分析用户纠错语句,发现"误唤醒"问题占比37%; 优先级排序模型:采用Kano模型量化…

基于springboot的在线教育系统(源码+论文)

一、开发环境 本在线教育系统主要采用以下技术栈进行开发: B/S结构:基于浏览器/服务器模式,便于用户通过互联网访问系统,无需安装客户端软件。Spring Boot框架:简化了新Spring应用的初始搭建及开发过程,提…

Ubuntu 系统上部署禅道

在 Ubuntu 系统上部署禅道可以按照以下步骤进行,以下是基于禅道开源版的部署流程: 1. 安装必要依赖 首先安装禅道运行所需的环境(以 Ubuntu 20.04/22.04 为例): bash # 更新系统包 sudo apt update && sudo…

【vue-8】Vue3 Options API 生命周期函数全面解析

在 Vue.js 开发中,理解组件的生命周期是构建健壮应用程序的关键。虽然 Vue3 引入了 Composition API,但 Options API 仍然是许多开发者的首选,特别是对于从 Vue2 迁移的项目或更喜欢基于选项的代码组织的团队。本文将深入探讨 Vue3 中 Option…

周志华《机器学习导论》第8章 集成学习 Ensemble Learning

目录 8.1 个体与集成 8.2 Boosting Ada(Adaptive)Boost 8.3 Bagging 8.4 随机森林 8.5 结合策略 8.5.1 平均法 8.5.2 投票法 8.5.3 学习法 8.6 多样性 8.6.1 误差-分歧分解 error-ambiguity 8.6.2 多样性度量 8.6.3 多样性增强 8.1 个体与集…

Embassy实战:Rust嵌入式异步开发指南

嵌入式异步框架 Embassy 实例 以下是关于嵌入式异步框架 Embassy 的实用示例,涵盖常见外设操作、多任务协作和硬件交互场景。示例基于STM32和Raspberry Pi Pico等平台,使用Rust语言编写。 GPIO 控制 use embassy_stm32::gpio::{Input, Output, Pull, Speed}; use embassy_…

ChatGPT桌面版深度解析

ChatGPT桌面版深度解析:功能、安装与高效使用全攻略 一、核心功能全景解析 (一)全场景交互体系 全局热键唤醒 支持MacOS(Option空格)与Windows(Alt空格)全局快捷键,实现跨应用无缝调…

RLVR的一种扩展方案--RLPR论文阅读

论文链接:RLPR: EXTRAPOLATING RLVR TO GENERAL DOMAINS WITHOUT VERIFIERS 文章目录简介RLPRRLVR概率奖励/Probability Reward奖励设计标准差过滤总结简介 可验证奖励的强化学习(Reinforcement Learning with Verifiable Rewards, RLVR)在提升大语言模型&#xff…

odoo欧度小程序——添加用户

odoo欧度小程序添加登录用户 1. 直接在登录用户页面添加用户点击 添加登录用户输入用户和密码,点击登录验证进入odoo页面2. 在用户切换页面添加用户点击选择切换用户点击域名弹出菜单点击添加新用户输入用户和密码,点击登录验证进入odoo页面

Docker 应用数据备份、迁移方案

一、为什么要做Docker数据备份1、保障数据与配置的安全性防止数据丢失:Docker 容器本身是 “临时性” 的(基于镜像创建,删除后数据默认丢失),但容器中运行的应用(如数据库、日志服务)会产生持久…

【PTA数据结构 | C语言版】强连通分量

本专栏持续输出数据结构题目集,欢迎订阅。 文章目录题目代码题目 本题请你编写程序,输出给定有向图中的各个强连通分量,并统计强连通分量的个数。 输入格式: 输入首先在第一行给出 2 个整数,依次为有向图的顶点数 n&…

idea部署新项目时,用自定义的maven出现的问题解决

出现这个问题是因为maven版本和idea版本不兼容,例如图示是maven3.9和idea2021.3的版本不兼容,maven换成3.8.x即可解决

OCR 身份识别:让身份信息录入场景更高效安全

在银行柜台开户、线上平台实名认证等场景中,身份信息录入是基础环节,OCR 身份识别产品正成为提升效率与安全性的关键。​传统人工录入身份证信息,不仅耗时久,还易因手误导致姓名、号码出错,影响业务办理进度。而 OCR 身…

Web 服务器和Web 中间件

一、什么是 Web 中间件 Web 中间件(Web Middleware)是运行在 Web 服务器与实际业务程序之间的一层“胶水”软件,用来统一处理公共事务,让开发者专注写业务逻辑。常见职责: 请求/响应拦截(鉴权、日志、跨域、…

Paimon的部分更新以及DeleteVector实现

背景 本文基于 Paimon 0.9 出于对与Paimon内部的DeleteVctor的实现以及部分更新的实现进行的源码阅读。 关于 DeleteVector的介绍可以看这里 说明 对于Paimon来说无论是Spark中使用还是Flink使用,后面的逻辑都是一样的,所以我们以Spark为例来说。所以…

Redis 的事务机制是怎样的?

Redis 的事务机制 Redis支持事务机制,其主要目的是确保多个命令执行的原子性,即这些命令会作为一个不可分割的操作单元执行。 需要注意的是,Redis事务不支持回滚操作。从Redis 2.6.5版本开始,服务器会在命令累积阶段检测错误。在执行EXEC命令时,若发现错误则会拒绝执行事…

网安学习NO.17

1. VPN 概述定义:在公用网络(如 Internet、帧中继、ATM 等)中,通过技术手段虚拟出的一条企业内部专线,能像私有网络一样提供安全性、可靠性和可管理性。核心特征:利用公共网络构建,具备 “虚拟性…

MCU芯片AS32S601在卫星光纤放大器(EDFA)中的应用探索

摘要:本文聚焦于国科安芯推出的AS32S601型MCU芯片在卫星光纤放大器(EDFA)中的潜在应用,探讨其技术特性、抗辐射性能及适用性。通过分析其在单粒子效应脉冲激光试验中的表现,结合EDFA系统对控制芯片的要求,评…

Hexo - 免费搭建个人博客02 - 创建个人博客

导言我的博客:https://q164129345.github.io/ 开始一步一步地完成博客的创建。 一、初始化Hexo博客以上所示,运行以下指令在myCode文件夹里初始化一个hexo博客。 hexo init myblog二、安装依赖如上所示,完成依赖的安装。 cd myblog npm insta…