嵌入式Qt Worker
介绍
对于嵌入式设备中的Qt应用自动化,CukeTest采取了另外一套方案,适用于需要在嵌入式环境中完成自动化任务的场景。嵌入式的场景通常包含以下因素:
- 不区分硬盘和内存,所有空间加起来低于256MB甚至128MB;
- 通过以太网或无线网与上位机连接;
- Linux操作系统;
- ARM32或ARM64的CPU架构。
相比于其它的Worker(独立Worker或CukeTest Worker),新的方案有如下优点:
- 体积小,关键内容只有1MB体积。
- 开销小启动方便,只需要用Nodejs引擎启动qt_worker.js文件即可。
- 要求少,对系统环境几乎没有要求,只要能够运行任意Nodejs引擎并能够启动被测应用即可。
当然也有如下局限性:
- 需要依赖Nodejs引擎来启动服务。可以通过包管理工具或手动下载当前环境中可用的Nodejs引擎。如果选择Nodejs 10及以下版本,大小可以控制在40MB以下。
- 只能完成Qt自动化。
用法
使用要求
主机端:
- CukeTest 1.8.2.203版本及以上。
嵌入式设备端:
- Nodejs引擎
- qtworker_arm32.tar.gz或qtworker_x86.tar.gz
主机端启动
打开CukeTest界面,在“设置”->“高级”中打开嵌入式Qt侦听端口,并设置通信端口,如9875
。重启CukeTest后生效。
重启后,CukeTest在状态栏左下角的Qt
字眼左侧出现远程连接标识,当成功与嵌入式端建立连接后,该标识会变为绿色。
如果没有出现,则可能是没有关闭所有CukeTest实例后再重启。
嵌入式设备端
- 拷贝并解压Nodejs引擎到环境中,注意区分,
armhf
是arm32
架构,x64
是x86_64/amd64
架构。拷贝成功后输入./node -v
应该能看到版本信息- 如果提示没有执行权限,则运行命令
sudo chmod a+x ./node
; - 如果崩溃了,可能是拷贝进来的Nodejs引擎架构不正确。
- 如果提示没有执行权限,则运行命令
- 解压qtworker压缩包:
- x86_64环境:
tar -zxvf qtworker_x86.tar.gz
- arm32环境:
tar -zxvf qtworker_arm32.tar.gz
- x86_64环境:
- 使用刚刚的Nodejs引擎运行qtworker中的
qt_worker.js
文件。并指定--host <ip address>
和--port <port>
两个选项。<ip address>
就是主机端的IP,假设为192.168.1.2
,<port>
就是主机端使用的端口,也就是9875
。./node qtworker/qt_worker.js --host 192.168.1.2 --port 9875
- 运行后,如果:
- 看到
connected
字眼,说明连接成功; - 看到
ECONNREFUSED
的错误,说明没有连接上主机端,可能是IP或端口不正确,或主机端未正确启动。
- 看到
运行或录制Qt自动化
主机端使用cuke --agent-port <port>
命令启动的话,启动应用、录制Qt自动化、运行脚本等行为,都会在嵌入式端执行,因此填写路径应该使用嵌入式端的路径格式,如/home/leanpro/addressbook
。
其它的操作都与正常的Qt自动化相同。
需要注意的是,录制开始后,操作应该在嵌入式端完成。如果嵌入式设备手动操作起来不方便,也可以在其它平台(如x86_64架构虚拟机)中录制好脚本和模型,再连接到嵌入式端中运行即可。