「原创声明:保留所有权利,禁止转载」
什么是 MeterSphere
MeterSphere 是一站式的开源企业级持续测试平台, 涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,兼容 JMeter 等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付,推动中国测试行业整体效率的提升。
下载安装
- 第一步:准备一台主机 准备一台不小于 8 G 内存且可以访问互联网的 64 位 Linux 主机。
- 第二步:执行一键安装命令 以 root 用户执行如下命令一键安装 MeterSphere:
curl -sSL https://github.com/metersphere/metersphere/releases/latest/download/quick_start.sh | sh
功能架构图
开发者手册
官方开发文档
https://metersphere.io/docs/dev_manual/
补充开发者手册
一、全面了解 metersphere
需要本地安装的组件有:
- Idea
- JDK
- Node.js
- Mysql
- Docker
- Kafka
1.主系统:包含项目前端和后端
后端框架: Spring Boot
前端框架: Vue.js
代码地址:https://github.com/metersphere/metersphere
本地开发需安装:JDK、Node.js、Idea
2.性能测试资源节点服务:通过 Docker 启动 Jmeter 容器,构建主机为性能测试资源节点,jmeter 的测试日志和测试结果会写入 kafka
后端框架: Spring Boot
代码地址:https://github.com/metersphere/node-controller
本地开发需安装:JDK、Docker、Kafka
3.数据消费和性能结果生成服务:消费 kafka 信息,保存性能测试结果数据
后端框架: Spring Boot
代码地址:https://github.com/metersphere/data-streaming
本地开发需安装:JDK、Kafka
4.还有一些其他的组件,多已上传到各类仓库,如果需要二次改造,可以查阅
https://github.com/metersphere
二、本地开发配置文件修改
1.三个项目的 Application.java 文件
@PropertySource(value = {"file:/自己的目录/metersphere.properties"}, encoding = "UTF-8", ignoreResourceNotFound = true)
2.metersphere 的日志文件 logback.xml
<property file="/自己的目录/metersphere.properties"/>
3.metersphere 的配置文件 application.properties
logging.file.path=/自己的目录/${spring.application.name}
三、代码结构
在官方开发文档中有介绍
四、启动
启动 node-controller 和 data-streaming
前端代码结构
├── package.json #Vue的模块依赖定义
├── pom.xml #Maven前后端打包的定义与依赖
├── public
├── src #前端核心代码
│ ├── assets #静态图片资源
│ ├── business
│ │ ├── App.vue #根组件
│ │ ├── components #功能页面目录
│ │ │ ├── api #接口测试
│ │ │ ├── common #公共和主框架
│ │ │ ├── performance #性能测试
│ │ │ ├── project #项目管理
│ │ │ ├── settings #系统设置
│ │ │ ├── track #测试跟踪
│ │ │ └── xpack #商业化功能
│ │ ├── index.html #主页,项目入口
│ │ ├── main.js #入口文件
│ │ ├── permission.js
│ │ └── store.js
│ ├── common #静态资源
│ │ ├── css
│ │ └── js
│ ├── i18n #国际化
│ └── login #登录
│ ├── Login.vue
│ ├── login.html
│ └── login.js
├── vue.config.js #vue配置类
性能测试运行后端代码简析
1.前端点击【保存并运行】
frontend/src/business/components/performance/test/EditPerformanceTest.vue
saveAndRun() {
......
this.result = this.$request(options, (response) => {
this.test.id = response.data;
this.$success(this.$t('commons.save_success'));
this.result = this.$post(this.runPath, {id: this.test.id, triggerMode: 'MANUAL'}, (response) => {
......
- 请求后端/performance/run
backend/src/main/java/io/metersphere/performance/controller/PerformanceTestController.java
# 启动前会检查kafka是否可用
PerformanceTestService.checkKafka()
# 守护进程等待压测任务完成,刷新数据库数据
PerformanceNoticeTask.registerNoticeTask(LoadTestReportWithBLOBs)
3.请求 node-controller
#使用jmeter容器发起压测请求,结果数据会保存到kafka
PerformanceTestService.startEngine(LoadTestWithBLOBs, Engine, String)
DockerTestEngine.start()
......
String uri = String.format(BASE_URL + "/jmeter/container/start", nodeIp, port);
......
4.data-streaming 项目消费 kafka 数据
生成测试结果数据 load_test_report_detail和load_test_report_result
修改数据库中testId的测试状态
registerNoticeTask轮休数据库状态变化完成压力测试
官方代码结构
├── Dockerfile # 构建容器镜像使用的 dockerfile
├── LICENSE
├── README.md
├── ROADMAP.md
├── backend # 后端项目主目录
│ ├── backend.iml
│ ├── pom.xml # 后端 maven 项目使用的 pom 文件
│ └── src # 后端代码目录
├── frontend # 前端项目主目录
├── babel.config.js
│ ├── frontend.iml
│ ├── node
│ ├── node_modules
│ ├── package-lock.json
│ ├── package.json
│ ├── pom.xml # 前端 maven 项目使用的 pom 文件
│ ├── public
│ └── src # 前端代码目录
├── metersphere-server.iml
└── pom.xml # 整体 maven 项目使用的 pom 文件
扫一扫,关注我
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。