4

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere

 2 years ago
source link: https://blog.51cto.com/u_12612738/5816077
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere

精选 原创

大刚测试开发实战 2022-11-02 11:04:23 博主文章分类:自动化测试 ©著作权

文章标签 开源测试平台 自动化测试平台 Jmeter 文章分类 软件测试 软件研发 阅读数162

声明:以下文章内容所涉及的任何工具及平台均出自本人日常工作使用,或兴趣爱好研究。没有收到任何机构或组织充值,不存在任何广告行为。喜欢的点个赞、收藏、转发就好。

前段时间满怀信心地发表了《​ ​开源测试平台横向测评系列​​》的预告篇,准备就Metersphere、Yapi、teprunner、流马、sonic等各大开源测试平台从安装、试用等多个维度开展对比、总结,并记录成文档发表在文章上。原计划是分多篇来写:部署篇、使用篇、拓展篇、总结篇,中间有个群友建议可以只写一篇万字长文,这样也方便大家统一收藏和转载。想想也觉得挺有道理,就改变了原计划。一直以来,这件事情也在有条不紊地进行着,虽然进度比较慢。可就在前几天,已经写了一半,部署各大测试平台的那台服务器突然中毒挂掉了,不得不重新安装系统,真是欲哭无泪。

趁着这个周末,我正在慢慢地将各个服务恢复,刚好也借着这个机会,把各个平台的部署、用法又重新梳理了一遍,准备还是按原计划分多篇进行,稍有不同的是,会分成每个平台写一篇文章,最后再写一篇总结对比。这样,写一篇发一篇,进度可能还会快一些,免得攒了好久最后还得推倒重来、前功尽弃。

本篇可以算作是这个系列的第一篇正式文章,主要介绍一站式开源持续测试平台Metersphere,以下简称MS。内容大概分为以下几个方面:

1.项目介绍

项目地址:​ ​https://github.com/metersphere/metersphere​

使用文档:​ ​https://metersphere.io/docs/​

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter

MeterSphere 是一款一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等,全面兼容 JMeter、Selenium 等主流开源标准,能够有效助力开发和测试团队在线共享协作,实现端到端的测试管理跟踪可视化、自动化测试、性能测试及融入持续交付 DevOps 体系,并充分利用云弹性进行高度可扩展的自动化测试,从而加速高质量的软件交付,推动中国测试行业整体效率的提升。(官方简介)

2.产品优势

  • 开源:基于开源、兼容开源;按月发布新版本、日均下载安装超过100次、被大量客户验证;
  • 一站式:一个产品全面涵盖测试跟踪、接口测试、UI测试、性能测试并打通联动;
  • 全生命周期:一个产品满足从测试计划、测试执行到测试报告分析的全生命周期需求;
  • 持续测试:无缝对接 Bug 管理工具和持续集成工具等,能将测试融入持续交付和 DevOps 体系;
  • 团队协作:在线 Web 门户、分权分域,在线共享协作管理资产沉淀资产,支持建立公司级门户,无论团队规模如何,总有适合的落地方式。

3.主要功能

  • 测试跟踪: 对接主流项目管理平台,测试过程全链路跟踪管理;列表脑图模式自由切换,用例编写更简单、测试报告更清晰;
  • 接口测试: 比 JMeter 易用,比 PostMan 强大; API 管理、Mock 服务、场景编排、多协议支持,你想要的全都有;
  • UI 测试: 基于 Selenium 浏览器自动化,高度可复用的测试脚本;无需复杂的代码编写,人人都可开展的低代码自动化测试(企业版支持,社区版不支持);
  • 性能测试: 兼容 JMeter 的同时补足其分布式、监控与报告以及管理短板; 轻松帮助团队实现高并发、分布式的性能压测,完成压测任务的统一调度与管理。

4.界面展示

测试跟踪首页

 ​

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_02

 ​

接口测试首页

 ​

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_03

 ​

