● 返回
在这个页面中列出了当前session中所有已经上载的原始文件,可以选择上载新的原始文件,也可以选择已有的原始文件进行新的翻译,还可以选择下载已有的翻译文件。
3.4.2 翻译单独的串
访问下面这个URL翻译串:
http://
● 在“search for”中输入要翻译的串,可以为任何COFAL支持的语言,对于每种语
21
言我们在后台会给它一个缺省的encoding。 ● 在“from lang”中指定串当前的语言
● 在“to lang”中指定要翻译成的语言,缺省为翻译到所有COFAL支持的语言。 ● 选择在查询范围内的component和release等,这些都不是必选项
● 如果想把翻译的结果保存在文件中,支持UTF8和native两种编码方式。
查询结果如下图所示:
4. 利用WinRunner做日期格式等本地化测试
日期等格式的本地化测试是全球化测试的一个重要部分,界面上的日期等格式由客户端或客户端浏览器的当前locale决定,也就是说在不同的locale下日期等都应该有正确的格式。现在的问题是如何在WinRunner中实现日期等格式的本地化测试。答案是正则表达式。
下面我们先从定义正则表达式说起。
4.1 定义正则表达式
Oracle提供的locale有142个,通常用在以Oracle数据库为中心的应用程序中,如Oracle Locale Builder和SQLPLUS等。
Java提供的locale有134个,通常使用JSP/UIX页面技术的Oracle web应用程序会用到,如Oracle AS。
下面就给出java提供的简体中文locale下的一些常用的格式和部分正则表达式。
22
Date Format [Date Format] Short 05-6-1 Medium 2005-6-1 Long 2005年6月1日 Full 2005年6月1日 星期三 统一的正则表达式: (\\d{2}|\\d{4})-\\d{1,2}-\\d{1,2}|\\d{4}年\\d{1,2}月\\d{1,2}日\\s*(星期[一二三四五六七])? 注意:也可以给每种格式分别定义一个正则表达式 [Date/Time Format] Short 05-6-1 上午2:03 Medium 2005-6-1 2:03:04 Long 2005年6月1日 上午02时03分04秒 Full 2005年6月1日 星期三 上午02时03分04秒 IST 统一的正则表达式: (\\d{2}|\\d{4})-\\d{1,2}-\\d{1,2} [上下]午 \\d{1,2}:\\d{1,2}(\\d{1,2})|\\d{4}年\\d{1,2}月\\d{1,2}日\\s*(星期[一二三四五六七]) [上下]午 \\d{1,2}时\\d{1,2}分\\d{1,2}妙 (IST)? [Time Format] Short 上午2:03 Medium 2:03:04 Long 上午02时03分04秒 Full 上午02时03分04秒 IST [Date Symbols] Months(From Jan.) 一月 , 二月 , 三月 , 四月 , 五月 , 六月 , 七月 , 八月 , 九月 , 十月 , 十一月 , 十二月 , Short Months(From Jan.) 一月 , 二月 , 三月 , 四月 , 五月 , 六月 , 七月 , 八月 , 九月 , 十月 , 十一月 , 十二月 , Weekdays(From Sun.) , 星期日 , 星期一 , 星期二 , 星期三 , 星期四 , 星期五 , 星期六 Short Weekdays(From Sun.) , 星期日 , 星期一 , 星期二 , 星期三 , 星期四 , 星期五 , 星期六 AM/PM(From AM) 上午 , 下午 Eras(BC, AD) 公元前 , 公元 Currency Currency Symbol:CNY Currency Name(ISO4217):CNY 23
Currency Code:CNY Currency Example ¥123,456,789.00 -¥123,456,789.00 -¥123,456,789.55 正则表达式如下: -?¥[1-9]{1,3}(,[0-9]{3})*(.[0-9]+)? Number Example 123,456,789 123,456,789.123 -123,456,789 正则表达式如下: -?[1-9]{1,3}(,[0-9]{3})*(.[0-9]+)? Integer Example 123,456,789 -123,456,789 Percentage Example \\\Decimal Separator 。 Grouping Separator , Zero Digit 0 Percent % Pattern Separator ; [Asia/Shanghai] Display Name: (UTC+08:00) 北京, 上海 Short Name CST Long Name(English) China Standard Time Long Name(Native) 中国标准时间 [Asia/Hong_Kong] Display Name: (UTC+08:00) 香港 Short Name HKT Long Name(English) Hong Kong Time Long Name(Native) 香港时间 有一点需要特别说明,我们下面给出的这些格式只涵盖了简体中文locale下的部分情况,具体要用到哪些格式需要定义哪些正则表达式,要由您要测的应用程序来定。
Number format Timezone 4.2 自定义re_match函数
WinRunner自带了一个叫做match的函数,用来判断一个串是否符合正则表达式。但是,WinRunner7.5中的match函数对过于复杂的正则表达式的支持不是很好,鉴于日期等的正则表达式的复杂度比较高,我们使用了一个由EMOS Framework提供的已编译过的函数
24
re_match()。
这个新的函数实现了一个类似于perl语言中正则表达式查询和匹配功能,弥补了原来match函数的不足。
public extern._int re_match(in._string str, in._string re, out._int m_pos, out._int m_len,
inout._string detail)
说明:
将串与正则表达式做匹配。输出detail中的子匹配结果可以通过另外两个函数re_get_details()和re_get_match()获得。 参数:
str – 要匹配的串 re – 正则表达式
m_pos – 匹配发生的开始位置 m_len – 匹配的长度 detail – 匹配的细节 返回值:
0 = 不匹配, 1 =匹配,m_pos和m_len分别表示匹配的开始位置和匹配的长度
下面是一段使用该函数的代码:
input_string=\2005年6月1日\
pattern = \年\\\\d{1,2}月\\\\d{1,2}日\\\\s*(星期[一二三四五六七])?\
if (re_match(input_string, pattern, m_pos, m_len, detail)){ = tl_step(\sensitive date format check\0 , \format is OK\
treturn(\}else {
tl_step(\incorrect\
treturn(\}
注意:这只是一个简单的例子。实际应用中,input_string和pattern都可以参数化到文件,在不同的locale下读取不同的文件动态获得,以保证脚本的通用性。
关于EMOS Framework,它以区别与其他Framework的独特方式实现了一个WinRunner自动化脚本开发的简单但却强大的框架,EMOS是专门为WinRunner设计的,整个EMOS几乎都是用WinRunner自己的TSL语言实现的。关于EMOS Framework的详细介绍请参考http://emos-framework.sourceforge.net/。
小节
25
至此,您应该对用WinRunner实现软件的全球化测试有了一定的了解。我想强调的是:本文的重点不是想象您推荐我们开发的COFAL,而是提供一种思路。这种思路的意义不仅在于它部分地实现了自动化全球化测试的目标,更在于它为测试人员打开了一扇门,工具是死的,关键在于使用工具的人,如果工具做不到的,我们可以想办法让它做到。也许在寻找过程中您会收获到对软件更全局化的理解,收获开发人员对我们的尊敬和咨询,最重要的是收获您自己对这份工作的肯定和信心。
参考文献
● Sun 关于 Internationlization 在 JDK 里面的说明
http://java.sun.com/j2se/1.3/docs/guide/intl/intlTOC.doc.html ● SUN的国际化教程
http://java.sun.com/docs/books/tutorial/i18n/index.html ● WinRunner的用户手册
作者简介
真名王宝蕾,笔名月白。曾从事过软件开发、配置管理和软件测试工作,现专注于软件测试,重点研究测试工具的使用和辅助测试的软件的开发。
26