工作原理 2: 在腳本模式下,RFT 通過其核心方法 .find 定位所有 UI 為對象,同樣通過 Mapping Proxy objects 建立起定義對象到界面 UI 之間的對應(yīng)關(guān)系,從而控制對象執(zhí)行相應(yīng)的操作。對于任何一個對象而言,他都屬于一個樹形結(jié)構(gòu)的一部,find 方法,可以從某一個節(jié)點開始,定位其所有子類,或者只在子結(jié)點搜索。與錄制方式中的靜態(tài)樹相比,這種方式其實是構(gòu)建了一個虛擬的樹,find 的方法只是在其中進行搜索而已,他不能對本身的結(jié)構(gòu)產(chǎn)生影響,也不會添加某個結(jié)點,這點是很重要的。
對于 GVT 的自動化測試領(lǐng)域,需要特殊說明的是,我們的腳本由于是用來做 GVT 測試,現(xiàn)在很多產(chǎn)品都是 Agile 模式,所以翻譯很早可能會進來,某些測試點需要不同的在不同的 locale 下才能測試,我們不拒絕在找對象屬性的時候選擇一些與翻譯無關(guān)的 locale,但是在沒有這種屬性的時候,我們也會用 PII 中的翻譯來做。
回頁首RFT 和 Selenium 的集成開發(fā)環(huán)境
前文已介紹,由于 Selenium RC 需要 Java 作為它的開發(fā)環(huán)境。而 RFT 正好為 Selenium 提供一個較好的 Java 的開發(fā)平臺。只需將 selenium-server 的 jar 包及 selenium-language-client-driver 的 jar 包導(dǎo)入 RFT 中即可對 Selenium 進行應(yīng)用。Selenium 支持多種編程語言,它也提供了 .net,java,perl,php,python,ruby 等編程語言的 jar 包,使開發(fā)人員可以根據(jù)自己的需要選擇相應(yīng)的 jar 包。圖 4 給出了 Selenium RC 的文件夾結(jié)構(gòu)。
圖 4. Selenium RC 的文件夾結(jié)構(gòu)
例如我們以 java 編程語言為例,圖 5 給出了將 selenium-server 及 selenium-java-client-driver 的 jar 包導(dǎo)入 RFT 中的示意圖。從圖中可以看到 selenium-server 和 selenium-java-client-driver 這兩個 jar 包在 RFT 中的 libraries 中得以顯示。
圖 5. selenium-server 及 selenium-java-client-driver 的 jar 包導(dǎo)入 RFT 中的示意圖
將這兩個 jar 包導(dǎo)入后,自動化開發(fā)人員可以順利地實現(xiàn) RFT 與 Selenium 結(jié)合使用,進行編寫各種自動化腳本了。
下面本文簡要地介紹 Selenium Server 的啟動方法。啟動 Selenium-Server,可以在命令行中使用 java -jar 命令直接運行可執(zhí)行 jar 包(對于中文 Windows 操作系統(tǒng)且使用 IBM JDK,還需要加參數(shù) -Dibm.stream.nio=true)。
它的命令格式:java – jar selenium-server-standalone-X.X.jar。圖 6 給出了 Selenium server 啟動成功后的信息。
圖 6. Selenium server 啟動成功后的信息
RFT 和 Selenium 的對于 GVT 驗證點的測試
RFT 和 Selenium 的結(jié)合使用可以是自動化開發(fā)人員方便地調(diào)用 GVT 的驗證方法,到目前為止我們已經(jīng)開發(fā)了很多 GVT 的自動化驗證方法。例如對于語言字符串的輸入及驗證,時間日期格式的驗證,路徑的驗證,及在不同語言環(huán)境下排序的驗證等等。下面將具體介紹一下各個方法的實現(xiàn)機制及使用。
在自動化測試中涉及的 GVT 驗證,我們是以 GVT Guide 為導(dǎo)向,ICU 為核心庫,來實現(xiàn)一系列 GVT 驗證方法的。
Date Time
針對我們在 GVT 中的時間日期格式,我們把日期時間格式的產(chǎn)生,格式化以及格式驗證都歸于 Date Time 一類,主要的實現(xiàn)方法包括:
( 日期時間格式都對應(yīng) 4 種 style,分別是 FULL, SHORT, MEDIUM, LONG)
public static String getDateByLocal(Date date,int style, ULocale ulocale)
把一個英文的日期格式轉(zhuǎn)換為對應(yīng) locale 下的日期格式 , 這里主要是用來做可接受數(shù)據(jù)的測試。
public static boolean isValidDate(String date,int style, ULocale ulocale)
判斷一個日期串是否符合對應(yīng) locale 下某種 style 的格式,這里主要是用來做輸出標準的測試。時間與日期的方法類似,不列舉說明了。
Data Sort
對于字符串的排序,測試數(shù)據(jù)顯得相當重要,如果測試數(shù)據(jù)選得不夠準確以及特別,那么即使本身存在問題的地方,也有可能發(fā)現(xiàn)不出來。我們的主要的實現(xiàn)方法包括:
public static String[] createStrings(int n,ULocale ulocale)
產(chǎn)生在某個 locale 下長度為 n 的測試數(shù)據(jù)數(shù)組。
public static String[] sortedStrings(ULocale ulocale, String [] UnSortedString,int order)
order 表示排序規(guī)則是降序還是升序,整個方法為在某個 locale 下,對未排序的一組數(shù)組進行降序或者升序排列,返回值為排序好的數(shù)組。
Number
GVT 中對數(shù)字的處理主要有千分位格式化和貨幣格式化,我們的主要的實現(xiàn)方法包括:
public static String formatNumber(String num,ULocale locale)
public static String formatCurrency(String num,ULocale locale)
把一個數(shù)字字符串格式化成對應(yīng) locale 下的千分位和貨幣格式,用來做可接受數(shù)據(jù)的測試。
public static boolean verifyNumber(String num,ULocale locale)
public static boolean verifyCurrency(String num,ULocale locale)
驗證一個數(shù)字字符串是否符合當前 locale 下的千分位和貨幣格式,這樣編寫的目的是用來做輸出標準的測試。
OS File
在 GVT 中,關(guān)于文件系統(tǒng)的測試主要是對于某些系統(tǒng)特殊的分隔符的測試以及文件路徑和文件名中包含某些高風險字符的測試,由于系統(tǒng)特殊分隔符屬于操作系統(tǒng)級別,且我們在不同系統(tǒng)編譯時能獲取到當前的文件分隔符,所以我們這里主要針對后面兩種情況的進行討論。主要的實現(xiàn)方法有: