开源测试平台横向测评系列『流马』篇:流马部署

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 【简介篇】• 项目概述:技术栈、工作原理• 项目功能简介:功能特点【部署篇】• 部署规划• 依赖环境部署(JDK、MySQ、NGINX、Git、NodeJS、Python3)• 代码打包:克隆项目、前端代码打包、后端代码打包• 项目部署:前端部署、后端部署、执行引擎部署

前言

我是从今年5月份第一次接触流马这个平台。第一次听到这个名字的时候,就觉得挺有趣的,猜测其名字应该是取自诸葛亮的“木牛流马”,后来和作者证实了一下,确实如此。当初诸葛亮发明木牛流马是为了提高运输效率,而流马测试平台是为了提高测试效率,可以说这个名字取得“恰到好处”。

本文一万两千字左右,我写了好多天,可能是我耗时最久的一篇文章。其实写文章不是最难的,难的是边学习、边摸索、边踩坑、边解决问题、边写文章记录、边总结。所以写得还算是比较用心的,整体来说也比较详细。读起来可能会有点长,大家可以先关注收藏、后期有时间、空下来了再照着文章内容仔细研究。内容大致分为以下四个部分:

简介篇

  • 项目概述:技术栈、工作原理
  • 项目功能简介:功能特点

部署篇

  • 部署规划
  • 依赖环境部署(JDK、MySQ、NGINX、Git、NodeJS、Python3)
  • 代码打包:克隆项目、前端代码打包、后端代码打包
  • 项目部署:前端部署、后端部署、执行引擎部署

【简介篇】

以下项目概述及功能介绍内容来自官网及GitHub项目介绍

一、项目概述

流马是一款低代码自动化测试平台,旨在采用最简单的架构统一支持API/WebUI/AppUI的自动化测试。平台采用低代码设计模式,将传统测试脚本以配置化实现,从而让代码能力稍弱的用户快速上手自动化测试。同时平台也支持通过简单的代码编写实现自定义组件,使用户可以灵活实现自己的需求。

项目分为平台端和引擎端,采用分布式执行设计,可以将测试执行的节点(即引擎)注册在任意环境的任意一台机器上,从而突破资源及网络限制。同时,通过将引擎启动在本地PC上,方便用户快速调试测试用例,实时查看执行过程,带来传统脚本编写一致的便捷。

官网:http://www.liumatest.cn/

代码地址:https://github.com/Chras-fu/Liuma-platform

部署文档:https://docs.qq.com/doc/p/c989fa8bf467eca1a1e0fa59b32ceab017407168

使用手册:https://docs.qq.com/doc/p/1e36932d41b40df896c1627a004068df9a28fc3f

平台技术栈:前端VUE+ElementUI,后台Java+SpringBoot,测试引擎Python。

二、功能介绍

1.API测试

  1. 支持单接口测试和链路测试。
  2. 支持接口统一管理,支持swagger导入。
  3. 支持一键生成字段校验的接口健壮性用例。
  4. 支持全局变量、关联、断言、内置函数、自定义函数。
  5. 支持前后置脚本、失败继续、超时时间、等待/条件/循环等逻辑控制器。
  6. 支持环境与用例解耦,多种方式匹配域名,让一套用例可以在多个环境上执行。

2.WebUI测试

  1. 支持关键字驱动,零代码编写用例。
  2. 支持UI元素统一管理,Excel模板批量导入。
  3. 支持自定义关键字,封装公共的操作步骤,提升用例可读性。
  4. 支持本地引擎执行,实时查看执行过程。
  5. 支持与API用例在同一用例集合顺序执行。

3.AppUI测试(1.1版本上线)

  1. 支持WebUI同等用例编写和执行能力
  2. 支持安卓和苹果系统
  3. 支持持真机管理、投屏和在线操作
  4. 支持控件元素在线获取,一键保存元素
  5. 支持实时查看执行过程

【部署篇】

一、部署说明

1.部署说明

官方部署文档地址:https://docs.qq.com/doc/p/c989fa8bf467eca1a1e0fa59b32ceab017407168,共提供了两种部署方式,一种是容器部署,一种是常规部署。容器部署的好处是简单、快捷,常规部署方式的好处是相对于容器来说、出现问题容易排查,缺点是步骤较为繁琐。两种方式各有优劣,根据自己的喜好自由选择即可。本文采用的是常规部署方式。

2.部署规划

机器/系统

部署环境

说明

192.168.1.123,CentOS7

JDK8

MySQL8

Nginx