二、安装部署

1.下载离线安装包

由于项目较为庞大,且在线安装是通过GitHub下载,速度较慢,因此采用离线安装的方式较为妥当。离线安装的另一好处就是可以在安装前自由配置各个组件的端口号。

项目地址:​ ​https://github.com/metersphere/metersphere/releases​

官方文档:​ ​https://metersphere.io/docs/installation/offline_installation/​

下载地址:​ ​https://community.fit2cloud.com/#/download/metersphere/v2-0-0​

我下载的是最新版2.0的安装包,解压安装包:

tar -xvf metersphere-offline-installer-v2.0.0.tar.gz

2.目录结构

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_04

通过解压后的目录文件可以看出:

  • docker目录:主要存放docker及docker-compose相关的命令脚本,由于我的服务器已经安装过,所以后续安装过程会跳过docker及docker-compose的安装(安装日志中可以看出)
  • images:目录主要存放MS各个组件的相关镜像文件(用于创建各个组件对应的容器)
  • metersphere:目录主要存放MS各个组件的docker-compose的yml配置文件(docker-compose根据对应的yml文件安装各个组件、容器编排)
  • install.conf:为安装配置文件(install.sh安装时会读取此配置文件)
  • install.sh:为MS整个项目的安装脚本
  • msctl:为MS项目的管理命令工具,类似gitlab的gitlab-ctl命令

3.修改安装配置文件

修改配置文件install.conf,如果一些端口已被其他服务占用,需要提前修改好端口号,比如mysql的3306、redis的6379等

# 基础配置
## 安装路径, MeterSphere 配置及数据文件默认将安装在 ${MS_BASE}/metersphere 目录下
MS_BASE=/opt
## MeterSphere 使用的 docker 网络网段信息
MS_DOCKER_SUBNET=172.30.10.0/24
## 镜像前缀, MeterSphere 相关组件使用的 Docker 镜像前缀, 例如 registry.cn-qingdao.aliyuncs.com/metersphere
MS_IMAGE_PREFIX=registry.cn-qingdao.aliyuncs.com/metersphere
## 镜像标签, MeterSphere 相关组件使用的 Docker 镜像标签
MS_IMAGE_TAG=v2.0.0
## 性能测试使用的 JMeter 镜像
MS_JMETER_IMAGE=${MS_IMAGE_PREFIX}/jmeter-master:5.5-ms1-jdk11
## 安装模式
MS_INSTALL_MODE=allinone
## MeterSphere 主程序的 HTTP 服务监听端口
MS_SERVER_PORT=8081
MS_SERVER_HTTPS_PORT=8444
## MeterSphere Node-Controller 组件的 HTTP 服务监听端口
MS_NODE_CONTROLLER_PORT=8082
MS_NODEEXPORTER_PORT=9100

# 数据库配置
## 是否使用外部数据库
MS_EXTERNAL_MYSQL=false
## 数据库地址
MS_MYSQL_HOST=mysql
## 数据库端口
MS_MYSQL_PORT=3307
## 数据库库名
MS_MYSQL_DB=metersphere
## 数据库用户名
MS_MYSQL_USER=root
## 数据库密码
MS_MYSQL_PASSWORD=Password123@mysql

# Prometheus 配置
## 是否使用外部Prometheus
MS_EXTERNAL_PROM=false
MS_PROMETHEUS_PORT=9090

# Redis 配置
## 是否使用外部Redis
MS_EXTERNAL_REDIS=false
## Redis 端口
MS_REDIS_PORT=6380
## Redis 密码
MS_REDIS_PASSWORD=Password123@redis
## Redis地址
MS_REDIS_HOST=$(hostname -I|cut -d" " -f 1)

