在没有指定浏览器参数文件的情况下,Selenium Server只会启动一个系统默认设置的浏览器执行测试,默认设置语言为当前浏览器版本语言。特定浏览器语言和参数字符编码的设定主要通过以下方法实现:首先,根据测试人员的选择,将需要测试的语言和字符集存储在配置文件中;然后,根据测试要求的浏览器语言和字符集设置,在Firefox的参数文件prefs.js中添加为用户语言首选项;最后,在启动Selenium Server时,添加“firefoxProfileTemplate”选项并指向已修改的Firefox的参数文件目录。
客户端操作系统(Redhat4.0)的语言和字符集,可以通过修改文件/etc/sysconfig/i18n或者通过设置LC_ALL 和LANG 2个参数实现。
上述方法也可以扩展到多个语言和字符集环境的设置的情况。首先,将所有需要测试的语言的字符集存储在配置文件中;然后,串行或者并行地在测试机上进行测试。其中,串行执行是指依次正确初始化测试环境,循环执行测试流程,而并行执行是通过Socket通信将信息传递到多台目标测试机,并行初始化测试环境,执行全部测试流程。
2.3 通过对XLIFF格式的翻译文件的查找,实现测试页面上显示的翻译
本项目中的翻译文件采取XLIFF文件格式。XLIFF是一种XML应用,每个文本片段保存在一个翻译单元中(<trans-unit>)。通过查找相应测试语言的XLIFF文件,实现对前述的第三类参数文件的正确替换,以支持对不同语言版本显示的翻译的测试。
2.4 利用正则表达式,处理包含特殊字符的翻译单元
在上述自动化的参数文件替换过程中,需要对大量的XML格式的翻译文本数据进行查找。但是,有一些特殊字符在写入到XML文件时,会被实体引用所替换。所以,目标界面上显示的字符串,可能出现与写入在XLIFF翻译文件中存储的翻译字符串不一致的现象。
针对上述这类翻译字符串与显示字符串不一致的情况,可以通过正则表达式解决。利用正则表达式的模式匹配表达法,对字符串进行比较、匹配,从而判断测试结果是否正确。例如:软件界面上存在一个按钮,英文版本的按钮显示的字符串为“About(A)”,而简体中文版本的按钮显示的字符串为“关于(A)”。然而,写入在 XLIFF文件时,英文对应的翻译字符串应为“About(&;A)”,简体中文对应的翻译字符串应为“关于(&;A)”。因此,在进行简体中文本地化测试时,首先需要利用正则表达式符号“*”替换“&;”,通过“About*”查找XLIFF文件;然后,将查找结果“关于(&;A)”处理为“关于*”,再进行界面翻译测试。
2.5 采用简单替换方式,自动生成指定语言字符集的测试数据
在执行国际化测试时,需要测试软件对处理不同语言和字符集的能力。这种能力,可以通过简单的预处理进行测试。即简单替换前述的第二类参数文件。具体步骤如下:(1)需要维护一个包含所有待测语言和字符集的字符库;(2)根据参数文件中参数的字节数,从字符库中抽取制定测试语言和字符集的字符进行替换。
为了实现自动生成指定语言字符集的测试数据,上述方法相对简单易行。但是伴随测试语言和字符集范围的扩展,字符库需要覆盖的语言和字符集也需要相应增加,这将带来巨大的维护工作量。另外,如果需要字符库覆盖较全面的东亚语言字符,也将带来一定的工作量。
上述扩展方案针对Web技术的大型国际化应用软件的测试,主要使用Selenium RC-java工具开发测试脚本。项目要求同时实现在Linux+Firefox3.0环境下,对软件的九种语言版本进行国际化测试。
在实际的测试工作中,运用了测试元素独立、动态选择语言字符集、根据标准化XLIFF格式转化三项测试软件,以及特殊字符翻译处理、测试数据生成两项实际技术,对Selenium RC-Java工具进行了必要的扩充和修改。实践验证了其对于国际化测试的支持,取得了良好的效果。