1、第10章 软件本地化测试,本章要点: 1、软件国际化软件国际化的含义国际化软件测试设计的通用准则软件国际化测试 2、软件本地化软件本地化的含义软件本地化和国际化的关系软件本地化及其测试,10.1 软件国际化,软件国际化是全球化的产物。随着国际交流的密切和行业标准的国际性统一,一些大型软件或者热门软件,不但要提供一国语言的版本,还要提供其他国家语言的版本,这就是通常意义上的软件国际化。,10.1 软件国际化,public class NotI18Nstatic public void main(String args)System.out.println(“Hello.”);System.out
2、.println(“How are you?”);System.out.println(“Goodbye.”); ,软件国际化前:,10.1 软件国际化,I18NSample.java,软件国际化后:,MessagesBundle.properties,MessagesBundle_de_DE.properties,MessagesBundle_fr_FR.properties,10.1 软件国际化(续),1、软件国际化(简称:I18N)国际化的英文单词是“Internationalization”。软件国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,能够在创建
3、不同语言版本时,不需要重新设计源程序代码的软件工程方法。,10.1 软件国际化(续),2、国际化软件设计要遵循的通用准则: (1)在国际化软件项目的初期融入国际化思想,并且使国际化贯穿于项目的整个生命周期。 (2)采用单一源文件进行多语言版本的本地化,不针对不同的语言编写多套代码。 (3)需要本地化的文字与软件源代码分离,存储在单独的资源文件中。 (4)软件代码支持处理单字节字符集和多字节字符集文字的输入、输出和显示,并且遵守竖排和折行规则。 (5)软件代码应该支持Unicode标准,或者可以在Unicode和其它代码页(Code Page)互换。,10.1 软件国际化(续),2、国际化软件设
4、计要遵循的通用准则: (6)软件代码不要嵌入字体名,也不要假设使用某种字体。 (7)使用通用的图标和位图,避免不同区域的文化和传统差异,避免在图标和位图中嵌入需要本地化的文字。 (8)菜单、对话框等界面布局能够满足处理本地化文字的长度扩展的需要。 (9)源语言的文字要准确精简,使用一致的术语,避免歧义和拼写错误,以便进行本地化翻译。 (10)保证不同区域的键盘布局都能使用源软件的快捷键。 (11)考虑不同区域的法律和文化习俗对软件的要求。,10.1 软件国际化(续),2、国际化软件设计要遵循的通用准则: (12)如果软件中采用第三方开发的软件或组件,需要检查和确认是否满足国际化的要求。 (13
5、)保证源语言软件可以在不同的区域和操作系统上正确运行。 (14)软件代码中避免“硬编码”,不使用基于源语言的数字常量、屏幕位置、文件和路径名。 (15)字符串的缓冲区长度要满足本地化字符扩展的长度。 (16)软件能正确支持区域排序和大小写转换。,10.1 软件国际化(续),3、国际化测试国际化测试的目的是测试软件的国际化支持能力,发现软件国际化的潜在问题,保证软件在世界不同区域中都能正常运行。 设计评审 代码审查 针对源语言的功能测试 针对伪翻译版本的测试,10.2 软件本地化,1、相关术语(1)软件本地化( Localization ,L10N)是将一个软件产品按特定国家/地区或语言市场的需
6、要进行加工,使之满足特定市场上的用户对语言和文化的特殊要求的软件生产活动。包括翻译、重新设计、功能调整、功能测试以及是否符合当地的习俗、文化背景、语言和方言的验证等。,10.2 软件本地化,(1)软件本地化( Localization ,L10N)本地化是为解决网站、软件以及文档资料向其它国家推广时遇到的语言障碍问题。 网站本地化:网站需要翻译成不同国家的语言,以便不同国家的人能够无障碍地阅读网站内容。 软件本地化,以便能够在目标国家推广。 当然将网站或软件本地化为全世界所有语种是不现实的,一般的惯例是只面向几种主要的语种(尤其是英语)进行本地化,比如现在许多国内网站都有中英文两个版本。,10
7、.2软件本地化(续),(2)区域( Locale )场所、本地;从地理上说,区域是某个地方(国家或地区);是由语言、国家/地区,以及文化传统确定的用户环境特征集合,它决定了排列顺序、键盘布局,以及日期、时间、数字和货币格式等的通用设置。,10.2软件本地化(续),(3)软件全球化( Globalization )是一个概念化产品的过程,它基于全球市场考虑,为全球用户设计,面向全球市场发布具有一致界面、风格和功能的软件。它的核心特征和代码设计并不局限于一种语言和区域用户,可以支持不同目标市场的语言文字和数据信息的输入、输出、显示和存储。,10.2软件本地化(续),图10-1 翻译、本地化与国际化
8、、全球化之间的关系,2、软件国际化和本地化的关系,10.2软件本地化(续),2、软件国际化和本地化的关系国际化是为了解决软件能在各个不同语言、不同风俗的国家和地区使用的问题,对计算机设计和编程做出的某些规定。国际化是本地化的前提和基础本地化是国际化向特定本地语言环境的转换,本地化要适应国际化的规定。,10.2软件本地化(续),3、软件本地化的内容(1)软件用户界面 (2)联机文档 (3)组合键设置 (4)度量衡和时区等,10.2软件本地化(续),(1)建立一个配置管理体系,跟踪目标语言各个版本的源代码 (2)创造和维护术语表 (3)从源语言代码中分离资源文件、或提取需要本地化的文本 (4)把分
9、离或提取的文本、图片等翻译成目标语言 (5)把翻译好的文本、图片重新插入目标语言的源代码版本中 (6)如果需要,编译目标语言的源代码 (7)测试翻译后的软件,调整UI以适应翻译后的文本 (8)测试本地化后的软件,确保格式和内容正确,4、软件本地化的基本步骤,10.2软件本地化(续),(1)翻译的注意事项翻译时,应该尽量使用简单的句子结构和语法,选择意义明确的词检查翻译的内容是不是断章取义、是否会导致词不达意在源文件中使用了缩写词检查在不同的国家标点符号、货币单位等是否显示正确。,5、软件本地化的翻译问题,10.2软件本地化(续),(2)本地化翻译人员的应具备的素质流利的源文字表达水平对目标语言
10、透彻的理解良好的写作能力熟悉相关领域的术语对本地化的流程有相当的了解会使用相关的工具对语言和文化差异的敏感性,10.2软件本地化(续),(3)对本地化翻译人员的技术要求计算机、数据库或网络相关的技术背景和基础具备图形图像方面的技能和知识有较好的自学能力,10.2软件本地化(续),6、软件本地化不等于翻译翻译的主要任务是把源语言转换到另一种目标语言。翻译是本地化的子集。当文字被翻译后,还要对产品进行许多相应的修改。包括: 技术层面的更改 文化层面的更改,1、技术层面的更改(1)调整软件元素尺寸大小 (2)重新创建图标、图形、图片 (3)根据特定语言的习惯调整默认设置 (4)调整热键 (5)其它不
11、适合的功能也要重新设置 (6)重新编译,2、文化层面的更改(1)包装 (2)图标 (3)宣传 (4)样品 (5)政治敏感的术语,10.2软件本地化(续),软件本地化的错误主要分为两大类: 由于源程序软件编码错误引起的; 由于软件本地化引起的。综合分析本地化软件的错误类别,可以归结为四种类型:翻译错误,功能错误,界面错误,双字节错误。,7、软件本地化的错误类型,10.2软件本地化(续),下面对本地化软件的错误的四种典型类型进行分类讨论,探讨错误的表现特征,产生的原因,测试要求,发现错误的方法。,7、软件本地化的错误类型,10.2软件本地化(续),翻译错误(1)产生原因: 1)翻译人员不熟悉翻译要
12、求。 2)翻译人员工作疏漏。 3)用户界面的翻译与标准词汇表不一致。,7、软件本地化的错误类型,10.2软件本地化(续),翻译错误(2)表现特征: 1)应该翻译而没有翻译的英文字符。 2)不应该翻译而翻译的中文字词。 3)错误翻译的字词。 4)只在本地化版本中存在该类型错误。 5)较多隐含在对话框各控件以及帮助文档中。,7、软件本地化的错误类型,10.2软件本地化(续),翻译错误 (3)测试要求: 1)明确需要翻译和不需要翻译的内容。 2)明确正确的翻译方式。 3)根据术语表,确认术语翻译的正确性与一致性。 (4)测试方法: 1)主要同时打开中英文版本,执行相同的操作。 2)结合标准界面词汇翻
13、译表,参照对比。,7、软件本地化的错误类型,10.2软件本地化(续),翻译错误(5)说明: 1)对于对话框,如果含有下拉列表框,要打开列表框查看全部项。 2)特别要注意选项中开关类翻译错误。,7、软件本地化的错误类型,10.2软件本地化(续),功能错误(1)产生原因: 1)软件编码错误。 2)错误本地化,如将程序中的变量进行了翻译。(2)表现特征: 1)不能实现设计要求的功能。 2)产生与设计要求不符合的结果。 3)英文和中文都存在同样的错误。 4)可能隐含在软件的任何位置或任何操作步骤中。,7、软件本地化的错误类型,10.2软件本地化(续),功能错误(3)测试要求: 1)保证输入数据正确,或
14、者打开了正确的测试用例。 2)明确正确的输出结果和中间数据数值及格式。,7、软件本地化的错误类型,10.2软件本地化(续),功能错误(4)测试方法: 1)对菜单项或工具栏按钮,通过全面测试各个选项,观察每一步是否正确执行,输出结果是否正确。 2)对一个命令中的多个并列选项,采用路径跟踪法,按分支顺序测试嵌套的全部子项。 3)对对话框,可逐个执行各按钮,各列表选项等观察执行结果。,7、软件本地化的错误类型,10.2软件本地化(续),功能错误(5)说明: 1)特别注意不同选项、不同按钮相互操作的影响。 2)注意快捷键是否遗漏,是否多余,是否不同,是否起作用。,7、软件本地化的错误类型,10.2软件
15、本地化(续),布局错误(1)产生原因: 1)软件本地化后,由于源语言和本地化语言的表达方式不同,本地化后的字符数与源语言不同,每个字符所占空间尺寸不同,使得在英文版本正确显示的控件字符,可能在本地化版本显示不正确。 2)本地化人员调整程序资源不当引起,例如,对话框及其控件高度或宽度的不正确调整。,7、软件本地化的错误类型,10.2软件本地化(续),布局错误(2)表现特征: 1)控件相互重叠或排列不均匀。 2)控件中字符显示不完整。 3)主要出现在本地化版本的对话框中。,7、软件本地化的错误类型,10.2软件本地化(续),布局错误(3)测试要求: 1)对话框中控件布局均匀,字符显示完整正确。 2
16、)对话框中控件数量相等,没有多余或丢失的控件 。 (4)测试方法: 1)执行将要打开对话框的菜单或工具栏按钮,观察打开对话框中的控件布局。 2)对比检查源语言软件和本地化软件对应的对话框中控件的数量,7、软件本地化的错误类型,10.2软件本地化(续),布局错误(5)说明: 1) )可能在执行不同的操作后,如选择了不同单选或复选按钮后,编辑框显示重叠等。 2)执行后带省略号的菜单或命令按钮,将会显示对话框。,7、软件本地化的错误类型,10.2软件本地化(续),双字节错误 (1)产生原因 1)源程序在设计时没有考虑双字节语言的支持。 2)软件本地化后,单字节字符向双字节字符转化过程中,由于单字节和
17、双字节之间的差别,可能使得某些本地化后的双字节字符的显示乱码。 3)软件本地化后,对程序中控制符号如换行键“n”的处理错误而引起乱码。,7、软件本地化的错误类型,10.2软件本地化(续),双字节错误(2)表现特征 1)控件或对话框中显示不可辩识的字符。 2)控件或对话框中显示无意义的明显错误的字符。 3)不支持双字节字符的输入,包括双字节的文件名和路径名。 4)仅出现在本地化后的版本中。,7、软件本地化的错误类型,10.2软件本地化(续),双字节错误(3)测试要求: 1)本地化后的软件字符显示正确完整,无乱码或明显错别字。 (4)测试方法: 1)执行菜单或按钮,检查对话框中的字符。 2)打开帮
18、助文档,检查所有需要翻译的字符。 (5)说明: 1)注意检查对话框下拉列表中需要拖动滚动条才能显示的内容。,7、软件本地化的错误类型,如果软件支持Unicode,即使同时显示不同的语言,也不会出现乱码。据此可分别对雅虎日历和Google Talk进行Unicode支持方面的测试。 在雅虎日历中,输入简体中文的活动名称,然后把这个用户的语言切换到繁体中文上,看其是否存在乱码。结果,活动名称的显示出现了乱码,这表明雅虎日历不支持Unicode和UTF-8/UTF-16,如图所示。,10.3软件本地化测试,软件本地化测试概述 软件本地化测试的主要内容 软件本地化测试模型 本地化测试模型的选择策略 软
19、件本地化测试策略,1、软件本地化测试概述,软件本地化测试是根据软件本地化各阶段的测试计划和规格说明,精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行本地化软件,以发现程序错误和缺陷的过程。,1、软件本地化测试概述 (续),1)本地化的软件与源程序软件的不同 (1)测试顺序不同 (2)测试内容和重点不同 (3)测试环境不同,1、软件本地化测试概述 (续),2)本地化测试的流程 (1)制定测试计划 (2)测试用例设计 (3)执行测试用例,记录发现的错误 (4)软件本地化测试报告,2、软件本地化测试的主要内容,安装/卸载性能测试 功能性测试 数据格式测试 界面测试 翻译
20、验证测试 兼容性测试 文档测试 文化、宗教、喜好等适用性测试,(1)安装/卸载测试,是否可以正确的安装/卸载在本地语言的操作系统上(包括是否支持本地语言的安装目录名); 安装/卸载前后安装文件、快捷图标、程序图标和注册表的变化是否与源语言程序一致;,(2)功能性测试,是否与源语言软件功能相同; 是否支持当地语言的输入和输出; 是否支持当地语言的文件名和目录名;,(3)数据格式测试,Time, Date and CalendarCurrencyNumberUnit of MeasureAddress, Post code, Telephone numberPaper for printSortK
21、eyboard Layout,Time, Date and Calendar,12/24 hour format (AM, PM)Time delimiter Most country use “:” Italian or Sweden use “.”Date format Long Format: USA contain Week info Short Format: short delimiter China(-),USA(/), German(.) USA Tuesday, July 26, 2005 7/21/2005 China 2005年7月26日 2005-7-26 Japan
22、2005年7月26日 2005/07/26 Order USA: Month-Day-Year China: Year-Month-Day German and French: Day-Month-YearCalendar USA: Gregorian calendar and First day is Sunday China: Gregorian calendar / Lunar Calendar and First day is Monday,Number,Kilobit delimiter Negative Expression USA -123,456,7810.00 China -
23、123,456,7810.00 German/French -123.456.789,00 Saudi Arabia 123,456,7810.00- Poland -123 456 789,00 Percent position 98 %、 98 pct、%98,Currency,Currency, Currency position and negative expression is a new Currency for some software USA (127.54) China ¥ ¥-127.54 Denmark Kr Kr-127,54 French -127,54 Hola
24、nd 127,54- England -127.54,Unit of Measure,Length: Inch/ Millimeter 1 inch=25.4 mmSquare: square feet/ square centimeter 1 sq.feet = 929 sq.cmCubage: cube inch/ cube centimeter 1 cube inch = 16.4 cube.cmWeight: pound/ kilogram 1 pound = 0.454 kilogramTemperature: Fahrenheit (F)/Centigrade (C) N Fahr
25、enheit =(N-32)*5/9 Centigrade,Address, Post code, Telephone number,Address: Sort order and State issue (USA)The best way for address is to divide them into several address fieldsPost Code:USA: 5 digitChina: 6 digitCanada: 3 char 3 digit (such as :M5R 3H5)Telephone:USA +1-123-456-7890 China +86-10-12
26、345678 France 01-23-45-67-89 England +44 (0)123 456 7890 Poland (12)345.67.89,Sort,USA:AlphabeticUppercase/ LowercaseChinese:PinYinStrokes,Keyboard Layout,USA and ChinaGermanJapanVietnam,(4)界面测试,Hard-Coded StringString Buffer OverflowEmbed ControlHide ControlImage and embed string,Hard-Coded String,
27、Hard-coded string is the un-extracted string in GUI,String Buffer Overflow,Usually German is longer about 35%-45% than English English: “Press Ctrl + Alt + Del to restart.“ German: “Drcken Sie Strg+Alt+Entf, um den Computer neu zu starten.“ Buffer improvement: Dynamic allocation Static allocate larg
28、e buffer,Embed Control,Control in String should be moved outEmbed control English:German:Improvement English:German:,Hide Control,Try to forbidden to use hide control,Image and embed string,Try to use distinct image to replace embed string,翻译不准确,控件没对齐(Misaligned),没有翻译,(5)翻译验证测试,检查翻译的句子是否复杂、难懂,能否拆分称简
29、单句型;检查翻译的内容是否脱离了上下文关系,意义表达不准确;检查翻译后的文字中是否意义含糊;检查缩写词;检查标点符号、货币单位等是否显示正确。,(6)兼容性测试,硬件软件第3方软件,(7)文档测试,文档的文字翻译是否准确、专业,是否存在没有翻译的段落; 文档的功能是否与源语言软件一致; 文档的布局是否合理、美观;,(8)文化、风俗的测试,ColorSymbolPicturePolitics and Religion,Color,USA: Wedding : WhiteFuneral: Black Japan:Wedding: BlackFuneral: White China:Wedding:
30、 Red,Symbol,USA: checkbox use China and Japan: checkbox use Smile:Sad:,Picture,USA: Mailbox:Email: Dragon: China: Lucky and propitious Other: Devil,Politics and Religion,PoliticsTaiwan: a part of China, not a countrySouth Korea: should be translated to 韩国, not 南朝鲜ReligionForbidden religious content,
31、3、软件本地化测试模型,本地化集成测试模型 本地化“一加一”测试模型 本地化分布测试模型,(1)本地化集成测试模型,具体做法:本地化测试团队的测试人员完成包含本地化功能测试、用户界面测试和语言质量的全部三项内容。优点:效率高、质量稳定。缺点:测试成本比较高。,(2)本地化“一加一”测试模型,具体做法:安排一组测试人员和一组语言人员一起执行功能测试、用户界面测试和语言质量的全部三项内容。优点:测试成本比较低。缺点:测试效率不高、测试覆盖率可能不高。,(3)本地化分布测试模型,具体做法:按照一定的时间顺序,将测试内容进行详细分工,安排不同技能的人员,分别执行本地化功能、用户界面和语言质量的测试。,
32、(3)本地化分布测试模型(续),优点提高测试效率 测试成本较低 测试覆盖性高 缺点语言测试的准备过程复杂 报告语言缺陷的过程复杂 测试的进度可能不易控制 某些语言缺陷不好准确判断,4、本地化测试模型的选择策略,(1)集成测试模型的适用场合 比较适用于被测试本地化语言是测试人员母语的情形,或者对测试效率和测试质量要求较高的本地化测试。,4、本地化测试模型的选择策略,(2)“一加一”测试模型的适用场合 可以在测试人员测试非母语本地化产品时采用,对于那些测试时间比较充裕、要求不太高的测试成本,能较容易找到本地化语言为母语的语言人员的情形。,4、本地化测试模型的选择策略,(3)分布测试模型的适用场合
33、可以在同时测试许多种本地化语言的场合。,5、软件本地化测试策略,以测试本地化缺陷为中心 并行本地化测试与源语言软件开发 采用软件缺陷数据库管理软件缺陷 必不可少的回归测试 有效确定软件缺陷类型,6、软件本地化测试的重点,软件本地化测试的重点是发现软件因本地化产生的错误。不要过多的耗费时间测试软件的功能。测试重点:语言表达质量、软件界面、本地化字符输入、输出和显示,以及由于本地化而使某些功能失效的功能缺陷。,本章小结,本章介绍了什么是软件本地化,以及本地化中的翻译问题。重点介绍了软件本地化测试内容、模型、选择模型的策略和测试策略,在测试中重点是发现软件因本地化产生的错误,介绍了缺陷的类型和表现特征,寻找本地化缺陷的方法。,作业,1、名词解释软件国际化、软件本地化 2、简述软件国际化和软件本地化的关系。 3、简述软件本地化的步骤。 4、简述软件本地化测试的策略。,