Qa Ci Cd Testing
帮助团队将测试高效集成到CI/CD流水线中,优化测试分层与质量门禁配置。
指导 Agent 在银河麒麟系统上自动完成桌面软件 GUI 兼容性测试。
openclaw skills install @cyanogenic/kylinos-automated-testing命令、参数、文件名以原文为准
本 Skill 指导 Agent 在银河麒麟 V11 桌面上独立完成软件的 GUI 兼容性适配测试。Agent 应具备窗口控制、截图、界面元素识别和 LLM 视觉理解能力;具体工具不限。
- 窗口控制:列出窗口、获取窗口信息、移动/调整窗口、发送键鼠事件。
- 截图:全屏截图或指定窗口截图。
- 界面元素识别:通过视觉模型或 OCR 从截图中提取可交互元素及其位置、文本。
- LLM 视觉理解:结合截图和元素信息判断界面状态、规划动作。
- 进程管理:启动/停止进程、读取进程 PID。
- 包管理:安装/卸载 deb、apk 或其他格式的软件包。
测试分五个阶段:安装 → 启动 → 功能测试 → 卸载 → 报告。
安装和卸载是确定性流程;功能测试有两种策略可选。
安装是确定性流程,不需要 LLM 规划,但需要视觉确认安装界面出现并操作。
安装失败则后续启动测试、功能测试、卸载测试全部标记为跳过。
启动测试验证软件能否正常启动并出现预期界面。
- 若软件为 deb 包,安装后查找系统 desktop 文件,使用其 Exec 字段作为启动命令;多个候选依次尝试。
- 否则使用用户提供的启动命令或从开始菜单搜索。
若无新窗口出现或截图与目标软件无关,启动测试失败,功能测试标记为跳过。
功能测试有两种策略,根据对软件的熟悉程度选择。
在功能测试前,根据软件名称、简介和测试目标,由 LLM 预先生成一组场景级功能用例,然后逐个执行。
用例生成:
用例执行:见下方「功能测试循环」。
不预生成用例。启动测试通过后,以首张界面截图为起点,由 LLM 动态规划测试目标,逐个在线探索,探索完成后归纳为用例。
目标规划:
在线探索:见下方「功能测试循环」,但循环围绕单个测试目标进行,目标达成/失败/阻塞后切换到下一个目标。
用例归纳:所有目标探索完成后,每个目标归纳为一个功能用例;失败目标保留失败判据和证据;若发现崩溃则生成崩溃复现用例。
每个功能用例或测试目标按以下循环执行:
- 对当前窗口截图。
- 与上一张有效截图比较;若内容相同,删除本次截图,复用上一张的界面观察结果,避免重复推理。
- 若内容不同,保留截图,进行界面识别。
- 调用界面元素识别,提取可交互元素的位置、类型和文本。
- 若 LLM 支持视觉输入,把截图一并交给 LLM,由 LLM 结合截图判断元素身份和控件语义。
- 当前用例/目标是否已达成、失败、阻塞,或应继续探索。
- 若已有结论,记录结果,进入下一步。
- 点击、输入、快捷键、等待等。
- 动作校验(Guard):
- 保存/打开/取消等业务按钮不能误定位到标题栏 Close 控件。
- 画布/文档内容区的绘制必须落到内容区,而不是工具栏图标。
- 文件对话框中进入目录必须双击目录,不能用 Enter 或「打开」把目录当文件打开。
- 拖拽动作必须有明显分离的起点和终点。
- 再次截图 → 去重 → 界面识别。
- 抽取确定性状态事实:文本增删、计时器变化、弹窗开闭、截图变化、重复动作摘要。
- 连续鼠标动作执行成功但界面无有效变化 → 进入键盘探测模式(优先规划方向键、回车、空格)。
- 键盘动作被证明有效 → 进入键盘优先模式。
- 文件对话框内明确目标仍可鼠标双击。
- 若 LLM 结论(如「界面无变化」「未放置」)与确定性事实(截图、OCR、计时器、弹窗)矛盾,降级为 uncertain 或修正为已通过,并记录冲突原因。
- 未达成且未达最大步数 → 回到步骤 2。
- 达成 → 记录结果,进入下一个用例/目标。
- 达到最大步数 → 强制最终判定:通过 / 规划失败 / 阻塞 / 无法判断 / 明确兼容性失败。
- 归因约束:若最后一次动作刚建立前置状态、或仍缺前置条件、或界面已等价空白/默认状态,不能直接归因为软件/系统兼容性失败,应记为 planning_failed / blocked / uncertain。
功能测试期间持续监控程序健康状态:
- 保存崩溃证据:截图、窗口快照、进程状态、日志摘要。
- 记录为 application_failed。
- 若为在线探索模式,构造崩溃复现用例,结束当前软件的功能测试。
automation_failed。对于具有新建、打开、保存、另存为等编辑功能的软件:
samples 目录且含匹配类型样例,播放器/阅读器/导入器优先使用;不存在则不强制。samples 目录只读,不保存/删除/覆盖。- 拉起系统文件管理器时先点击左侧「主目录/个人」入口。
- 进入目录使用双击。
- 不打开未知用户文件,不删除或覆盖用户已有文件。
每个功能用例/目标结束后,按以下策略重置被测应用:
- PID 不属于基线。
- 窗口标题/app_id/icon/启动记录能确认与被测软件相关。
- 不属于安装器、卸载器、终端、桌面组件等排除项。
卸载是确定性流程,不需要 LLM 规划。
测试完成后生成结构化报告,包含:
已收录 1 个 Skill