国际化/本地化测试,测试人员除了熟练掌握除英语或者更多的外语,还需要关注如下一些方面:
1、使文字和图片有意义
软件的国际化/本地化
除了语言,还需要考虑地域(region或locale)——用户的国家和地理位置。
使软件适应特定地域特征,照顾到语言、方言、地区习俗和文化的过程称为国际化/本地化(localization)或国际化/本地化(internationalization)。这样的测试可以称为国际化/本地化测试。
2、翻译问题
尽管翻译只是整个国际化/本地化工作的一部分,但是从测试角度看这是重要的一环,最明显的问题是如何测试用其它语言做的产品。
软件测试员或者测试小组至少要对所测试的语言基本熟悉,能够驾驭软件,看懂软件显示的文字,输入必要的命令执行测试。
注意:软件测试小组一定要有人对测试的语言比较熟悉。
对多种语言(一般指非英语的语言)的情况,可以委托国际化/本地化测试公司进行测试。
(1)文本扩展(text expansion)
实践证明,当英语被翻译为其它语言,用来表达同一事务时往往需要加一些字符。
一个经验规则是每个单词长度预计增加100%。
因为这些扩展现象,故必须仔细测试可能受到变长了的文本影响的软件部分,要找出没有正确换行、截断的和连字符位置不对的文本;还要找到虽然文本有足够的扩展空间,但这是通过把其它的文本挤出去来实现的情况。
变长了的文本除了影响布局,还可能导致主程序失败,甚至更严重结果。
(2)ASCII和Unicode
ASCII字符集只能表示256种不同的字符,这远不足以表示所有语言的全部字符。
当开始为不同语言开发软件时,就需要找到克服该限制的解决方案。
曾经见过的一个方法是代码页(code page)技术,实质是ASCII表的替换,每一种语言用一个不同的代码页。
这个方法虽然笨,但对于少于256个字符的语言还是可行的。但对于中文、日文则不行。建议的方法是使用Unicode标准。
Unicode为每一个字符提供唯一编号,无论何种平台,无论何种程序,无论何种语言。
(3)热键和快捷键
在软件的国际化/本地化版本中,需要测试所有热键和快捷键工作是否正常,而且使用起来不困难。
(4)扩展字符
国际化/本地化软件,甚至非国际化/本地化软件中存在的一个常见问题是扩展字符(extended characters)。
扩展字符指的是普通英文字母A~Z和a~z之外的字符。
测试扩展字符的方法是找出软件所有接受字符输入和输出之处。在每一处尝试使用扩展字符,看能否与常规字符一样处理。对话框、文本域都是合适的对象。
技巧:测试扩展字符是否被正确处理的最简单的方法是,把它们加入测试的标准字符所在的等价划分之中。
(5)字符计算
与扩展字符有关的问题是软件在对其进行计算时如何接受解释。
要弄清楚测试的语言采用什么样的排序规则,并设计测试用例专门检查排列次序的正确性。
扩展字符计算要注意的另一个领域是大小写转换。
(6)从左向右和从右向左读
翻译中有一个大难题是某些语言(例如希伯莱文和阿拉伯文)从右向左读,而不是从左向右读。
(7)图形中的文字
时常被忽略的翻译问题是处理图形中的文字。必须要做的是:软件国际化/本地化时,每一个图标都要改变,以反映新的语言。
(8)让文本与代码脱离
所有文本字符串、错误提示信息和其它可以翻译的内容都应该存放在与源代码独立的文件中。
大多数国际化/本地化人员不是程序员,也没有必要是。让其修改资源文件(resource file)的简单文本文件,该文件包含软件可以显示的全部信息。
当软件运行时,通过查找该文件来引用信息,不管信息的内容是什么,都按照原文显示。
3、国际化/本地化问题
翻译问题只是全部问题的一半。
翻译文字和允许字符串包含不同字符和长度都不难,难的是修改软件使其适应国外市场。
(1)内容
这里的内容是指产品中除了代码之外的所有东西。
以下清单给出了国际化/本地化问题要仔细审查的各类内容:范例文档、图标、图片、声音、视频、帮助文件,有边界争端的地图,市场宣传材料,包装,Web链接。
(2)数据格式
不同的地区在诸如货币、时间和度量衡上使用不同的单位格式。
如果测试国际化/本地化软件,就需要对当地使用的度量单位非常熟悉,为了正确测试软件,需要从原版软件创建的测试数据中建立不同的等价划分。
4、配置和兼容性问题
(1)国外平台配置
键盘也许是语言依赖性最大的硬件——键盘布局。【不是主要但是必须考虑到】
从根本上讲,软件可能会用到的任何外设都要在平台配置和兼容性测试的等价划分中去考虑。
(2)数据兼容性
5、测试量的大小
如果软件从一开始就考虑到了上述的问题,那么国际化/本地化版本中包含更多软件缺陷和增大测试量的风险就很小。
注意:国际化/本地化测试量的要求是一个有风险的选择。
另一个问题关系到整个软件产品中什么需要改变。如果国际化/本地化工作只限于修改诸如文本和图形等内容——不是代码,——测试工作可能只是对改动进行合法性检查。如改动基本代码,则需考虑测试代码,并且检查功能和内容。