public String createSpecialCharFile(String resFileName, String targetDirName)
在目标文件夹下产生一个包含高风险字符的文件,然后把源文件拷贝到这个文件夹下,并对其重命名。
Text Length Limitation
文本长度限制在 GVT 测试也是一个重要的点,某些泰文字符由 3 个 Unicode 码来表示,在 java 中的长度为 3,然而实际显示占位应该是 1。我们以这些字符为测试数据来进行测试,主要的实现方法有:
public static String getThaiStrsN(int n)
产生一个显示长度为 n 的测试数据。
public int getThaiLength(String thaiStr)
对一个泰文串进行计算,计算结果为显示长度。
Concatenation
对于串联问题,是 GVT 验证中一个较为重要的问题。我们对其进行两个方面校验,第一方面在 pseudo 阶段,我们会根据 pseudo 本身的闭包进行判断。另一方面,我们会根据页面实际显示与 PII 串的对比进行判断。由于 PII 串的处理比较复杂,我们这里只给出 pseudo 阶段验证的方法。
public static boolean getConcatenationV(String PseudoStr,String begin,String end)
Others
输入输出一直是 GVT 测试一个大的难点,在自动化测试中也不例外。我们不可能穷举完所有的测试数据,我们只能够多做些测试来尽可能的减少问题的出现,我们根据 GVT guide 的要求对测试数据做了分类,总共将其分成了 22 类,一般情况下,我们会随机选取每一类中的一个字符来作为测试数据,同时也可自定义在某几类中来产生测试数据。此方法也是我们在众多方法的讨论中得到的一个折中的方案,在实际自动化测试应用中取得了很好的效果。
回页首RFT 和 Selenium 用于 GVT 的自动化测试的优势
基于 RFT 和 Selenium 结合使用,并用于 GVT 的自动化测试的优势很多。首先,Selenium 这款软件本身提供了足够多的对鼠标,键盘等输出设备的应用方法,可使开发人员较为便捷的调用,例如有鼠标左键的点击、双击,鼠标的拖拽,鼠标右键,网页的等待响应,键盘上键位的控制等方法。这样方便了开发人员的使用,可以使自动化开发人员方便地利用 Selenium 提供的各种方法编写脚本。其次,Selenium IDE 提供了脚本的录制与回放的功能,可帮助自动化的开发人员去实现简单的测试用例,并且 Selenium IDE 可以帮助开发人员验证 Xpath 语法书写是否正确,也可以帮助开发人员进行的简单的脚本调试的工作等。第三,Selenium 对网页进行操作时,是得到网页的原始数据,这样可以更为准确地,客观地进行自动化脚本的开发及验证。第四,Selenium 结合 RFT 使用,对于执行脚本有较快的速度,几乎和真实用户操作的速度相当,相比于一些其他的 web 自动化测试框架节省了运行时间,提高了运行效率。第四,Selenium 和 RFT 的配置过程非常简单,免去了开发人员由于配置环境的问题而浪费大量的时间和精力。第五,通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。后,Selenium 支持多浏览器操作,这是其他测试软件所不具备的,它包括 IE,Firefox,Safari 等浏览器,具有良好的可用性,使自动化开发人员更能体会到自动化开发的乐趣。
回页首应用实例简介
下面以我们目前开发的一个实际项目(LoutsLive Symphony)作为实例具体介绍 Selenium 和 RFT 的结合使用。首先我们定了一些 Selenium 已经给出的方法,方便在编写脚本时调用。经过使用,这些方法均有较好的可移植性及鲁棒性,开发人员可以根据自己的需要对代码进行选择及修改。清单 2 只是给出了一部分 Selenium 定义的方法。
清单2. Selenium定义的方法
//得到当前页面的title
public static String getPageTitle(){
return selenium.getTitle();
}
//在制定位置进行输入
public static void type(String locator, String input){
selenium.type(locator, input);
}
//鼠标左键单击
public static void click(String locator){
selenium.click(locator);
}
//鼠标左键在制定位置上单击
public static void clickAT(String locator, String coordString){
selenium.clickAt(locator, coordString);
}
//把光标焦点放在某个控件上
public static void focus(String locator){
selenium.focus(locator);
}
//按下键盘上的Shift键
public static void shiftKeyDown(){
selenium.shiftKeyDown();
}
//抬起键盘上的Shift键
public static void shiftKeyDUp(){
selenium.shiftKeyUp();
}
//按下键盘上的Alt键
public static void altKeyDown(){
selenium.altKeyDown();
}
//抬起键盘上的Alt键
public static void altKeyUp(){
selenium.altKeyUp();
}
//等待页面的时间响应
public static void waitForPageToLoad(int time){
selenium.waitForPageToLoad(String.valueOf(time*1000));
}