长期以来,Linux 操作系统测试,特别是桌面操作系统测试,缺少一套专业且全面的综合型自动化测试框架,这一现状成为了提升测试效率与质量保证的瓶颈。
随着国内操作系统市场的蓬勃发展,业界对一套既专业又可靠的自动化测试框架的需求愈发凸显。它不仅是技术进步的迫切呼唤,也是确保国产操作系统品质与竞争力的关键所在。因此,开发并推广这样一套测试框架变得尤为重要且紧迫。
为了填补这一行业空白,统信软件精心打造了「YouQu」综合型自动化测试框架。该框架紧密贴合实际需求,专为 Linux 操作系统量身定制,集管理、分发调度、驱动执行等核心功能于一体,实现了测试流程的全方位覆盖。
YouQu 以其简便的环境部署、强大的功能特性脱颖而出,不仅支持 UI、WEB、接口及命令行等多种自动化测试场景,还极大地提升了测试效率与质量,为 Linux 操作系统上的开发测试工作带来了前所未有的便捷与高效。
01
YouQu 揭秘
「统信 YouQu」
YouQu(有趣)是由统信软件精心打造的 Linux 自动化测试框架,涵盖系统与应用测试的各种场景。它不仅是统信 UOS 开发者工具箱中的璀璨明珠,更是推动开发效能与质量飞跃的关键利器。自 2021 年 7 月启动内部孵化,历经三年多的精心打磨与成功实践,直至 2023 年 8 月开源,YouQu 凭借其先进的架构设计、出色的性能和广泛的应用前景,迅速受到全球知名技术社区如 GitHub linuxdeepin、Gitee openEuler 等的喜爱和赞誉,吸引了全球开发者和用户的浓厚兴趣和积极参与。
YouQu 通过其高效的元素定位和断言机制、灵活的用例管理执行体系(支持标签化)、详尽的日志记录和报告生成功能,极大地提升了测试的效率与质量。此外,YouQu 还展现了其在远程交互和多样化驱动执行模式上的灵活性,为 Linux 操作系统上的开发测试工作带来了更优的测试体验。
YouQu 兼容 X11 与 Wayland 两大主流显示协议,确保在各种 Linux 环境中都能运行流畅。其简洁的部署流程,搭配易用的项目初始化工具,即便是测试领域的新手也能迅速上手,轻松享受自动化测试所带来的便捷与高效。
与传统的关键字驱动自动化测试框架相比,YouQu 采用前瞻性的工程化设计理念和先进技术,如图像识别、属性定位、OCR 文本识别、RGB 色彩比对等多元化元素定位策略,不仅有效解决了复杂嵌套结构带来的测试难题,还显著降低了维护成本,同时大幅提升了框架的可扩展性与灵活性。
此外,YouQu 已汲取 Avocado、Pytest、Unittest 等顶尖测试框架的核心优势,并在创新与超越的征途中取得了显著突破,为整个行业树立了新的标杆与典范。
交互方式:
其他测试框架:主要支持命令行交互,对 UI 自动化支持度不够。
YouQu:自研了多套 Linux GUI 元素定位和键鼠模拟方案,高度支持 UI 自动化,同时支持更加丰富的命令行交互方式。
开发模块
其他测试框架:没有脚手架工具,需要测试开发者耗费大量时间从零开始搭建用例工程。
YouQu:内置脚手架工具,实现了一键创建完整的用例工程。在此过程中,导入语句、方法调用、公共方法等基础代码均能自动生成,大大降低了入门门槛,尤其对新手用户极为友好。这不仅加速了自动化项目的启动速度,还为后续的自动化脚本编写带来了极大的便利性。
管理模块
其他测试框架:主要通过在代码中增加装饰器、在代码类或函数中添加注释来管理测试用例,这种方式在初期看似便捷,但随着测试用例数量越来越多,其维护难度也越来越大,且灵活性受限,难以满足复杂项目的需求。
YouQu:采用了创新的标签化管理专利方案,它通过 CSV 文件管理所有用例标签,不仅支持网络导入和自定义扩展,还支持逻辑组合。其格式设计统一且易于理解,从而确保了高度的可维护性,同时在实际应用中也非常灵活。
执行模块
其他测试框架:远程执行能力通常比较弱,一般都需要依赖外部插件。
YouQu:内置本地和远程双重驱动执行功能,并提供了丰富的执行策略配置选项。其远程驱动执行功能基于 SSH 协议实现,且远程执行设备无需部署额外的环境。此外,YouQu 还支持对批量测试机进行分布式执行。
维护模块
其他测试框架:没有自动日志系统,迫使测试开发者需要手动添加日志输出代码。同时,它们往往不支持失败录屏功能,且测试报告通常需要依赖额外的插件。
YouQu:内置全自动日志系统,能够自动记录并输出测试过程中的详细日志信息。同时,它还内置了执行失败录屏功能,且还能生成详细、美观且易于理解的测试报告。
展望未来,YouQu 将继续秉持面向未来、积极创新的理念,不断探索自动化测试的新领域,为 Linux 操作系统的测试工作注入更多智慧和活力,推动技术进步和产业升级。
欢迎访问统信开发者平台获取更多 YouQu 信息
02
YouQu 特点
支持多种测试类型
Linux 桌面应用 UI 自动化测试
基于 Qt 属性查找、图像识别、OCR 识别、相对位移方案获取元素位置,通过键鼠模拟操控元素进行 UI 操作。
Web UI 自动化测试
基于 PlayWright 控制浏览器(可自定义)进行 Web UI 自动化测试。
Linux DBus 接口自动化测试
通过框架内置的 DBus 操控功能,实现对 DBus 接口访问及获取数据。
命令行自动化测试
基于 subprocess、pexpect 实现命令行交互。
HTTP 接口自动化测试
基于 Python 标准库 urllib,实现网络接口自动化测试流程。
工程化架构设计
核心封装层提供基础能力,业务层根据实际业务需求(测试用例)动态加载核心封装层,执行层加载相应的用例集并控制执行流程。测试平台可以根据实际测试策略组装配置,通过执行层接口驱动框架完成自动化测试执行。
环境部署一键搞定
一键式环境部署解决方案,无缝兼容虚拟化与本机部署模式,并允许用户根据需求灵活定制,实现依赖项的便捷新增与精准裁剪。
在项目根目录下,执行 env.sh 脚本,即可一键完成环境部署:
若需引入其他 Python 依赖库,只需在用例工程的根目录下创建一个 requirements.txt 文件,并在该文件中列出所有必需的依赖库及其版本要求。随后,通过执行简单的命令即可自动安装所有列出的依赖项,确保测试环境的完整性与一致性。
对于仅需最基础依赖的场景,如纯接口自动化测试项目,您可以在用例工程的根目录下创建一个名为 BASICENV 的标记文件。随后,在执行环境配置脚本 env.sh 时,该脚本会智能识别 BASICENV 文件的存在,并据此仅安装项目所需的最基础依赖项,从而简化环境配置过程,提高项目启动效率。
用例工程一键生成
一键创建 APP 工程,基础模板代码一键生成,帮您快速开始编写测试用例。
键鼠操作高度兼容
YouQu 键鼠模块以业界领先的姿态,自主研发了 Wayland 环境下的键鼠工具,并实现了与 X11 协议的良好兼容,满足绝大多数场景的自动化键鼠操作需求。
丰富的元素识别方案
YouQu 支持大部分主流的元素识别方案,同时在识别技术上一直在做演进和突破。
OpenCV 图像识别
包含常规识别、动态气泡识别等多种方案,下图展示的是「音乐」应用中渐隐式气泡提示的识别示例。
Accessibility 属性定位
通过对系统中所有已启动应用的 Accessbility 树进行递归查找,获取到目标元素对象,从而通过键鼠模拟操作元素。
OCR 文案识别
鉴于传统的 OCR 方案,比如谷歌的 Tesseract,在中文识别上准确率有限,我们经过深入调研后,选用了 PaddleOCR 作为核心技术,并在此基础上进行了突破和创新,成功研发了去干扰识别方案。
去干扰前,存在两个相似的鼠标右键识别对象。
去干扰后,能准确识别到鼠标右键菜单对象。
基于设计图的相对坐标参数定位
在 UI 设计图中我们是可以获取到元素按钮相对于应用边框的边距的,我们可以通过技术手段获取到应用界面在当前屏幕中的位置及应用窗口的大小,从而进行精准定位。
除了上述元素定位方案,我们还自研了一套基于 RGB 对照的图像识别方案,可以做到不依赖 OpenCV 也能精准识别图像元素。
断言语句简洁丰富
YouQu 内置了多样化的断言语句库,覆盖了广泛的断言场景,能够满足各种测试验证需求,确保测试结果的准确性与全面性。
执行和管理高度配置化
YouQu 的执行管理器 manage.py 提供了丰富的配置和命令行参数,支持本地用例驱动执行、远程用例驱动执行、CSV 标签管理和解析、禅道与自动化项目 CSV 标签关联管理、脚手架等功能。
测试报告易读友好
YouQu 测试报告功能全面升级,支持生成多样化的报告类型,包括 HTML、JSON 及 XML 格式,不仅确保报告信息的详尽丰富,更在呈现上追求美观与易读性。无论是用户本地直观查看,还是通过第三方接口进行数据交互,YouQu 测试报告均能够满足,为用户提供灵活便捷的报告体验。
用例标签化管理
实施了用例标签的集中化管理策略,将所有用例的标签整合至一个统一的表格中,便于标签的集中定义与管理。该标签系统不仅支持无限扩展,以灵活应对各种测试需求,还特别引入了跳过类标签功能,便于在特定情境下跳过特定用例。在日常维护中,仅需聚焦于标签表格的更新与维护,极大地简化了管理流程。此外,这些标签还作为强大的筛选项,在驱动用例执行时发挥关键作用,确保能够精确筛选并执行目标用例集,实现测试过程的高效与精准。
全自动日志
无需编写日志打印代码,只需简单应用一个装饰器,即可自动记录并输出类中所有方法的功能说明,实现日志记录的自动化与智能化。
远程交互式控制
用户能够利用 YouQu 的 RPC 接口,实现与远程测试机器的实时互动,精准地指挥其执行复杂多变的 UI 操作及命令行指令。此接口赋予测试设备远程互控的能力,能够有效应对多端交互这种复杂业务场景实现自动化的难题,提升了自动化测试场景覆盖面。
失败录屏
失败录屏功能能够完整的捕捉并记录用例执行过程中的各类细节与异常情况,为迅速锁定并解析用例失败的根本原因提供了强有力的支持。
03
项目实践
YouQu 框架已深度融入公司日常运营,成功应用于数十项组件与系统的例行测试与持续集成流程之中,覆盖领域广泛,包括但不限于高度复杂性的系统级应用组件如文件管理器、DDE 及窗口管理器等。该框架展现出卓越的稳定性和高效性,持续稳定地实现月均五万条测试用例的无人值守自动化执行,确保了测试工作的高效性与精确度。
YouQu 框架已正式在 GitHub、Gitee 等知名开源社区完成项目的全面开源,展现出广泛的兼容性与强大的跨平台能力,无缝适配并优化运行于 UOS、deepin、openEuler、Anolis OS 等众多主流操作系统之上,为开发者与用户提供了更加灵活多样的选择与应用体验。
04
YouQu 官方兴趣小组
YouQu 框架的维护与演进展现出极其活跃的态势,其官方兴趣小组汇聚了来自国内外众多优秀开发者,大家携手并进,深入交流自动化领域的最新趋势与技术攻关挑战,共同推动该框架在技术前沿的持续探索与革新。
统信 YouQu 官方兴趣小组火热招募中!