# Kafka 配置
## 是否使用外部 Kafka
MS_EXTERNAL_KAFKA=false
## Kafka 地址
MS_KAFKA_HOST=192.168.1.122
## Kafka 端口
MS_KAFKA_PORT=9092
## 性能测试结果数据使用的 Kafka Topic
MS_KAFKA_TOPIC=JMETER_METRICS
## 性能测试日志数据使用的 Kafka Topic
MS_KAFKA_LOG_TOPIC=JMETER_LOGS
## 性能测试定时任务通知使用的 Kafka Topic
MS_KAFKA_TEST_TOPIC=LOAD_TESTS
## 重构后性能测试结果数据使用的 Kafka Topic
MS_KAFKA_REPORT_TOPIC=JMETER_REPORTS

# TCP MOCK 端口范围
MS_TCP_MOCK_PORT=10000-10010

# seleniarm 容器配置
## 是否启动seleniarm容器
MS_SELENIARM_ENABLED=false

4.安装MS

/bin/bash install.sh

安装过程log:

注意:MS安装和运行依赖docker和docker-compose,如果识别到系统中不存在docker的话,安装MS过程中会先安装docker和docker-compose,如果识别到已经安装,则会跳过安装。

存在已安装的 MeterSphere, 安装目录为 /opt/metersphere, 执行升级流程
[MeterSphere Log]: 拷贝安装文件到目标目录
‘./metersphere/docker-compose-kafka.yml’ -> ‘/opt/metersphere/docker-compose-kafka.yml’ (backup: ‘/opt/metersphere/docker-compose-kafka.yml.20220803-1415’)
‘./metersphere/docker-compose-redis.yml’ -> ‘/opt/metersphere/docker-compose-redis.yml’
‘./metersphere/docker-compose-prometheus.yml’ -> ‘/opt/metersphere/docker-compose-prometheus.yml’ (backup: ‘/opt/metersphere/docker-compose-prometheus.yml.20220803-1415’)
‘./metersphere/docker-compose-node-controller.yml’ -> ‘/opt/metersphere/docker-compose-node-controller.yml’ (backup: ‘/opt/metersphere/docker-compose-node-controller.yml.20220803-1415’)
‘./metersphere/docker-compose-mysql.yml’ -> ‘/opt/metersphere/docker-compose-mysql.yml’ (backup: ‘/opt/metersphere/docker-compose-mysql.yml.20220803-1415’)
‘./metersphere/conf/my.cnf’ -> ‘/opt/metersphere/conf/my.cnf’ (backup: ‘/opt/metersphere/conf/my.cnf.20220803-1415’)
‘./metersphere/conf/version’ -> ‘/opt/metersphere/conf/version’ (backup: ‘/opt/metersphere/conf/version.20220803-1415’)
‘./metersphere/conf/redis.conf’ -> ‘/opt/metersphere/conf/redis.conf’
‘./metersphere/conf/prometheus/prometheus.yml’ -> ‘/opt/metersphere/conf/prometheus/prometheus.yml’ (backup: ‘/opt/metersphere/conf/prometheus/prometheus.yml.20220803-1415’)
‘./metersphere/conf/metersphere.properties’ -> ‘/opt/metersphere/conf/metersphere.properties’ (backup: ‘/opt/metersphere/conf/metersphere.properties.20220803-1415’)
‘./metersphere/version’ -> ‘/opt/metersphere/version’ (backup: ‘/opt/metersphere/version.20220803-1415’)
‘./metersphere/docker-compose-seleniarm.yml’ -> ‘/opt/metersphere/docker-compose-seleniarm.yml’
‘./metersphere/docker-compose-base.yml’ -> ‘/opt/metersphere/docker-compose-base.yml’ (backup: ‘/opt/metersphere/docker-compose-base.yml.20220803-1415’)
‘./metersphere/docker-compose-server.yml’ -> ‘/opt/metersphere/docker-compose-server.yml’ (backup: ‘/opt/metersphere/docker-compose-server.yml.20220803-1415’)
‘./metersphere/logs/README.md’ -> ‘/opt/metersphere/logs/README.md’ (backup: ‘/opt/metersphere/logs/README.md.20220803-1415’)
[MeterSphere Log]: ======================= 开始安装 =======================
[MeterSphere Log]: 检测到 Docker 已安装,跳过安装步骤
[MeterSphere Log]: 启动 Docker
Redirecting to /bin/systemctl start docker.service
[MeterSphere Log]: 检测到 Docker Compose 已安装,跳过安装步骤
[MeterSphere Log]: 加载镜像
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/jmeter-master:5.5-ms1-jdk11
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/kafka:3.2.0
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/metersphere:v2.0.0
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/ms-data-streaming:v2.0.0
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/ms-node-controller:v2.0.0
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/mysql:8.0.28
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/node-exporter:latest
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/prometheus:latest
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/redis:6.2.6
Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/seleniarm-grid-all:4.1.4-20220519
[MeterSphere Log]: 启动服务

