小型嵌入式Qt Worker介绍

介绍

对于嵌入式设备中的Qt应用自动化,CukeTest采取了另外一套方案,适用于需要在嵌入式环境中完成自动化任务的场景。嵌入式的场景通常包含以下因素:

  1. 不区分硬盘和内存,所有空间加起来低于256MB甚至128MB;
  2. 通过以太网或无线网与上位机连接;
  3. Linux操作系统;
  4. ARM32或ARM64的CPU架构。

相比于其它的Worker(独立Worker或CukeTest Worker),新的方案有如下优点:

  1. 体积小,关键内容只有1MB体积。
  2. 开销小启动方便,只需要用Nodejs引擎启动qt_worker.js文件即可。
  3. 要求少,对系统环境几乎没有要求,只要能够运行任意Nodejs引擎并能够启动被测应用即可。

当然也有如下局限性:

  1. 需要依赖Nodejs引擎来启动服务。可以通过包管理工具或手动下载当前环境中可用的Nodejs引擎。如果选择Nodejs 10及以下版本,大小可以控制在40MB以下。
  2. 只能完成Qt自动化。

用法

使用要求

主机端:

  1. CukeTest 1.8.2.203版本及以上。

嵌入式设备端:

  1. Nodejs引擎
  2. qtworker_arm32.tar.gz或qtworker_x86.tar.gz

主机端启动

打开CukeTest界面,在“设置”->“高级”中打开嵌入式Qt侦听端口,并设置通信端口,如9875重启CukeTest后生效

重启后,CukeTest在状态栏左下角的Qt字眼左侧出现远程连接标识,当成功与嵌入式端建立连接后,该标识会变为绿色。

如果没有出现,则可能是没有关闭所有CukeTest实例后再重启。

嵌入式设备端

  1. 拷贝并解压Nodejs引擎到环境中,注意区分,armhfarm32架构,x64x86_64/amd64架构。拷贝成功后输入./node -v应该能看到版本信息
    1. 如果提示没有执行权限,则运行命令sudo chmod a+x ./node
    2. 如果崩溃了,可能是拷贝进来的Nodejs引擎架构不正确。
  2. 解压qtworker压缩包:
    1. x86_64环境:tar -zxvf qtworker_x86.tar.gz
    2. arm32环境:tar -zxvf qtworker_arm32.tar.gz
  3. 使用刚刚的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
    
  4. 运行后,如果:
    1. 看到connected字眼,说明连接成功;
    2. 看到ECONNREFUSED的错误,说明没有连接上主机端,可能是IP或端口不正确,或主机端未正确启动。

运行或录制Qt自动化

主机端使用cuke --agent-port <port>命令启动的话,启动应用、录制Qt自动化、运行脚本等行为,都会在嵌入式端执行,因此填写路径应该使用嵌入式端的路径格式,如/home/leanpro/addressbook

原理示意图

其它的操作都与正常的Qt自动化相同。

需要注意的是,录制开始后,操作应该在嵌入式端完成。如果嵌入式设备手动操作起来不方便,也可以在其它平台(如x86_64架构虚拟机)中录制好脚本和模型,再连接到嵌入式端中运行即可。

results matching ""

    No results matching ""