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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 【简介篇】• 项目概述:技术栈、工作原理• 项目功能简介:功能特点【部署篇】• 部署规划• 依赖环境部署(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)验证引擎是否添加成功

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


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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
JavaScript Linux 区块链
DApp测试网络Ganache本地部署并实现远程连接
DApp测试网络Ganache本地部署并实现远程连接
|
2月前
|
资源调度 测试技术 Linux
一款接口自动化神器—开源接口测试平台Lim(Less is More)
一款接口自动化神器—开源接口测试平台Lim(Less is More)
130 2
|
3天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
18 0
|
3天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
35 1
|
1月前
|
缓存 运维 Serverless
应用研发平台EMAS产品常见问题之测试检查更新没有反应如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
Java PHP 数据库
在护卫神上部署javaWeb项目,已经测试通过
在护卫神上部署javaWeb项目,已经测试通过
11 0
|
1月前
|
机器学习/深度学习 人工智能 监控
视觉智能平台常见问题之体验产品的美颜测试关掉如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
24 1
|
2月前
|
存储 人工智能 自然语言处理
选择最适合数据的嵌入模型:OpenAI 和开源多语言嵌入的对比测试
OpenAI最近发布了他们的新一代嵌入模型*embedding v3*,他们将其描述为性能最好的嵌入模型,具有更高的多语言性能。这些模型分为两类:较小的称为text- embeddings -3-small,较大且功能更强大的称为text- embeddings -3-large。
95 0
|
2月前
|
运维 数据可视化 测试技术
Lag-Llama:第一个时间序列预测的开源基础模型介绍和性能测试
2023年10月,我们发表了一篇关于TimeGPT的文章,TimeGPT是时间序列预测的第一个基础模型之一,具有零样本推理、异常检测和共形预测能力。 虽然TimeGPT是一个专有模型,只能通过API访问。但是它还是引发了对时间序列基础模型的更多研究。到了2024年2月,已经有了一个用于时间序列预测的开源基础模型:laglllama。
122 2
|
2月前
|
测试技术
Lim测试平台测试报告说明
Lim测试平台测试报告说明
32 2

热门文章

最新文章