Removing network metersphere_ms-network
Network metersphere_ms-network not found.
Removing volume metersphere_ms-conf
Volume metersphere_ms-conf not found.
Removing volume metersphere_ms-logs
Volume metersphere_ms-logs not found.
Removing volume metersphere_ms-data
Volume metersphere_ms-data not found.
Removing volume metersphere_ms-mysql-data
Volume metersphere_ms-mysql-data not found.
Removing volume metersphere_ms-prometheus-data
Volume metersphere_ms-prometheus-data not found.
Removing volume metersphere_ms-prometheus-conf
Volume metersphere_ms-prometheus-conf not found.
Removing volume metersphere_ms-redis-data
Volume metersphere_ms-redis-data not found.

Creating network "metersphere_ms-network" with driver "bridge"
Creating volume "metersphere_ms-conf" with default driver
Creating volume "metersphere_ms-logs" with default driver
Creating volume "metersphere_ms-data" with default driver
Creating volume "metersphere_ms-mysql-data" with default driver
Creating volume "metersphere_ms-prometheus-data" with default driver
Creating volume "metersphere_ms-prometheus-conf" with default driver
Creating volume "metersphere_ms-redis-data" with default driver
Creating mysql ...
Creating ms-prometheus ...
Creating ms-node-controller ...
Creating redis ...
Creating kafka ...
Creating kafka ... done
Creating ms-prometheus ... done
Creating mysql ... done
Creating ms-node-controller ... done
Creating redis ... done
Creating nodeexporter ...
Creating nodeexporter ... done
Creating ms-data-streaming ...
Creating ms-data-streaming ... done
Creating ms-server ...
Host is already in use by another container
Creating ms-server ... error

ERROR: for ms-server Cannot start service ms-server: driver failed programming external connectivity on endpoint ms-server (52b0506605c32dc29746d636c3a11716044629df45c84791420753001770cb68): Error starting userland proxy: listen tcp4 0.0.0.0:8443: bind: address already in use

ERROR: for ms-server Cannot start service ms-server: driver failed programming external connectivity on endpoint ms-server (52b0506605c32dc29746d636c3a11716044629df45c84791420753001770cb68): Error starting userland proxy: listen tcp4 0.0.0.0:8443: bind: address already in use
Encountered errors while bringing up the project.

Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------
kafka /opt/bitnami/scripts/kafka ... Up (healthy) 0.0.0.0:9092->9092/tcp,:::9092->9092/tcp
ms-data-streaming /deployments/run-java.sh Up (healthy)
ms-node-controller /deployments/run-java.sh Up (healthy) 0.0.0.0:8082->8082/tcp,:::8082->8082/tcp, 0.0.0.0:9100->9100/tcp,:::9100->9100/tcp
ms-prometheus /bin/prometheus --config.f ... Up (healthy) 0.0.0.0:9090->9090/tcp,:::9090->9090/tcp
ms-server /deployments/run-java.sh Exit 128
mysql docker-entrypoint.sh mysqld Up (healthy) 0.0.0.0:3307->3306/tcp,:::3307->3306/tcp, 33060/tcp
nodeexporter /bin/node_exporter --path. ... Up (healthy)
redis docker-entrypoint.sh redis ... Up (healthy) 0.0.0.0:6380->6379/tcp,:::6380->6379/tcp
======================= 安装完成 =======================

