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控件树 => 重建 => 多语言还原 => 图像检测

游戏引擎运行时的LQA自动化方案

游戏控件提取

  • 方法: 拿到游戏当前Hierachy中的所有Canvas,以它们的始点,往上到下进行递归遍历,将特定控件的数据保存为Json字符串

文本控件处理

  • 改造目的: 为了运行时可以动态获取最真实的key值,需要在GetText和SetText加入测试代码,通过游戏代码运行时,追加必要信息到component,便于获取
  • Gettext(key) => Language map读翻译 => Keyvalue 拼接返回 => settext => Keyvalue追加到component => 被串改的文本还原

图像控件处理

图像控件处理

还原实现

还原实现