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 的自動化測試的優(yōu)勢
基于 RFT 和 Selenium 結合使用,并用于 GVT 的自動化測試的優(yōu)勢很多。首先,Selenium 這款軟件本身提供了足夠多的對鼠標,鍵盤等輸出設備的應用方法,可使開發(fā)人員較為便捷的調用,例如有鼠標左鍵的點擊、雙擊,鼠標的拖拽,鼠標右鍵,網頁的等待響應,鍵盤上鍵位的控制等方法。這樣方便了開發(fā)人員的使用,可以使自動化開發(fā)人員方便地利用 Selenium 提供的各種方法編寫腳本。其次,Selenium IDE 提供了腳本的錄制與回放的功能,可幫助自動化的開發(fā)人員去實現簡單的測試用例,并且 Selenium IDE 可以幫助開發(fā)人員驗證 Xpath 語法書寫是否正確,也可以幫助開發(fā)人員進行的簡單的腳本調試的工作等。第三,Selenium 對網頁進行操作時,是得到網頁的原始數據,這樣可以更為準確地,客觀地進行自動化腳本的開發(fā)及驗證。第四,Selenium 結合 RFT 使用,對于執(zhí)行腳本有較快的速度,幾乎和真實用戶操作的速度相當,相比于一些其他的 web 自動化測試框架節(jié)省了運行時間,提高了運行效率。第四,Selenium 和 RFT 的配置過程非常簡單,免去了開發(fā)人員由于配置環(huán)境的問題而浪費大量的時間和精力。第五,通過編寫模仿用戶操作的 Selenium 測試腳本,可以從終端用戶的角度來測試應用程序。通過在不同瀏覽器中運行測試,更容易發(fā)現瀏覽器的不兼容性。后,Selenium 支持多瀏覽器操作,這是其他測試軟件所不具備的,它包括 IE,Firefox,Safari 等瀏覽器,具有良好的可用性,使自動化開發(fā)人員更能體會到自動化開發(fā)的樂趣。
回頁首應用實例簡介
下面以我們目前開發(fā)的一個實際項目(LoutsLive Symphony)作為實例具體介紹 Selenium 和 RFT 的結合使用。首先我們定了一些 Selenium 已經給出的方法,方便在編寫腳本時調用。經過使用,這些方法均有較好的可移植性及魯棒性,開發(fā)人員可以根據自己的需要對代碼進行選擇及修改。清單 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));
}