长期以来,Linux操作系统测试,特别是桌面操作系统测试,缺少一套专业且全面的综合型自动化测试框架,这一现状成为了提升测试效率与质量保证的瓶颈。
随着国内操作系统市场的蓬勃发展,业界对一套既专业又可靠的自动化测试框架的需求愈发凸显。它不仅是技术进步的迫切呼唤,也是确保国产操作系统品质与竞争力的关键所在。因此,开发并推广这样一套测试框架变得尤为重要且紧迫。
为了填补这一行业空白,统信软件精心打造了“YouQu”综合型自动化测试框架。该框架紧密贴合实际需求,专为Linux操作系统量身定制,集管理、分发调度、驱动执行等核心功能于一体,实现了测试流程的全方位覆盖。
「统信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操作系统的测试工作注入更多智慧和活力,推动技术进步和产业升级。
Linux桌面应用UI自动化测试
基于Qt属性查找、图像识别、OCR识别、相对位移方案获取元素位置,通过键鼠模拟操控元素进行UI操作。
Web UI自动化测试
基于PlayWright控制浏览器(可自定义)进行Web UI自动化测试。
Linux DBus接口自动化测试
通过框架内置的DBus操控功能,实现对DBus接口访问及获取数据。
命令行自动化测试
基于subprocess、pexpect实现命令行交互。
HTTP接口自动化测试
基于Python标准库urllib,实现网络接口自动化测试流程。
核心封装层提供基础能力,业务层根据实际业务需求(测试用例)动态加载核心封装层,执行层加载相应的用例集并控制执行流程。测试平台可以根据实际测试策略组装配置,通过执行层接口驱动框架完成自动化测试执行。
一键式环境部署解决方案,无缝兼容虚拟化与本机部署模式,并允许用户根据需求灵活定制,实现依赖项的便捷新增与精准裁剪。
在项目根目录下,执行env.sh脚本,即可一键完成环境部署:
bash env.sh
若需引入其他Python依赖库,只需在用例工程的根目录下创建一个requirements.txt文件,并在该文件中列出所有必需的依赖库及其版本要求。随后,通过执行简单的命令即可自动安装所有列出的依赖项,确保测试环境的完整性与一致性。
autotest_xxx ├── requirement.txt ├── case ···
对于仅需最基础依赖的场景,如纯接口自动化测试项目,您可以在用例工程的根目录下创建一个名为BASICENV的标记文件。随后,在执行环境配置脚本env.sh时,该脚本会智能识别BASICENV文件的存在,并据此仅安装项目所需的最基础依赖项,从而简化环境配置过程,提高项目启动效率。
autotest_xxx ├── requirement_deb.txt ├── case ...
一键创建APP工程,基础模板代码一键生成,帮您快速开始编写测试用例。
YouQu键鼠模块以业界领先的姿态,自主研发了Wayland环境下的键鼠工具,并实现了与X11协议的良好兼容,满足绝大多数场景的自动化键鼠操作需求。
YouQu支持大部分主流的元素识别方案,同时在识别技术上一直在做演进和突破。
包含常规识别、动态气泡识别等多种方案,下图展示的是“音乐”应用中渐隐式气泡提示的识别示例。
通过对系统中所有已启动应用的Accessbility树进行递归查找,获取到目标元素对象,从而通过键鼠模拟操作元素。
鉴于传统的OCR方案,比如谷歌的Tesseract,在中文识别上准确率有限,我们经过深入调研后,选用了PaddleOCR作为核心技术,并在此基础上进行了突破和创新,成功研发了去干扰识别方案。
去干扰前,存在两个相似的鼠标右键识别对象。
去干扰后,能准确识别到鼠标右键菜单对象。
在UI设计图中我们是可以获取到元素按钮相对于应用边框的边距的,我们可以通过技术手段获取到应用界面在当前屏幕中的位置及应用窗口的大小,从而进行精准定位。
除了上述元素定位方案,我们还自研了一套基于RGB对照的图像识别方案,可以做到不依赖OpenCV也能精准识别图像元素。
YouQu内置了多样化的断言语句库,覆盖了广泛的断言场景,能够满足各种测试验证需求,确保测试结果的准确性与全面性。
YouQu的执行管理器manage.py提供了丰富的配置和命令行参数,支持本地用例驱动执行、远程用例驱动执行、CSV标签管理和解析、禅道与自动化项目CSV标签关联管理、脚手架等功能。
YouQu测试报告功能全面升级,支持生成多样化的报告类型,包括HTML、JSON及XML格式,不仅确保报告信息的详尽丰富,更在呈现上追求美观与易读性。无论是用户本地直观查看,还是通过第三方接口进行数据交互,YouQu测试报告均能够满足,为用户提供灵活便捷的报告体验。
实施了用例标签的集中化管理策略,将所有用例的标签整合至一个统一的表格中,便于标签的集中定义与管理。该标签系统不仅支持无限扩展,以灵活应对各种测试需求,还特别引入了跳过类标签功能,便于在特定情境下跳过特定用例。在日常维护中,仅需聚焦于标签表格的更新与维护,极大地简化了管理流程。此外,这些标签还作为强大的筛选项,在驱动用例执行时发挥关键作用,确保能够精确筛选并执行目标用例集,实现测试过程的高效与精准。
无需编写日志打印代码,只需简单应用一个装饰器,即可自动记录并输出类中所有方法的功能说明,实现日志记录的自动化与智能化。
用户能够利用YouQu的RPC接口,实现与远程测试机器的实时互动,精准地指挥其执行复杂多变的UI操作及命令行指令。此接口赋予测试设备远程互控的能力,能够有效应对多端交互这种复杂业务场景实现自动化的难题,提升了自动化测试场景覆盖面。
失败录屏功能能够完整的捕捉并记录用例执行过程中的各类细节与异常情况,为迅速锁定并解析用例失败的根本原因提供了强有力的支持。
开源仓库地址:
YouQu框架的维护与演进展现出极其活跃的态势,其官方兴趣小组汇聚了来自国内外众多优秀开发者,大家携手并进,深入交流自动化领域的最新趋势与技术攻关挑战,共同推动该框架在技术前沿的持续探索与革新。
统信YouQu官方兴趣小组火热招募中!诚邀小伙伴们加入,项目地址为:https://youqu.uniontech.com/SIG.html
原文链接:统信软件推出“YouQu”综合型自动化测试框架,全面赋能开发者生态
好消息。
Popular Ranking
Popular Events
长期以来,Linux操作系统测试,特别是桌面操作系统测试,缺少一套专业且全面的综合型自动化测试框架,这一现状成为了提升测试效率与质量保证的瓶颈。
随着国内操作系统市场的蓬勃发展,业界对一套既专业又可靠的自动化测试框架的需求愈发凸显。它不仅是技术进步的迫切呼唤,也是确保国产操作系统品质与竞争力的关键所在。因此,开发并推广这样一套测试框架变得尤为重要且紧迫。
为了填补这一行业空白,统信软件精心打造了“YouQu”综合型自动化测试框架。该框架紧密贴合实际需求,专为Linux操作系统量身定制,集管理、分发调度、驱动执行等核心功能于一体,实现了测试流程的全方位覆盖。
YouQu揭秘
「统信YouQu」
https://youqu.uniontech.com
https://uosdn.uniontech.com/#document2?dirid=66a7735a36fced0b0bdb3139
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特点
支持多种测试类型
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支持大部分主流的元素识别方案,同时在识别技术上一直在做演进和突破。
包含常规识别、动态气泡识别等多种方案,下图展示的是“音乐”应用中渐隐式气泡提示的识别示例。
通过对系统中所有已启动应用的Accessbility树进行递归查找,获取到目标元素对象,从而通过键鼠模拟操作元素。
鉴于传统的OCR方案,比如谷歌的Tesseract,在中文识别上准确率有限,我们经过深入调研后,选用了PaddleOCR作为核心技术,并在此基础上进行了突破和创新,成功研发了去干扰识别方案。
去干扰前,存在两个相似的鼠标右键识别对象。
去干扰后,能准确识别到鼠标右键菜单对象。
在UI设计图中我们是可以获取到元素按钮相对于应用边框的边距的,我们可以通过技术手段获取到应用界面在当前屏幕中的位置及应用窗口的大小,从而进行精准定位。
除了上述元素定位方案,我们还自研了一套基于RGB对照的图像识别方案,可以做到不依赖OpenCV也能精准识别图像元素。
断言语句简洁丰富
YouQu内置了多样化的断言语句库,覆盖了广泛的断言场景,能够满足各种测试验证需求,确保测试结果的准确性与全面性。
执行和管理高度配置化
YouQu的执行管理器manage.py提供了丰富的配置和命令行参数,支持本地用例驱动执行、远程用例驱动执行、CSV标签管理和解析、禅道与自动化项目CSV标签关联管理、脚手架等功能。
测试报告易读友好
YouQu测试报告功能全面升级,支持生成多样化的报告类型,包括HTML、JSON及XML格式,不仅确保报告信息的详尽丰富,更在呈现上追求美观与易读性。无论是用户本地直观查看,还是通过第三方接口进行数据交互,YouQu测试报告均能够满足,为用户提供灵活便捷的报告体验。
用例标签化管理
实施了用例标签的集中化管理策略,将所有用例的标签整合至一个统一的表格中,便于标签的集中定义与管理。该标签系统不仅支持无限扩展,以灵活应对各种测试需求,还特别引入了跳过类标签功能,便于在特定情境下跳过特定用例。在日常维护中,仅需聚焦于标签表格的更新与维护,极大地简化了管理流程。此外,这些标签还作为强大的筛选项,在驱动用例执行时发挥关键作用,确保能够精确筛选并执行目标用例集,实现测试过程的高效与精准。
全自动日志
无需编写日志打印代码,只需简单应用一个装饰器,即可自动记录并输出类中所有方法的功能说明,实现日志记录的自动化与智能化。
远程交互式控制
用户能够利用YouQu的RPC接口,实现与远程测试机器的实时互动,精准地指挥其执行复杂多变的UI操作及命令行指令。此接口赋予测试设备远程互控的能力,能够有效应对多端交互这种复杂业务场景实现自动化的难题,提升了自动化测试场景覆盖面。
失败录屏
失败录屏功能能够完整的捕捉并记录用例执行过程中的各类细节与异常情况,为迅速锁定并解析用例失败的根本原因提供了强有力的支持。
项目地址
开源仓库地址:
https://github.com/linuxdeepin/youqu
https://gitee.com/src-openeuler/youqu
兴趣小组
YouQu框架的维护与演进展现出极其活跃的态势,其官方兴趣小组汇聚了来自国内外众多优秀开发者,大家携手并进,深入交流自动化领域的最新趋势与技术攻关挑战,共同推动该框架在技术前沿的持续探索与革新。
统信YouQu官方兴趣小组火热招募中!诚邀小伙伴们加入,项目地址为:https://youqu.uniontech.com/SIG.html
原文链接:统信软件推出“YouQu”综合型自动化测试框架,全面赋能开发者生态