分类: 项目管理
2009-08-11 10:16:53
磁针石:xurongzhong#gmail.com
软件的国际化 除了语言,还需要考虑地域(region或locale)——用户的国家和地理位置。比如西班牙语有:Costa Rica,
Peru, or the Dominican Republic,Spain。 使软件适应特定地域特征,照顾到语言、方言、地区习俗和文化的过程称为本地化(localization)或国际化(internationalization)。测试此类软件称为本地化测试。 尽管翻译只是整个本地化工作的一部分,但是从测试角度看这是重要的一环,最明显的问题是如何测试用其它语言做的产品。软件测试员或者测试小组至少要对所测试的语言基本熟悉,能够驾驭软件,看懂软件显示的文字,输入必要的命令执行测试。 注意:软件测试小组一定要有人对测试的语言比较熟悉。 对多种语言的情况,可以委托本地化测试公司进行测试。 (1)文本扩展(text expansion) 实践证明,当英语被翻译为其它语言,用来表达同一事务时往往需要加一些字符。一个好的规则是每个按钮的单词长度预计增加100%,句子和短段落增长50%。 因为这些扩展现象,故必须仔细测试可能受到变长了的文本影响的软件部分,要找出没有正确换行、截断的和连字符位置不对的文本;还要找到虽然文本有足够的扩展空间,但这是通过把其它的文本挤出去来实现的情况。变长了的文本还可能导致主程序失败,甚至系统崩溃。 (2)ASCII、DBCS和Unicode ASCII字符集只能表示256种不同的字符——远不足以表示所有语言的全部字符。当开始为不同语言开发软件时,就需要找到克服该限制的解决方案。常用的一个方法是代码页(code page)技术,实质是ASCII表的替换,每一种语言用一个不同的代码页。这个方法虽然笨,但对于少于256个字符的语言还是可行的。但对于中文、日文则不行。这时,使用DBCS(双字节字符集)的系统提供对超过256个字符的语言的支持。用两个字节代替一个字节来表示最多可容纳65536个字符。代码页和DBCS在许多情况下足够了,但是会遇到一些问题,最重要的是兼容性问题。 解决这个麻烦的方法是使用Unicode标准。Unicode为每一个字符提供唯一编号,无论何种平台,无论何种程序,无论何种语言。参见。 (3)热键和快捷键 在软件的本地化版本中,需要测试所有热键和快捷键工作是否正常,而且使用起来不困难。要根据语言不同而改变 (4)扩展字符 本地化软件,甚至非本地化软件中存在的一个常见问题是扩展字符(extended characters)。扩展字符指的是普通英文字母A~Z和a~z之外的字符。测试扩展字符的方法是找出软件所有接受字符输入和输出之处。在每一处尝试使用扩展字符,看能否与常规字符一样处理。对话框、文本域都是合适的对象。 技巧:测试扩展字符是否被正确处理的最简单的方法是,把它们加入测试的标准字符所在的等价划分之中。 (5)字符计算 与扩展字符有关的问题是软件在对其进行计算时如何接受解释。要弄清楚测试的语言采用什么样的排序规则,并开发测试用例专门检查排列次序的正确性。 扩展字符计算打破的另一个领域是大小写转换。不是简单的减32能解决的。 (6)从左向右和从右向左读 翻译中有一个大难题是某些语言(例如希伯莱文和阿拉伯文)从右向左读,而不是从左向右读。 幸好大多数主要操作系统提供了处理这些语言的内部支持。如果没有这一点,完成任务几乎是不可能的。即便这样,翻译这样的文本也不是容易的事。 (7)图形中的文字 另一个翻译问题是处理图形中的文字。它的影响是当软件本地化时,每一个图标都要改变,以反映新的语言。 (8)让文本与代码脱离 所有文本字符串、错误提示信息和其它可以翻译的内容都应该存放在与源代码独立的文件中。 大多数本地化人员不是程序员,也没有必要是。让其修改资源文件(resource file)的简单文本文件,该文件包含软件可以显示的全部信息。当软件运行时,通过查找该文件来引用信息,不管信息的内容是什么,都按照原文显示。 这就是说,对于白盒测试员来说,检查代码,确保没有任何嵌入的字符串未出现在外部文本文件中很重要。 这个问题的另一个变化形式是当代码动态生成文本信息时。 翻译问题只是全部问题的一半。 翻译文字和允许字符串包含不同字符和长度都不难,难的是修改软件使其适应国外市场。经过准确翻译和仔细测试的软件是精确和可靠的,但是如果程序员不考虑本地化的问题,程序就可能不够准确和高质量。 (1)内容 这里的内容是指产品中除了代码之外的所有东西。 以下清单给出了本地化问题要仔细审查的各类内容:范例文档,图标,图片,声音,视频,帮助文件,有边界争端的地图,市场宣传材料,包装,Web链接。 (2)数据格式 不同的地区在诸如货币、时间和度量衡上使用不同的睡觉单位格式。在本地化时需要修改程序代码。如果测试本地化软件,就需要对当地使用的度量单位非常熟悉,为了正确测试软件,需要从原版软件创建的测试数据中建立不同的等价划分。 这部分OS有区域选择选择,可供参考§10 外国语言测试
§10.1 使文字和图片有意义
§10.2 翻译问题
§10.3 本地化问题
Unit |
Considerations |
Measurements |
Metric or English: meters vs. yards |
Numbers |
Comma, decimal, or space separators; how negatives are shown; # symbol
for number; 1.200,00 vs. 1200.00 or 100 vs. (100) |
Currency |
Different symbols and where they're placed: 30? vs. ?30 |
Dates |
Order of month, day, year; separators; leading zeros; long and short
formats: dd/mm/yy vs. mm/dd/yy or May 5, 2005 vs. 15 de mayo 2005 |
Times |
12-hour or 24-hour, separators 3:30pm vs. 15:30 |
Calendars |
Different calendars and starting days: In some countries Sunday is not
the first day of the week |
地址 |
Order of lines; postal code used: 98072 vs. T2N 0E6 |
电话号码 |
Parenthesis or dash separators: (425) 555-1212 vs. 425-555-1212 vs.
425.555.1212 |
页面设置 |
Different paper and envelope sizes: US Letter vs. A4 |
(1)国外平台配置
键盘也许是语言依赖性最大的硬件——键盘布局。
从根本上讲,软件可能会用到的任何外设都要在平台配置和兼容性测试的等价划分中去考虑。
(2)数据兼容性:比如文档在英文中编辑,在德文中能否打开。
项目从一开始就计划本地化了吗?
本地化版本中更改程序代码了吗?
如果软件从一开始就考虑到了本章所述的问题,那么本地化版本中包含更多软件缺陷和增大测试量的风险就很小。
注意:本地化测试量的要求是一个有风险的选择。
另一个问题关系到整个软件产品中什么需要改变。如果本地化工作只限于修改诸如文本和图形等内容——不是代码,——测试工作可能只是对改动进行合法性检查。如改动基本代码,则需考虑测试代码,并且检查功能和内容。
一些参考:
For more information on localization programming and testing for Windows, visit www.microsoft.com/globaldev. For the Mac, consult the Apple website, developer.apple.com/intl/localization/tools.html. Linux programmers and testers can find localization information at .