软件本地化测试是项系统性任务,讲究团队协作精神。软件测试工程师负责测试、发现、报告软件错误。软件错误修复工程师的工作是及时正确修复处理这些软件错误。为了便于软件错误修复工程师能够迅速重现报告的错误,寻找错误产生的原因,然后及时修复错误,需要测试工程师正确完整地报告发现的错误。另外,不同类型的软件错误,又分别由来自不同公司的软件错误修复工程师进行修复。例如,软件功能错误和软件国际化错误只能由源语言软件供给商的软件错误修复工程师进行修复,而本地化错误由本地化服务商的软件错误修复工程师进行修复。
下面对本地化软件的错误的三种典型类型进行分类讨论,探讨错误的表现特征,产生的原因,测试要求,发现错误的方法。
1 、功能错误
表现特征
· 不能实现设计要求的功能。
· 产生与设计要求不符合的结果。
· 绝大多数存在于源语言软件和本地化软件,也有仅出现在本地化软件中。
· 经常出现在软件的菜单项、工具栏按钮和对话框的功能按钮中。
产生原因
· 源语言软件编码错误。
· 错误本地化,如将程序中的变量字串名进行了翻译等。
测试要求
· 保证输入数据正确,或者打开了正确的测试用例。
· 明确正确的输出结果和中间数据数值及格式。
测试方法
· 对于菜单项或工具栏按钮,通过全面测试各个选项,认真观察每一步是否正确执行,输出结果(包括格式和数值)是否正确。
· 对于对话框,可以逐个执行各按钮,各个列表选项等观察执行结果。
· 对于命令行形式的多个并列选项,采用路径跟踪法,按分支顺序测试嵌套的全部子项。
说明
· 非凡注重不同选项、不同按钮相互操作的影响。
· 注重检查快捷键是否遗漏,是否多余,是否不同,是否起作用。
2 、国际化错误
表现特征
· 控件或对话框中显示不可辩识或无意义的明显错误的字符。
· 不支持双字节字符的输入和输出,包括双字节的文件名和路径名。
· 与当地不符合的默认打印纸张大小。
· 与当地不符合的日期和时间格式。
· 本地化软件的列表项排序错误。
· 某些没有本地化的字符串。
· 仅出现在本地化后的版本中。
产生原因
· 源程序在设计时没有正确进行国际化设计,例如,没有提供双字节字符集的支持。
· 源程序在设计时没有将可以本地化的字符串与软件代码进行彻底分离。
· 软件本地化后,单字节字符向双字节字符转化过程中,由于单字节和双字节之间的差别,可能使得某些本地化后的双字节字符的显示乱码。
测试要求
· 本地化后的软件字符显示正确完整,无乱码或明显错别字。
· 与本地区域有关的数据类型(日期 / 时间,货币符号,纸张大小,字体,度量单位等)的显示符合本地的格式要求。
测试方法
· 执行菜单或按钮,检查对话框中的字符。
· 打开帮助文档,检查所有需要翻译的字符。
说明
· 注重检查对话框下拉列表中需要拖动滚动条才能显示的内容。
· 需要确认源语言软件对应项正确,仅本地化软件存在错误。
3 、本地化错误
包括翻译错误和控件大小和位置引起的布局错误。
表现特征
· 应该翻译而没有翻译的英文字符。
· 不应该翻译而翻译的中文字词。
· 错误翻译的字词。
· 较多隐含在对话框各控件以及帮助文档中。
· 只在本地化版本中存在该类型错误。
· 控件相互重叠或排列不均匀。
· 控件中字符显示不完整。
· 主要出现在本地化版本的对话框中。
产生原因
· 翻译人员不熟悉翻译要求。
· 翻译人员工作疏漏。
· 用户界面的翻译与标准术语表不一致。
· 软件本地化后,由于源语言和本地化语言的表达方式不同,本地化后的字符数与源语言不同,每个字符所占空间尺寸不同,使得在英文版本正确显示的控件字符,可能在本地化版本显示不正确。
· 在编译本地化软件之前,没有对资源文件对话框及其控件调整大小。
· 本地化人员调整软件资源文件不当引起。例如,对话框及其控件高度或宽度的不正确调整。
测试要求
· 明确需要翻译和不需要翻译的内容。
· 明确正确的翻译方式。
· 根据术语表,确认术语翻译的正确性与一致性。
· 对话框中控件布局均匀,字符显示完整正确。
· 对话框中控件数量相等,没有多余或丢失的控件
测试方法
· 主要同时打开中英文版本,执行相同的操作。
· 结合标准界面翻译术语表,参照对比。
· 执行将要打开对话框的菜单或工具栏按钮,观察打开对话框中的控件布局。
· 对比检查源语言软件和本地化软件对应的对话框中控件的数量
说明
· 对于对话框,假如含有下拉列表框,要打开列表框查看全部项。
· 非凡要注重选项中开关类翻译错误。
· 可能在执行不同的操作后,如选择了不同单选或复选按钮后,编辑框显示重叠等。
· 执行后带省略号的菜单或命令按钮,将会显示对话框。
· 一些对话框控件的布局错误假如也存在于源语言软件中,则属于软件设计错误,应该分配给软件供给商处理。
以上对本地化软件测试经常碰到的三种错误类型进行了分析,实际测试是一个动态的过程,不能孤立静态地对待发现的错误,错误的类型并不是绝对的,需要具体问题。例如,本地化软件中假如发现应该翻译而没有翻译的错误,既可能是由于本地化翻译过程中忘记翻译引起的本地化错误,也可能是源语言软件设计编程中的硬编码引起的国际化错误。再者,某些软件功能错误既可能是由于本地化翻译过程中采用了错误的翻译格式 ( 例如,某些不应该翻译的程序变量字符被翻译了 ) 引起的错误,也可能是源语言软件编程错误。最后,一个错误可能包含着其他的不同类型的错误。比如在对话框中,选择某个按钮,产生一个错误提示对话框,这可能是一个按钮功能错误,假如对话框中存在需要翻译而没有翻译的英文,则又是一个本地化翻译错误,假如对话框中存在无法辨识的字符,则又是一个国际化错误,假如对话框中按钮排列重叠,则还是一个本地化布局错误。
总之,本地化软件的错误的产生是多方面的,不能仅仅归结为软件本地化过程带来的错误。实际上,良好的国际化设计的源程序是减少软件本地化错误的根本保证。当然,提高软件本地化过程能力,提高翻译和检查,优化本地化软件编译流程,能够减少很多因本地化产生的错误。软件测试工程师需要认真思考软件错误表现的实质,深入分析错误来源,将其划分为正确的错误类型,分配给适当的修复工程师(源语言软件供给商或本地化服务商)处理。