请通过以下方式访问:
URL: http://$LOCAL_IP:8181
用户名: admin
初始密码: metersphere
您可以使用命令 'msctl status' 检查服务运行情况.

根据安装日志,发现ms-server这个容器启动失败了,因为8443端口已被其他服务占用。当然如果你本地这个端口没有被占用的话,安装过程就会顺利些。所以最好在安装前提前确认好install.conf中默认的各个端口有没有被占用,或是提前修改为其他端口。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_05

ms-server容器报错日志如下

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_06

原因:metersphere工作人员说是“flyway执行sql出错了”

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_07

解决方法:

① 进入mysql数据库,找到metersphere_version表里最后一条success值为0的数据,查看该条数据的script字段值,例如:V92_v1.11.2_release.sql

② ​ ​https://github.com/metersphere/metersphere/tree/master/backend/src/main/resources/db/migration​​上找到与第一步中script值相对应的sql文件,将文件中的sql语句复制到metersphere数据库中再执行一遍;

③ 执行完后,将该条数据的success字段值改为1

④ 重启ms-server容器

docker restart ms-server
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_08

再次查看各个组件状态,各个组件的相关容器均已启动:

msctl status
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_09

5.msctl命令

msctl命令是MS自带的管理工具,类似于Gitlab的gitlabctl命令。安装完成后,后续即可借助msctl统一管理MS相关的容器服务,例如:重启、停止、卸载等。我们可以查看帮助命令,了解其具体用法:

msctl --help

MeterSphere 控制脚本

Usage:

./msctl.sh [COMMAND] [ARGS...]

./msctl.sh --help

Commands:

status 查看 MeterSphere 服务运行状态

start 启动 MeterSphere 服务

stop 停止 MeterSphere 服务

restart 重启 MeterSphere 服务

reload 重新加载 MeterSphere 服务

upgrade 升级 MeterSphere 至最新版本

upgrade [RELEASE] 根据版本号搜索离线包,升级 MeterSphere 至对应版本

uninstall 卸载 MeterSphere 服务

version 查看 MeterSphere 版本信息

6.登录系统

 ​http://192.168.1.122:8181/​​,账号:admin,初始密码:metersphere

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_10
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_11

三、接口测试

由于我安装的是社区版,不支持UI测试(企业版支持),所以重点以接口测试作为案例进行介绍。MS的接口测试引擎是Jmeter,相当于在Jmeter的基础上深度定制化。

1.接口定义

① 选择接口协议

点击左上角【HTTP】下拉框,可切换接口协议,目前支持HTTP、TCP、SQL和DUBBO四种协议。

② 创建模块树

接口定义可以分模块管理,按照测试项目实际功能划分为多级模块进行管理,最多可分八级。鼠标悬浮在模块顶部,点击【+】创建一级模块。

  • 模块支持重命名、添加子模块、删除、展开/收起子模块等操作,选中目录可进行拖拽调整。
  • 支持通过模块名称进行模糊查询。
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_12

③ 快速创建接口

接口定义详情页面,可填写基础信息、请求参数、响应内容等信息进行接口定义创建。

在API页面中可以对接口的基础信息、请求及响应定义、依赖关系进行详细编辑。

对已有的接口,更改接口地址、请求头、请求参数等内容,点击保存时,会弹出同步更新设置确认框。

接口编辑页面由四个功能Tab页组成:
1.【API】:接口定义详情页面
2.【TEST】:接口的调试信息页面
3.【CASE】:接口用例管理页面
4.【Mock】:接口Mock服务管理页面

MeterSphere提供默认请求头变量。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_13
QUERY参数