CentOS7内网服务器:

  • 用于运行后台Java服务+前端
  • Nginx用于代理转发
  • MySQL为后台存储数据库

192.168.1.131,Windows10

Git

JDK8

Maven

IDEA编辑器

NodeJS

个人Windows10办公电脑:

  • Git用于克隆前后台以及引擎代码代码到本地
  • IDEA编辑器用于修改配置文件
  • Maven自动下载依赖包、打包程序
  • NodeJS编译打包前端程序

192.168.1.188,Windows7

Python3

Selenium

Chrome

ChromeDriver

同一内网下的其他Windows主机:

  • Python3为执行引擎环境
  • Selenium为Web自动化测试工具
  • Chrome谷歌浏览器
  • ChromeDriver谷歌浏览器驱动程序

关于执行引擎机,也可以继续使用个人办公电脑作为执行引擎机,考虑到个人电脑经常会关机重启,就需要来回启动执行引擎,比较麻烦,所以我就选了一台本地Windows主机。当然也可以部署在Linux系统上,不过对于UI自动化测试而言,没有可视化的界面展示,调试起来相对麻烦一些。

二、依赖环境部署

1.安装Java1.8

CentOS服务器和个人Windows电脑分别需要安装JDK。CentOS下,推荐脚本部署方式:

安装脚本下载:https://share.weiyun.com/6JMLvSyK

JDK包下载地址:https://share.weiyun.com/mKDxXd1x

source jdk_install.sh  # 通过source命令安装,省去配置环境变量步骤

2.安装mysql

1)安装mysql

CentOS下安装,本次通过docker进行快速安装,如服务器或其他内网机器已安装mysql,直连即可,可以忽略此步。注意要使用8.0+版本的mysql,我用的是5.7.33版本,启动时候就会报错不支持。

docker run -d--restart always --name mysql -eMYSQL_ROOT_PASSWORD=123456-p3307:3306 mysql:8.0.28

2)登录mysql

进入mysql容器

docker exec -it mymysql sh

连接mysql

mysql -uroot-p# 登录mysql,根据提示输入密码123456

2)创建数据库

进入mysql命令行执行:

mysql> create database liuma character set utf8 collate utf8_general_ci;

3.安装nginx

CentOS下安装,推荐脚本部署方式

nginx安装脚本下载地址:https://share.weiyun.com/HLuVRTO2

nginx安装包下载地址:https://share.weiyun.com/uhffdijl

将其下载下来,上传到服务器,执行以下命令安装:

source nginx_install.sh

4.安装git

Windows下安装,用于拉取项目代码,下载后双击、按照提示一步步安装。

下载地址:https://share.weiyun.com/NJBlZGmE

5.安装node.js

Windows下安装,用于安装前端依赖、打包编译。

下载地址:https://share.weiyun.com/2PpWyXkz,下载下来后双击安装即可。

更换淘宝镜像源

1.临时更换

npm--registry https://registry.npm.taobao.org install node-sass(要安装的模块)

2.永久更换

npm config set registry https://registry.npm.taobao.org
npm config get registry  # 查看是否更换成功

3.通过cnpm使用

npm install -g cnpm --registry=https://registry.npm.taobao.org

6.安装python3

CentOS或Windows下安装均可,执行机选用哪个系统就安装在哪个系统下。如果是Linux系统,可以参考之前的文章《Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧》,如果是Windows系统,则在Windows系统下安装python3.

三、代码打包

1.克隆项目代码

git clone https://github.com/Chras-fu/Liuma-platform.git  # 克隆平台代码

git clone https://github.com/Chras-fu/Liuma-engine.git  # 克隆引擎代码

平台代码目录:

  • LiuMa-backend:后台代码
  • LiuMa-frontent:前端代码

2.打包前端代码

进入前端文件目录,安装相关依赖并执行构建

npm install  # 安装相关依赖npm run build  # 构建

出现"Build complete."提示代表构建成功:

构建成功后,目录下会生成dist文件目录,可以将其打包成.zip格式并上传至服务器,然后再解压

3.打包后端代码

1)安装依赖包

用IDEA打开liuma-platform/LiuMa-backend,使用maven安装依赖

2)修改配置

① 数据库配置

文件位置:liuma-platform/LiuMa-backend/src/main/resources/application.properties,配置如下所示:

  • username:数据库用户名;
  • password:数据库密码;
  • url:连接数据库的URL地址;
# databasespring.datasource.password=123456spring.datasource.username=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3307/liuma?serverTimezone=UTC&characterEncoding=utf-8

