博客

如何在LoongArch平台上测试Qt应用

cover

随着国产化软硬件的逐步发展,LoongArch 指令集与银河麒麟操作系统为构建高效、安全的测试环境提供了新的选择。本文将以国产绘图工具 Kolourpaint 为例,介绍如何在 LoongArch 平台上使用 CukeTest 工具进行 Qt 应用的自动化测试,帮助开发者了解如何在国产化环境中高效进行软件测试。

应用背景与测试目标

LoongArch是由龙芯自主研发的高性能、低功耗指令集,广泛应用于国产化信息系统;而银河麒麟操作系统则具有丰富的应用生态,能够与 LoongArch 硬件平台实现完美兼容。通过这两个平台,我们不仅可以保障系统安全,还能为现代软件测试提供高效的环境支持。

本文测试的对象是基于Qt开发的绘图工具 Kolourpaint,目标是验证其在 LoongArch 平台上的稳定性和性能表现。我们将重点测试应用的基本绘图功能以及颜色填充功能,确保操作界面响应迅速、效果符合预期。

测试用例设计

为了验证 Kolourpaint 的功能,我们设计了以下测试用例场景:

  • 绘制图形并填充颜色
    1. 启动银河麒麟系统中的 Kolourpaint 应用。
    2. 在工具栏中选择“矩形”工具,并在画布上绘制一个矩形。
    3. 使用“填充”工具选择蓝色,对矩形内部进行填充,验证填充颜色是否正确。
    4. 切换到“椭圆”工具,绘制椭圆后使用红色填充,验证填充颜色是否正确。

下图展示了 Kolourpaint 的基本界面:

画图工具

系统环境与工具配置

测试环境基于银河麒麟操作系统,已适配 LoongArch 架构,配置详情如下:

  • 架构与硬件

    • 架构:LoongArch64(龙芯自主指令集)
    • CPU 型号:Loongson-3A5000M
  • 应用与工具

    • Kolourpaint:系统预装绘图工具,支持基础图形编辑功能。
    • CukeTest:跨平台自动化测试工具(已实现LoongArch原生支持)。

测试环境

项目创建与自动化录制

在正式录制测试脚本之前,我们需要先创建一个新的 CukeTest 项目:

创建新项目

  1. 打开 CukeTest,选择“新建项目”,输入项目名称。
  2. 选择脚本语言(例如 Python)和项目模板(例如 Pytest),以满足项目需求。

创建项目

自动录制测试操作

录制脚本是测试开发的重要环节。通过 CukeTest 的录制功能,可以轻松捕捉用户操作并生成相应的自动化脚本:

  1. 配置录制参数
    • 在录制设置中选择录制模式为 Qt
    • 填写应用程序路径(例如 Kolourpaint),其它选项保持默认。
    • 如需记录精细的鼠标轨迹操作(如曲线绘制),可选择开启 录制鼠标轨迹 选项。

录制设置

  1. 启动录制

    • 点击 开始录制 按钮,CukeTest 将自动启动 Kolourpaint 应用,并记录所有用户操作。
  2. 执行测试操作

    • 根据预先设计的测试用例,依次执行图形绘制和颜色填充操作。
  3. 结束录制

    • 完成所有操作后,关闭应用并点击 停止 按钮,即可生成自动化测试脚本。

生成的 Python 脚本示例如下:

import os
from leanproAuto import RunSettings, QtAuto

def recording():
    RunSettings.set({"slowMo": 1000, "reportSteps": True})
    modelQt = QtAuto.loadModel(os.path.dirname(os.path.realpath(__file__)) + "/recording.tmodel")

    # 启动 Qt 应用 "kolourpaint"
    QtAuto.launchQtProcessAsync("kolourpaint")

    # 等待应用启动
    modelQt.getApplication("kolourpaint").exists(10)

    # 执行绘图操作
    modelQt.getButton("矩形").click()
    modelQt.getGeneric("mainView").drag(21, 33)
    modelQt.getGeneric("mainView").drop(170, 122)
    modelQt.getButton("填充").click()
    modelQt.getTableItem("TableItem").click(12, 9)
    modelQt.getGeneric("mainView").click(72, 82)

    modelQt.getButton("椭圆").click()
    modelQt.getGeneric("mainView").drag(116, 144)
    modelQt.getGeneric("mainView").drop(336, 238)
    modelQt.getButton("填充").click()
    modelQt.getTableItem("TableItem1").click(19, 10)
    modelQt.getGeneric("mainView").click(207, 197)

if __name__ == "__main__":
    recording()

脚本验证与整合

录制完成后,下一步是验证自动化脚本的准确性,并将其整合进整个测试流程:

  • 脚本执行

    • 点击 运行脚本 按钮,观察 CukeTest 的回放操作是否与预期一致。
  • 操作回放

    • 回放过程中,所有操作都会被精确执行。若录制时启用了“慢动作”模式(slowMo 设置为 1000 毫秒),可根据需要调整为 0 以加快执行速度。

回放脚本

  • 整合到测试框架
    • CukeTest 支持将录制的脚本转换为符合 Cucumber 或 pytest-bdd 语法的场景文件与步骤定义文件,方便与现有测试项目无缝对接。只需右击脚本区域,选择 录制脚本转换成场景 即可生成相应文件。

录制脚本转换成场景

运行测试项目与生成报告

通过 CukeTest 的项目运行功能,可以批量执行所有测试用例:

  1. 在项目界面点击 运行项目 按钮,所有符合 Pytest 规范的测试脚本将依次执行。
  2. 执行完毕后,系统将生成详细的测试报告,包括测试摘要、执行状态(如“通过”或“失败”)以及详细日志。
  3. 如有需要,还可通过修改脚本插入自定义截图,为测试报告提供更多视觉证据。

运行项目

总结

本文详细介绍了如何在龙芯 LoongArch 平台上使用 CukeTest 工具进行 Qt 应用的自动化测试。值得一提的是,这套测试方案具备良好的跨平台兼容性,基于CukeTest开发的测试脚本不仅能适配龙芯架构,更能无缝迁移至其它系统,如x86银河麒麟、统信UOS以及Windows系统。通过项目创建、脚本录制与验证、以及脚本整合等过程,验证了国产化测试环境在提高测试效率、保障安全性方面的优势。利用基于国产软硬件平台的自动化测试方案,不仅能够降低开发与维护成本,还能为开发团队提供一个稳定且自主可控的测试环境。