QUERY参数是在接口地址栏中跟在?后面的参数,如 updateapi?id=11。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_14
REST参数

REST参数是在接口地址栏中被【/】分隔的参数,如updateapi/{id}。

请求体参数支持多种形式:form-data,x-www-form-urlencoded,json,xml,raw,binary。

  • 请求体是 form-data 和 x-www-form-urlencoded 格式时,可以选择参数类型。不同的参数类型,系统会提供默认属性。
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_15
  • 请求体是 json 格式时,系统默认提供两种形式维护 json 格式。
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_16
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_17

可支持 Basic Auth 的认证方式和对数据加密。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_18

可设置证书、跟随重定向、连接超时、响应超时时间等。

2.设置和使用环境变量

在MeterSphere中,可以设置“环境变量”,给使用指定同一测试环境参数测试的接口测试、场景自动化测试用例使用。 下表为在请求参数的QUERY参数、REST参数、请求体、前后置BeanShell脚本、前后置Python脚本中引用、设置变量的方法,以及调试时打印变量值且能够到控制台查看、转换变量类型的常用方法。

1.在“项目环境”页面中,如图,可以选择“创建环境”,在“创建环境”对话框“通用配置”选项卡下配置环境变量:

  • 通用配置中可以配置一些全局变量,如要登录的用户名、登录密码、或是其他一些常量;
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_19
  • HTTP配置中,可以配置项目的请求URL,一些固定不变的请求头等。后续测试过程中,可以直接选择此环境
开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_20

tab切换到TEST,注意:如果配置了全局环境,则需要在测试页面中选择配置的环境,我配置的环境名为rs_env,点击“测试”,如下:登录成功,返回response

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_21

3.接口参数传递

在测试过程中,我们通常不止测试单一接口,还会测试接口的业务流程,这个时候就会用到“提取上一个接口的返回值、传递给后面的接口使用”。MS的参数提取与传递与Jmeter一致,可以使用Jsonpath方式提取:

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_22

例如:我当前B获取用户信息接口需要用到A登录接口返回体中的b字段(user_id),那么则可以在A登录接口的后置操作中添加其他参数的操作:取名为提取user_id,变量名为user_id,jsonpath表达式为$.b

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_23

在B获取用户信息接口中,需要在接口请求头传入user_id,直接通过${user_id}引用:

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_24

4.创建接口流程

新增场景模块

在接口测试-接口自动化中,创建“场景”文件夹,例如:登录,随后新增一个场景,例如:登录流程。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_25

右侧“+”号展开后,可以选择从接口列表中选择之前创建的接口导入:

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_26

导入完成后,即可在登录流程这个场景中看到导入的接口作为步骤,拖动接口上下滑动可以调整步骤顺序。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_27

支持导入第三方测试用例,如Postman、Jmeter文件,以及Har格式等。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_28

在调试前,需要先选择运行环境

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_29

随后点击右侧调试按钮即可运行测试。通过下图可以看出,这个场景中包含的两个接口均执行通过。通过A接口传递过来的user_id,B接口成功获取到了用户信息:

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_30

测试报告比较简洁,没那么多花里胡哨的东西,就是一些测试结果的展示,底部能看到相关响应信息

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_31

四、性能测试

1.新建测试

支持分布式部署,以Jmeter为测试引擎,可以导入执行Jmx脚本,也可以导入接口用例。对于场景、压力等配置,通过可视化界面就可以实现,比较人性化。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_32

2.报告查看

对于性能测试我研究得不多,本次仅仅是导入了一个接口测试用例作为简单示例:

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_33

服务器监控

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_自动化测试平台_34

五、使用总结

① 功能强大且全面

MS的定位是一体化测试平台,除了提供上述介绍的接口测试和性能测试,还提供:

  1. UI自动化测试(社区版不支持)
  2. 测试跟踪:用例管理、缺陷跟踪(也可以集成jira、tapd等)

