Google ANGLE项目测试流程与故障处理指南
angle 项目地址: https://gitcode.com/gh_mirrors/an/angle
前言
Google ANGLE项目作为OpenGL与Vulkan之间的重要转换层,其稳定性和兼容性对整个图形生态至关重要。本文将深入解析ANGLE项目的测试体系架构,以及开发者在面对各类测试失败时的标准处理流程。
ANGLE测试体系概述
ANGLE项目采用多层次的自动化测试体系,主要包括以下几类测试套件:
- ANGLE CI测试:核心的持续集成测试,覆盖基础功能
- Try测试:提交前的预检测试
- Chromium FYI测试:与Chromium集成的验证测试
这些测试运行在多种配置环境下,包括ANGLE独立运行模式和集成到Chromium中的模式,既包含提交前测试也包含提交后测试。
测试失败处理原则
当测试出现失败、崩溃或超时时,开发者应遵循以下原则:
-
及时响应:根据上下文决定响应速度
- 对于阻塞自动滚动的关键问题需要立即处理
- 常规开发中的失败应优先修复而非直接跳过
-
问题分类:准确区分问题的性质
- 功能缺陷
- 测试环境问题
- 预期行为变更
Vulkan验证层错误处理
Vulkan验证层(VVL)错误是常见的一类问题,处理流程如下:
错误诊断步骤
-
确定错误来源:
- 使用最新Vulkan工具链复现问题
- 检查是否为VVL本身的bug
-
问题记录:
- 创建ANGLE问题跟踪单
- 对于紧急问题标记Hotlist-Wrangler标签
错误抑制方法
在vk_renderer.cpp
文件中更新kSkippedMessages
数组:
// 问题跟踪单号
"VUID-VkDescriptorImageInfo-imageView-01976",
各类测试期望文件管理
dEQP测试期望
文件位置:src/tests/deqp_support
支持的状态标记:
FLAKY
:偶发性失败FAIL
:持续失败SKIP
:导致崩溃的测试TIMEOUT
:超时测试
angle_end2end_tests期望
文件位置:src/tests/angle_end2end_tests_expectations.txt
可用标记:
SKIP
:失败或崩溃的测试TIMEOUT
:超时测试
WebGL一致性测试期望
位于Chromium代码库中,包含:
RetryOnFailure
:偶发性失败Failure
:持续失败Skip
:严重问题(谨慎使用)
自动化审批流程
对于仅修改测试期望的变更,可以使用Rubber Stamp流程:
- 添加rubber-stamper@appspot.gserviceaccount.com为评审人
- 等待1分钟获取Bot-Commit: +1标记
- 添加Commit-Queue: +2标记提交
测试基础设施问题处理
当出现"internal swarming failure"时:
- 检查分配的测试机器状态
- 查看近期任务记录
- 必要时停止问题机器
- 向基础设施团队报告问题
权限管理指南
需要以下权限时联系项目所有者:
- 问题跟踪系统权限:通过Monorail管理
- 提交队列权限:通过Chrome Infra Auth管理
最佳实践建议
-
测试修改原则:
- 优先修复而非跳过
- 添加详细的注释说明
-
变更评审:
- 简单修改使用Rubber Stamp
- 复杂变更仍需人工评审
-
问题跟踪:
- 每个跳过的测试都应有关联的问题单
- 定期回顾跳过的测试
通过遵循这些规范,开发者可以高效处理ANGLE项目中的各类测试问题,确保项目质量的同时保持开发效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考