注意事项:

  • 项目部署的服务器与数据库处于同一主机时可使用127.0.0.1,如不在同一主机下,需改为该主机的IP地址;
  • 3307为前面docker部署mysql时映射的端口号,按照你自己的数据库端口号配置即可;
② 邮件配置

文件位置:liuma-platform/LiuMa-backend/src/main/resources/application.properties,配置如下所示:

# aliyun 阿里云# 阿里云邮件key,改成你自己的aliyun.email.accessKey = xxxxxxx
# 阿里云邮件secret,改成你自己的aliyun.email.accessSecret = xxxxxxx
# 发送人邮箱地址,改成你自己的aliyun.email.runnerSenderAddress = xxxxxxx
aliyun.email.runnerSenderName = 执行通知机器人
③ 七牛云配置

文件位置:liuma-platform/LiuMa-backend/src/main/resources/application.properties,配置如下所示:

# qiniuyun 七牛云# 七牛云ak,改成你自己的qiniu.cloud.ak = xxxxxxx
# 七牛云sk,改成你自己的qiniu.cloud.sk = xxxxxxx
# 七牛云空间名,改成你自己的qiniu.cloud.bucket = xxxxxxx
# 七牛云加速域名,改成你自己的qiniu.cloud.downloadUrl = xxxxxxx
qiniu.cloud.uploadUrl = xxxxxxx

3)maven打包

提示“BUILD SUCCESS”即表示打包成功,目录下会多出一个LiuMa-1.0.3.jar的jar包(我目前拉的最新代码,打包出来的是1.0.3,还有个LiuMa-1.0.0.jar包是两个月前打包的)

四、项目部署

1.平台部署

1)上传打包后的前端文件

将前端打包后的文件夹dist上传到:nginx安装目录/usr/local/nginx/html/下

2)上传打包后的后端文件

可以在/home目录下新建一个文件夹liuma,用于存放前面打包的jar包文件:LiuMa-1.0.3.jar,执行命令,后台启动服务:

nohup java -jar LiuMa-1.0.3.jar > logs.log 2>&1 &

启动后,可以查看logs.log日志文件,看看是否启动成功,以及是否成功连接到数据库,连接成功后自动创建相关数据表:

3)配置Nginx

① 新建nginx_liuma.conf

在nginx的/usr/local/nginx/conf目录下新建nginx_liuma.conf,nginx用于配置server的代理转发,详细配置如下:

#user  nobody;worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen 8888;
        server_name 192.168.1.122;
        location / {
            index index.html index.htm;
            root /usr/local/nginx/html/dist;
        }
        location /autotest {
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Origin "";
        }
        location /openapi {
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Origin "";
        }
        access_log /usr/local/nginx/html/wwwlogs/access.log;
    }
}

② 测试配置

nginx -t-c /usr/local/nginx/conf/nginx_liuma.conf

测试过程中可能会出现失败提示"nginx: [emerg] open() "/usr/local/nginx/html/wwwlogs/access.log" failed (2: No such file or directory)",原因是html目录下没有wwwlogs/access.log这个文件路径,直接新建一个wwwlogs目录和access.log文件即可。

③ 指定配置文件启动nginx

nginx -c /usr/local/nginx/conf/nginx_liuma.conf

4)验证部署情况

访问前端:http://192.168.1.122:8888/,管理员账号:LMadmin,密码:Liuma@123456

登录后的页面如下所示:

5)问题排查

因为流马是前后端分离项目,所以前端能访问并不代表后端也是正常的。如果登录遇到502,则是后台服务器没启起来,多半是数据库的问题,可以通过以下方式排查:

  • 数据库版本,建议用8.x版本,5.7版本不支持
  • 查看后端配置文件application.properties中数据库配置是否正确
  • 可以通过前面提到的logs.log日志查看,也可以查看数据库是否自动创建相关数据表
  • 检查数据库端口及Nginx反向代理的端口在防火墙中是否放开

另外,如果前端页面访问不了,很可能是防火墙没开放权限,需要在防火墙中放开上述配置文件中配置的8888端口:

firewall-cmd --permanent--add-port=8888/tcp
firewall-cmd --reload

如果是前后端服务是部署在云服务器,需要在安全组中放开8888端口。

2.测试引擎部署

测试引擎可以理解为接口测试和UI自动化测试的运行环境。测试引擎可以选择部署在Linux系统,也可以选择使用个人Windows电脑,最好处于同一局域网下。当然如果服务端是部署在云服务上,有公网IP地址,Windows是个人办公电脑也可以,只要引擎电脑能要连上部署后端服务的那台服务器就行。以下是引擎部署过程:

