最近公司想要搭建一个接口自动化测试平台,从头开始的话工作量太大了,因此准备找一个开源平台进行二开,经过几天的查找发现了MeterSphere一站式开源测试平台,使用java+vue,覆盖了测试管理、接口测试、UI 测试和性能测试等众多功能,先去官方的试用地址体验了一下还是比较满足需求的,于是准备先在本地搭建一下。
项目Github地址:GitHub - metersphere/metersphere: MeterSphere 一站式开源持续测试平台,为软件质量保驾护航。搞测试,就选 MeterSphere!
官方文档:MeterSphere 文档
免费试用地址:MeterSphere - 专业测试云
metersphere :主要应用启动,包含前后端代码,由于本人不熟悉微服务,因此使用的是v2.2未拆分微服务的版本,Github地址
https://github.com/metersphere/metersphere
ms-jmeter-core:jmeter核心依赖,选择和metersphere一样的版本,Github地址: https://github.com/metersphere/ms-jmeter-core
将上面2个项目的代码拉取下来后,使用idea打开配置maven及jdk
配置好ms-jmeter-core项目的maven和jdk后,pom.xml中可能会有插件报错,不用管
直接在Terminal中执行mvn clean install即可打包成功
根据官方文档说明源码搭建 (前后端分离) - MeterSphere 文档MeterSphere 对数据库部分配置项有要求,需要修改本地的数据配置
我本地只修改了以下内容
max_connections=2000
innodb_buffer_pool_size=1G
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然后在服务中重启mysql服务,并创建数据库
CREATE DATABASE `metersphere_dev` /*!40100 DEFAULT CHARACTER SET utf8mb4 */
注意:如果修改配置后无法启动mysql服务可以将sql_mode参数中的NO_AUTO_CREATE_USER去掉再启动
根据官方文档说明源码搭建 (前后端分离) - MeterSphere 文档
首先在metersphere项目根目录下创建\opt\metersphere\conf\metersphere.properties文件
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/metersphere_dev?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
# kafka 配置,node-controller 以及 data-streaming 服务需要使用 kafka 进行测试结果的收集和处理
kafka.partitions=1
kafka.replicas=1
kafka.topic=JMETER_METRICS
kafka.test.topic=JMETER_TESTS
kafka.bootstrap-servers=localhost:9092
kafka.log.topic=JMETER_LOGS
kafka.report.topic=JMETER_REPORTS
# node-controller 所使用的 jmeter 镜像版本
jmeter.image=registry.fit2cloud.com/metersphere/jmeter-master:0.0.6
# TCP Mock 端口范围
tcp.mock.port=10000-10010
# Redis 配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123456
# 启动模式,lcoal 表示以本地开发模式启动
run.mode=local
将项目目录中 backend/src/main/resources/jmeter/bin 目录下的配置文件拷贝到项目根目录下 \opt\meter\bin中
然后修改Application.java、logback.xml、generatorConfig.xml中的metersphere.properties路径
修改base.properties文件中jmeter.home
修改Spring Boot 启动项
Modify options下拉选项中勾选Shorten command line
选择JAR manifest - java -cp classpath.jar cleassName [args]
启动后端服务前需要先启动redis、zookeeper、kafka服务,具体如何启动不再详述
执行Application.java启动后端服务
报错1:
程序包io.metersphere.xpack.ui.dto不存在
xpack是企业版的包,需要收费才能使用,直接把涉及到xpack的依赖、引用全部注释掉即可
报错2:
Public Key Retrieval is not allowed
在\opt\metersphere\conf\metersphere.properties中的spring.datasource.url中添加allowPublicKeyRetrieval=true参数,即
spring.datasource.url=jdbc:mysql://localhost:3306/metersphere_dev?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
报错3:
Schema `metersphere_dev` contains a failed migration to version 68
该报错是在创建数据库表时sql文件执行报错导致,可以找到项目路径\backend\src\main\resources\db\migration\V68__modify_api_test_case.sql文件,将其中的sql复制到Navicat中执行,修复其中的错误重启服务即可
进度前端项目下,执行npm install安装依赖
修改frontend\package.json中的配置项,由于是使用的Windows机器,因此要将export修改为SET,并添加--openssl-legacy-provider参数解决nodejs v17以上版本OpenSSL3.0对允许算法和密钥大小的限制
修改完先执行npm run build-win编译
编译成功后执行npm run serve-win启动后端服务
看到以上信息,表示已经启动成功了,接下来在浏览器访问
使用默认账号admin/metersphere登录即可使用