功能基本上覆盖到了测试的方方面面。

② 用户手册详细

总体来说MS的用户手册及教程文档非常详细,只要花点功夫、大多数问题都能在上面找到答案。在部署和使用过程中,我基本都是参照官方使用手册。除了有少数找不到答案的问题,是在微信群里提问。

③ 社区活跃度高,关注用户

经过多年发展,粉丝基数也比较大(我加的微信群是47群)。社区活跃度高,活跃度高就意味着被大家认可和接受。粉丝提交issue和建议也是促进其不断优化迭代的基础。另外有一点,我做的比较好的,就是会有专门的MS方面的人沟通维系用户群体,跟进使用感受,收集意见反馈。

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_Jmeter_35

部署有一定难度

有优点也就有缺点,从我个人角度看,第一个缺点我觉得就是软件比较重带来部署难度问题。虽然它支持一键部署,但如果部署过程中出现问题,排查还是稍有困难。比如:

① 上述文中提到的端口占用问题,如果我事先就是没有一一排查端口占用,部署完成后服务起不来,如果不是专业人士,根本不知道要改数据库里的哪些东西;

② 我在部署过程中,修改了配置文件、使用外部Redis数据库,部署成功后,服务起不来,后来修改配置使用内部数据库,再次安装没有创建Redis容器(确认数据库配置没问题),最后卸载、删除所有相关目录,再次安装好了。

当然,以上并非完全是MS的问题。我只是强调根据个人水平和排查解决问题能力的不同,难度也会不同。如果用一个纯净版的服务器安装,可能会好很多。

不支持UI自动化测试

MS定位是一站式测试平台,但社区版并不支持UI自动化测试,企业版支持,没体验过,可能需要付费。UI自动化不是什么新鲜的东西了,很多中小型开源平台都支持,不太明白那么大、那么成熟的平台为啥要有所保留。

3.总结评分

由于篇幅、个人时间以及能力限制,只罗列了上述有限的功能和使用细节。简单对MS做个评分总结,评分过程中可能稍带有主观色彩,毕竟我也是用户,但会尽量本着客观公众的原则。评测还是基于之前预告篇中的维度:

测评维度

详细说明

评分(星级越高,得分越高)

1.依赖环境:多,不过可以一键部署

2.搭建难度:稍有难度,推荐使用纯净版服务器安装

1.是否支持导入用例:支持多种平台及格式导入

2.用例执行顺序编排:支持,可以拖动

☆☆☆☆☆

1.单接口测试:支持,可以导入CSV参数化和数据驱动

2.接口流程测试:支持,多种参数提取方式

3.测试报告:支持,简洁

☆☆☆☆☆

UI自动化测试

1.APP:社区版不支持

2.Web:社区版不支持

支持,分布式、可视化压力配置、定时任务、导入Jmeter文件

☆☆☆☆☆

1.是否支持二开:支持

2.是否支持定时任务:支持

3.是否支持接入CICD:支持

4.是否支持测试结果度量:支持

5.用户权限配置:支持,不同用户不同权限

6.测试管理:支持,XMind、普通用例,也可以导入

7.缺陷跟踪:支持,也可以集成jira、tapd等

☆☆☆☆☆

1.文档支持(部署教程、操作手册):详细

2.代码更新维护频率:高,长期维护、明确的发版计划

3.社区活跃度:高

☆☆☆☆☆

一句话总结:MS功能强大,覆盖全面,可以满足你各种不同需求;功能比较多,简单使用不成问题,但如果想要玩得精、玩得溜,也需要一定的学习和摸索成本。任何测试框架、测试平台,重要的是为测试团队赋能,解决测试过程中的问题,提升测试效率,MS或许是一个不错的选择。

​更多干货,欢迎关注《测试开发实战》!

开源测试平台横向测评系列MS篇:一站式开源持续测试平台Metersphere_开源测试平台_36

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK