天天看點

開源測試平台橫向測評系列MS篇:一站式開源持續測試平台Metersphere

聲明:以下文章内容所涉及的任何工具及平台均出自本人日常工作使用,或興趣愛好研究。沒有收到任何機構或組織充值,不存在任何廣告行為。喜歡的點個贊、收藏、轉發就好。

前言

前段時間滿懷信心地發表了《​​開源測試平台橫向測評系列​​》的預告篇,準備就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.社群活躍度:高

​更多幹貨,歡迎關注《測試開發實戰》!