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

时间:2022-11-02 14:01:21

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

前言

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

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

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

  • MS简介
  • 安装部署
  • 接口测试
  • 性能测试
  • 使用总结

一、简介

1.项目介绍

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

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

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

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

2.产品优势

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

3.主要功能

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

4.界面展示

测试跟踪首页

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

接口测试首页

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

二、安装部署

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

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

  • 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

ms-server容器报错日志如下

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

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

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

解决方法:

① 进入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

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

msctl status

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

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

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

三、接口测试

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

1.接口定义

① 选择接口协议

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

② 创建模块树

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

  • 模块支持重命名、添加子模块、删除、展开/收起子模块等操作,选中目录可进行拖拽调整。
  • 支持通过模块名称进行模糊查询。

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

③ 快速创建接口

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

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

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

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

请求头

MeterSphere提供默认请求头变量。

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

QUERY参数

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

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

REST参数

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

请求体

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

  • 请求体是 form-data 和 x-www-form-urlencoded 格式时,可以选择参数类型。不同的参数类型,系统会提供默认属性。

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

  • 请求体是 json 格式时,系统默认提供两种形式维护 json 格式。

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

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

认证配置

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

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

其他设置

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

2.设置和使用环境变量

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

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

  • 通用配置中可以配置一些全局变量,如要登录的用户名、登录密码、或是其他一些常量;

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

  • HTTP配置中,可以配置项目的请求URL,一些固定不变的请求头等。后续测试过程中,可以直接选择此环境

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

运行测试

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

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

3.接口参数传递

提取参数

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

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

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

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

引用参数

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

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

4.创建接口流程

新增场景模块

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

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

导入接口

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

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

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

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

用例导入

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

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

执行测试

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

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

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

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

测试报告

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

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

四、性能测试

1.新建测试

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

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

2.报告查看

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

测试概览

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

服务器监控

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

五、使用总结

1.优点

① 功能强大且全面

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

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

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

② 用户手册详细

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

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

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

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

2.缺点

部署有一定难度

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

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

② 我在部署过程中,修改了配置文件、使用外部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