专栏文章 测试平台 MeterSphere 开发者手册

大道 · 2020年11月09日 · 最后由 大道 回复于 2020年11月27日 · 4481 次阅读

什么是 MeterSphere

MeterSphere 是一站式的开源企业级持续测试平台, 涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,兼容 JMeter 等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付,推动中国测试行业整体效率的提升。

image

下载安装

  1. 第一步:准备一台主机 准备一台不小于 8 G 内存且可以访问互联网的 64 位 Linux 主机。
  2. 第二步:执行一键安装命令 以 root 用户执行如下命令一键安装 MeterSphere:
curl -sSL https://github.com/metersphere/metersphere/releases/latest/download/quick_start.sh | sh

功能架构图

image

开发者手册

官方开发文档

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}
三、代码结构

在官方开发文档中有介绍

四、启动

image

启动 node-controller 和 data-streaming
image

前端代码结构
├── 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) => {
      ......
  1. 请求后端/performance/run
backend/src/main/java/io/metersphere/performance/controller/PerformanceTestController.java

image

# 启动前会检查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);
    ......

image

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 文件

扫一扫,关注我

共收到 6 条回复 时间 点赞

还有后续么?比如代码结构说明什么的,可以补充下?

希望能持续更新。

陈恒捷 回复

好的

仅楼主可见
心意已决 回复

多谢 已修改

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册