1)上传代码

前面已经通过“git clone https://github.com/Chras-fu/Liuma-engine.git”克隆好了引擎代码,直接上传到对应的服务器即可,比如我选用的是Windows作为引擎,那么直接拷贝到Windows即可。

2)安装依赖

前面依赖环境部署已经安装好了Python3,创建并激活了虚拟环境,下面直接进入项目所在目录liuma-engine,安装依赖即可。

pip install -r requirements.txt

3)下载Chrome驱动

对照引擎机的Chrome浏览器版本,下载对应驱动,存放在/browser目录下

4)添加引擎

① 注册引擎

流马平台环境中心-引擎管理-注册引擎,输入引擎名称,名称任意,自己能识别即可,如:engine-192.168.1.188,确认后,会弹出一个提示框,复制里面的引擎code和引擎秘钥,后面会用到。

② 配置引擎服务器

编辑liuma-engine/config目录下的配置文件config.ini,进行配置,几个重要配置如下:

  • url:后台服务所在的URL;
  • engine-code:前面注册引擎成功后,提示框中的引擎code;
  • engine-secret:前面注册引擎成功后,提示框中的引擎秘钥;
  • options:如果引擎机是Linux系统,则改为headless,即无头模式,如果是Windows则保持默认的normal;
  • path:如果引擎机是Linux系统,则改为chromedriver,如果是Windows则保持默认的chromedriver.exe;
  • token:后面注册成功后会自动生成,可以不用管;
[Platform]
url = http://192.168.1.122:8888
enable-proxy =falseenable-stderr =true[Engine]
engine-code = 9d4358f0c8a34a2ab7e4c297949149fa
engine-secret = 86a2f8f8bd654e03a60da9f19cdec017
[Header]
content-type = application/json;charset=utf-8
token = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NjI2Mjk4OTQsImVuZ2luZVNlY3JldCI6IjVhM2ZhYzdlYzJiODQ4NDlhYzJhNjY4ZGRlNjRhMDk0IiwiaWF0IjoxNjYyMDI1MDk0LCJlbmdpbmVJZCI6ImU3ZWMzOTllZDdkZDRkMmFiZWIxNGNiNTE2NGNiNGVkIn0._LVsCKIauFxV4IKAUNgYS1lVbD5twO_2E39QCOufKH8
[WebDriver]
options = normal
path = chromedriver.exe
[PlatformProxy]
url = http://0.0.0.0:80
username = ****
password = ****

5)启动引擎

python startup.py

6)验证引擎是否添加成功

引擎启动成功后,即可在流马平台环境中心-引擎管理中查看引擎在线情况。一台服务器可以启动多个引擎,一般默认有四个系统引擎,启动后互不影响。


以上就是流马的介绍篇和部署篇,由于字数和篇幅限制,就介绍到这里。下一篇文章将介绍流马《使用篇》和《总结篇》。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
22天前
|
关系型数据库 MySQL 测试技术
【分享】AgileTC测试用例管理平台使用分享
AgileTC 是一个脑图样式测试用例管理平台,支持用例设计、执行与团队协作,帮助测试人员高效管理测试流程。
166 116
【分享】AgileTC测试用例管理平台使用分享
|
20天前
|
人工智能 数据可视化 测试技术
AI测试平台自动遍历:低代码也能玩转全链路测试
AI测试平台的自动遍历功能,通过低代码配置实现Web和App的自动化测试。用户只需提供入口链接或安装包及简单配置,即可自动完成页面结构识别、操作验证,并生成可视化报告,大幅提升测试效率,特别适用于高频迭代项目。
|
27天前
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
29天前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
13天前
|
安全 Linux 网络安全
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
220 0
|
22天前
|
人工智能 自然语言处理 测试技术
AI测试平台的用例管理实践:写得清晰,管得高效,执行更智能
在测试过程中,用例分散、步骤模糊、回归测试效率低等问题常困扰团队。霍格沃兹测试开发学社推出的AI测试平台,打通“用例编写—集中管理—智能执行”全流程,提升测试效率与覆盖率。平台支持标准化用例编写、统一管理操作及智能执行,助力测试团队高效协作,释放更多精力优化测试策略。目前平台已开放内测,欢迎试用体验!
|
4月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
744 23
|
9月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
6月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
700 24
|
6月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
241 2

热门文章

最新文章