远程Qt Worker
远程Qt Worker 主要用于在远程设备上对桌面应用进行自动化测试,尤其是在某些特殊架构和操作系统上,无法正常安装和运行 CukeTest 客户端的情况下。此外,它还适用于一些资源有限的嵌入式设备。
在嵌入式设备(如 ARM32、ARM64 架构的 Linux 系统)上测试 Qt 应用,通常会遇到以下挑战:
- 硬件资源受限:设备的存储和内存容量可能仅有 256MB 或更低。
- 复杂的通信环境:设备与主机(开发机器)通常通过有线或无线网络通信,环境较为复杂。
- 无法直接运行 CukeTest 客户端:嵌入式设备上难以直接运行完整的 CukeTest 环境。
为了解决这些问题,CukeTest提供了 远程Qt Worker 方案。通过在远程设备上运行轻量化的 Node.js 引擎和 qtworker
服务进程,您可以继续在PC主机端使用CukeTest进行应用录制和自动化测试,而应用的实际运行和操作则在远程设备上完成。
优势与限制
优势:
- 轻量级:qtworker的核心组件仅约1MB,大幅降低对存储空间的要求。
- 启动快捷:在远程设备上启动 Node.js 引擎并运行
qt_worker.js
即可使用,无需复杂的配置。 - 环境要求低:只需支持 Node.js 和 Qt 被测应用的运行,无需额外的复杂依赖。
限制:
- 依赖Node.js:必须在远程设备上安装合适版本的 Node.js。可以选择较低版本(如 Node.js 10 以下),其安装包体积在 40MB 以内。
- 仅支持 Qt 自动化:此方案仅用于 Qt 应用的自动化测试,无法用于其他技术栈的 GUI 自动化。
使用要求
主机端(PC):
- CukeTest版本 ≥ 1.8.2.203。
远程设备端:
- 一个可运行的 Node.js 引擎(与设备架构匹配,如ARM32、ARM64等)。
qtworker_arm32.tar.gz
或qtworker_x86.tar.gz
文件(根据设备架构选择对应版本)。
主机端设置步骤
在CukeTest中启用侦听端口:
- 打开 CukeTest,进入 设置 → 高级。
- 启用 嵌入式侦听端口 功能,并设置一个通信端口(例如
9875
)。
重启CukeTest:
- 重启CukeTest后,状态栏左下角会出现一个远程连接标识符。
- 当远程设备成功连接后,该标识符会变为绿色。
如未看到标识符,请确保已关闭所有CukeTest实例并重启。
使用远程自动化 Worker(可选)
如果您是通过远程自动化 Worker模式在主机端运行CukeTest,可使用 --agent-port
参数设置侦听端口。例如:
cuke worker --agent-port 9875
远程设备端操作步骤
准备Node.js引擎:
将适用于设备架构的Node.js可执行文件拷贝至设备。- 通过
./node -v
验证Node.js是否可用。 - 若无执行权限,请用
chmod a+x ./node
赋予可执行权限。 - 若运行崩溃,请检查Node.js版本与设备架构是否匹配。
- 通过
解压qtworker文件:
将qtworker_arm32.tar.gz
或qtworker_x86.tar.gz
(根据设备架构选择相应文件)解压缩到当前目录下,例如:tar -zxvf qtworker_arm32.tar.gz
启动qtworker服务:
使用Node.js引擎运行qt_worker.js
文件,并指定主机IP和端口。假设主机IP为192.168.1.2
,CukeTest中设置的端口为9875
:./node qtworker/qt_worker.js --host 192.168.1.2 --port 9875
连接确认:
- 如果输出显示
connected
,表示已成功连接到主机。 - 若出现
ECONNREFUSED
错误,请检查主机端IP、端口及网络连通性。
- 如果输出显示
在远程设备中运行或录制Qt自动化
当远程设备连接成功后,您在主机端CukeTest中进行的启动、录制、回放操作将通过网络在远程设备上执行。注意以下事项:
应用路径以远程设备为准:
在CukeTest中设置启动命令或路径时,请使用远程设备中的文件路径。例如:/home/leanpro/addressbook
而非PC本地路径。
录制测试脚本技巧:
如果直接在远程设备上操作不便(如无显示器、键盘鼠标),可先在PC或模拟器上对相同应用进行录制,生成测试脚本后,再切换到远程设备上执行脚本回放。与普通Qt自动化流程一致:
使用远程Qt Worker后,除了指定侦听端口和连接步骤,其他操作与传统Qt自动化测试流程一致。您仍然可以使用CukeTest中已有的录制、回放和调试功能。