嵌入式Qt Worker
在嵌入式设备(如ARM32、ARM64架构的Linux系统)中测试Qt应用,往往会面临以下挑战:
- 硬件资源有限:存储、内存可能仅有256MB甚至更低。
- 与主机(开发机器)通信通过有线或无线网络,环境复杂。
- 无法直接在嵌入式设备上运行完整的CukeTest环境。
为了解决这些难题,CukeTest提供了嵌入式Qt Worker方案——通过在嵌入式设备上运行轻量化的Node.js引擎和qt_worker
服务进程,您可以在PC主机端继续使用CukeTest完成应用录制和自动化测试,而应用实际运行和操作则在嵌入式设备中进行。
优势与限制
优势:
- 轻量级:
qt_worker
的核心组件仅约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中启用嵌入式Qt侦听端口:
- 打开 CukeTest,进入 设置 → 高级。
- 启用 嵌入式 Qt 侦听端口 功能,并设置一个通信端口(例如
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
启动qt_worker服务:
使用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中已有的录制、回放和调试功能。