前言

在上一篇《提前的年终总结》https://testerhome.com/articles/34607 中,有朋友说好奇里面的 “多语言自动化测试工具” 是什么。刚好这周因为疫情被隔离在家了,今晚抽时间介绍一下吧。

什么是多语言测试

所谓的多语言(NLS, national language support),就是系统为不同国家、不同语言的客户,展示对应的翻译文本。例如操作系统在切换系统语言的时候,就会展示不同的翻译内容。 简单来说,就是如果我设置的系统语言是简体中文,我就应该看到简体中文的菜单和文字说明;如果设置的系统语言是英文,就应该看到英文的菜单和文字说明。随着现在世界交流的越来越频繁,也越来越多的系统或者网站需要提供这样的服务。
那么什么是多语言测试呢? 就是在功能测试之外,需要确保每一种支持的语言都能正确的展示对应的翻译。

多语言测试的需求

多语言测试的挑战

多语言测试思路分解

多语言的实现原理

大部分的系统中,其实多语言都只是一些不同的配置数据。

简单地说,只要保证页面元素配置了正确的 nls key,并且所有的配置文件里的翻译内容是正确的,就基本上可以保障所有语言下的展示都是正确。

分层测试

根据多语言的实现原理,可以大概总结到整个开发、部署过程中可能出现的犯错:

针对以上可能,可以针对性地进行分层测试:

  1. 如何确定页面元素与 nls key 是正确匹配的? 可以采取以下方案:
  2. 通过特殊开关,使页面不展示对应的文本,而直接展示 nls key。在功能测试过程中,可以直接测试每个 nls key 与需求是否一致。
  3. 在默认语言下,根据需求文档检查每个页面的文本展示是否正确。除非某些元素没有匹配 nls key, 否则这样检查一遍可以基本保证 nls key 是正确匹配的。
  4. 切换到另一种语言。如果页面所有的文本都已经切换到了不同的语言,则说明所有的元素都通过 nls key 进行了控制; 如果某些元素仍然展示的是默认语言,说明元素没有正确地配置 nls key,也就发现了 bug。

  5. 如何快速测试不同的语言的配置文件正确性?
    那么大量的配置文件和语言,通常是由翻译团队以表格的方式进行提供,大概格式如下:

    开发需要把这个表格转换成不同语言的配置文件;测试的时候也可以根据这个表格进行比对。

  6. 在流程上规范开发必须使用统一的工具进行表格 - 配置文件的转化,禁止直接复制 - 粘贴产生的配置错误。

  7. 测试进行校验的时候,同样通过脚本把部署后的静态配置文件下载下来,并且读取后与表格进行对比,快速发现任何不一致的地方,从而找到配置错误的 bug。

  8. 如何发现某些元素的展示错误,例如文本超出显示范围?
    上面的步骤只能保证翻译配置是正确的,如果想要检查页面元素上的展示是否正确,则需要在 UI 测试的角度出发。根据不同级别的测试需求,我们会采取以下两种方案:

  9. 在自动化用例中,在每个页面中增加一个截图的步骤,并且添加命名;在执行自动化测试时,根据语言列表,完成每种语言下都把所有的页面遍历一遍并自动截图存档。测试人员只需要快速浏览不同语言的截图,就可以找出 UI 展示的错误。注意要实现不同语言下都可以正常运行脚本,需要我们自动化用例中避免使用文本定位,而要用 id、xpath 等不会随着语言产生变化的属性来定位。

  10. 如果希望在端到端级别验证每个元素所展示的内容是翻译正确的,则可以在每个页面中,添加一个验证 nls 内容的方法,通过元素的 locator 把页面实际展示的文本获取出来,并通过期望的 nls key,去翻译表格中获取到目标语言的翻译内容,两者进行比对。 这个方法是真正的端到端测试,所以准确性更高;但需要对每个页面的每个元素都获取一遍对应的 locator 和 nls key,所以成本比较大。

如何从流程上减少多语言测试的 bug


↙↙↙阅读原文可查看相关链接,并与作者交流