博客

国产化平台Web自动化测试实践

国产化平台 Web 自动化测试实践:基于龙芯与银河麒麟环境

随着信息技术国产化浪潮的推进,越来越多的应用系统开始向自主可控的软硬件平台迁移。其中,龙芯(Loongson)的LoongArch架构处理器与银河麒麟(GalaxyKylin)操作系统是其中极具代表性的组合。确保 Web 应用在这一新兴环境下的功能稳定与兼容性,对测试工作提出了新的要求。

本文将探讨如何在龙芯 + 银河麒麟平台上实施Web自动化测试,并以开源知识库项目AnythingLLM为例,展示一个完整、高效的测试流程。

应用背景与测试目标

LoongArch是龙芯自主研发的高性能、低功耗指令集,已经在众多国产化信息系统中得到应用;银河麒麟操作系统则具有完善的应用生态,能够与LoongArch硬件平台实现良好的兼容。在这样的国产化环境下开展Web自动化测试,不仅能够保障系统的安全性,还提供了高效且稳定的执行环境。

本文测试的对象是部署在LoongArch + 银河麒麟平台上的AnythingLLM Web 应用。本次实践的目标是验证一套高效的自动化测试方法,确保核心功能在国产化环境下能够稳定运行。测试方法需要具备以下特点:

  • 易于上手:测试人员可以快速创建和维护测试脚本。
  • 执行稳定:能够准确地模拟用户操作并获取结果。
  • 验证可靠:可以方便地添加检查点,对关键业务结果进行断言。

测试用例设计

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

  • 在会话中提出问题并校验回答
  1. 启动银河麒麟系统中的龙芯浏览器
  2. 导航至AnythingLLM登录页面,填写用户名和密码登录账户
  3. 进入工作区并创建会话
  4. 校验返回答案的准确性

系统环境与工具配置

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

  • 架构与系统

    • 架构: LoongArch64(龙芯自主指令集)
    • 操作系统: 银河麒麟桌面操作系统

    测试环境

  • 应用与工具

    • 测试对象: AnythingLLM Web 应用(部署于 http://192.168.3.106:3001
    • 测试工具: CukeTest自动化测试工具(已实现LoongArch原生支持)

AnythingLLM主页

项目创建与自动化录制

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

创建新项目

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

创建项目

使用录制功能快速生成测试脚本

对于大多数 Web 应用的功能测试,用户的操作流程是相对固定的。利用自动化工具的录制功能,可以极大地提升脚本编写效率。

  1. 配置录制参数
    • 在录制设置中选择录制模式为 Web
    • 选择浏览器,如系统自带的龙芯浏览器(lbrowser)
    • 填写起始网址(例如AnythingLLM的部署地址http://192.168.3.106:3001/login

配置录制参数

  1. 启动录制

    • 点击 开始录制 按钮,CukeTest将自动启动设置中所配置的龙芯浏览器,导航到起始网址,并记录所有用户操作。
  2. 执行测试操作

    • 根据预先设计的测试用例,依次执行登录账号、进入工作区与提问操作。
  3. 添加检查点

    • 在得到提问相关的回答后,点击录制工具条上的检查点按钮,再点击回答区域的元素,并在稍后弹出的选择添加检查点的属性弹窗中勾选需要检查的元素属性(如校验innerText属性位5),点击确定按钮完成检查点脚本的添加。

添加检查点

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

生成的 Python 脚本示例如下:

from leanproWeb import WebAuto
from leanproAuto import RunSettings, Util

def run(webauto: WebAuto) -> None:
    RunSettings.set({"slowMo": 1000})

    # 启动龙芯浏览器
    browser = webauto.chromium.launch(headless=False, executable_path="/usr/bin/lbrowser")
    context = browser.new_context()

    page = context.new_page()

    # 导航到 AnythingLLM 登录页面
    page.goto("http://192.168.3.106:3001/login")

    # 输入用户信息并登录
    page.click("[placeholder=\"请输入用户名\"]")
    page.fill("[placeholder=\"请输入用户名\"]", "testuser")
    page.click("[placeholder=\"请输入密码\"]")
    page.fill("[placeholder=\"请输入密码\"]", "12345678")

    with page.expect_navigation():
        page.click("button:has-text(\"登录\")")

    # 进入 Workspace-01 工作区创建会话
    with page.expect_navigation():
        page.click("[aria-label=\"Workspaces\"] a div:has-text(\"WorkSpace-01\")")

    # 在会话中提出问题并等待返回结果
    page.click("textarea")
    page.fill("textarea", "2+3=?")
    page.click("[aria-label=\"Send prompt message to workspace\"]")

    Util.delay(1000)

    # 添加检查点
    element = page.query_selector("text=5")
    assert element.inner_html() == "5"

    # ---------------------
    context.close()
    browser.close()

with WebAuto() as webauto:
    run(webauto)

脚本验证与整合

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

  • 脚本执行

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

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

回放录制脚本

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

运行测试项目与生成报告

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

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

实践总结

通过以上实践可以看出,在龙芯 LoongArch + 银河麒麟这一国产化平台上,实施高效的 Web 自动化测试是完全可行的。

利用像 CukeTest 这样的现代化测试工具,测试团队可以:

  • 克服平台兼容性障碍:无需担心底层架构的差异,专注于业务逻辑测试。
  • 大幅提升工作效率:通过录制功能快速创建测试用例,将测试人员从重复的手工劳动中解放出来。
  • 保障测试质量:通过灵活添加的检查点和可靠的等待机制,确保自动化测试的稳定性和准确性。

随着国产化生态的不断成熟,配套的开发与测试工具链也在日益完善。对于需要在这些平台上保证应用质量的团队而言,尽早引入并掌握自动化测试方法,将是构建技术优势、提升交付信心的重要一环。