LQA全流程自动化
LQA
- LQA测试包括常见的超框,漏译,漏key,以及语义问题,LQA测试涉及游戏所有语种,所有文本,每增加一个语种都会让测试量加倍。此外游戏从翻译,到语义测试都需要专业团队来操作,整体流程非常冗长
- 而LQA自动化测试方法,无需出多语言包即可自动化,且工作量与多少语种无关。此外还通过自训练模型进行翻译,以及语义测试,将整个LQA从翻译到测试行程完整的研发内自动化闭环。为项目节省了极大的时间成本和经济成本。
LQA全流程自动化
游戏本地化测试
- 游戏LQA(本地化测试)是针对游戏出海场景中出现的超框,漏译,漏Key,翻译错误等问题进行的测试
超框检查
检查项: 翻译后文字过长、个别语种字形问题导致的字体截断、超框、重合
漏译
检查项: 游戏文本中key值缺失,导致文本出现默认文本
语义检查
检查项: 翻译语义是否准确、译文是否符合游戏场景
面临的挑战
- 多语种,涉及游戏所有文本,动辄几十上百万文字,测试工作量非常庞大,任务工时消耗非常高。
- 翻译合入通常到版本末期,测试任务时间相对集中,不能达到长期CI运行自动化检测的状态,发现问题相对滞后,经常需要热更发很多翻译问题。
- 目前本地化翻译属于全球化作业,从发现问题到修复,再到出包,验证通常涉及到多个国家多个区域协作,流程非常漫长,效率低下。
- 目前市面上的自动化是通过截图所有语言所有页面,自动化程度较低效率比较低,节省成本有限。
解决方法
纯静态遍历
方案:
- 基于纯静态prefab搜索
- 基于纯excel/dtxml配置表的key value漏译判断
问题
- Text控件动态加载
- Text上可能没有预先挂载localization组件
- 翻译表查出的非漏译冗余内容较多
- 因为动态控件导致的较难静态检查超框
运行时抓取和还原
方案:
- 通过运行时对于text组件的get、set函数的改造,抓取每个text组件的key、value值
- 通过控件之间的屏幕坐标碰撞计算得到结果
问题
- 仅通过碰撞计算,冗余量很高,精细度不足
- 无法做更多的错误类型识别扩展
结合图像算法的运行时LQA方案
(AOV落地使用)
方案
- 保持运行时抓取还原方案的优势
结合效能组图像服务 ,做了多达6种错误类型的识别
游戏引擎运行时的LQA自动化方案
- 运行时截取 + 还原 : Dump控件树 => 重建 => 多语言还原 => 图像检测
游戏控件提取
- 方法: 拿到游戏当前Hierachy中的所有Canvas,以它们的始点,往上到下进行递归遍历,将特定控件的数据保存为Json字符串
文本控件处理
- 改造目的: 为了运行时可以动态获取最真实的key值,需要在GetText和SetText加入测试代码,通过游戏代码运行时,追加必要信息到component,便于获取
- Gettext(key) => Language map读翻译 => Keyvalue 拼接返回 => settext => Keyvalue追加到component => 被串改的文本还原
图像控件处理
还原实现
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 SleepyLoser's Blog!
评论