MeterSphere 是一站式的开源企业级持续测试平台, 涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,兼容 JMeter 等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付,推动中国测试行业整体效率的提升。
curl -sSL https://github.com/metersphere/metersphere/releases/latest/download/quick_start.sh | sh
官方开发文档
https://metersphere.io/docs/dev_manual/
补充开发者手册
需要本地安装的组件有:
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) => {
......
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 文件
扫一扫,关注我