讀《實戰GUI產品的自動化測試》:第一步——了解自動化測試,簡單RFT的錄制回放實例


1、了解自動化測試,什么是自動化測試?(可以參數百度百科“自動化測試”)

2、了解自動化測試

  * 自動化測試如何改善產品的質量

  * 自動化測試無法完全替代手工測試

  * 自動化測試無法發現新的問題——適合用來回歸測試

  * 自動化測試覆蓋率並非越大越好——從產品測試的需求入手,定制自動化測試策略,可復用的,無改動的模塊可以使用自動化測試。

  * 自動化測試是需要成本的—— 因為自動化測試的投入也是很大的。這里面需要考慮到自動化與手工的投入與產出比。

3、如何進行自動化測試?

  自動化測試最主要的三個問題(針對GUI軟件C/S架構):

    第一個:如何獲取要操作的GUI元素。

    第二個:如何操作GUI元素。

    第三個: 如何設置驗證點與如何驗證。

  另外,B/S架構的自動化測試,利用HTML語言與DOM模型結合,可以實現GUI元素的操作。

4、安裝RFT后,動手做個小實例。了解RFT的工具原理。

  第一步: 安裝RFT工具。

  第二步: 認識RFT工具。找到“配置”——》“配置應用程序進行測試”,這個菜單進行配置,需要測試的軟件(這里使用自帶小DEMON)。

  第三步: 實踐RFT工具的錄制、回放功能。

  下面轉載一個實例過程:

Rational Functional Tester(簡稱 RFT)是 IBM 提供的強大的自動化功能和回歸測試工具,至於其具體如何強大本文就不贅述了,您可以參考文末參考資料里給出的 RFT 的產品專題。現身說法,Lotus Notes 的大量的自動化測試腳本都是建立在 RFT 之上,包括功能測試、性能測試和本地化測試。對於我們來說,RFT 是一個值得信賴的工具。RFT 的特性很多,以下僅列出我們所關注的一部分關鍵特性:

  • 支持多種應用程序,包括 Win32 Native、Eclipse、.Net, 瀏覽器和其他一些應用
  • 支持使用 Java 和 VB.NET 進行腳本開發
  • 支持操作的錄制和回放
  • 和 Eclipse 緊密集成,支持方便的開發和調試
  • 通過插件可以和 ClearCase 緊密集成
  • 易於擴展,可以靈活的適應被測程序的需求

下圖展示了 RFT 的使用界面,如果您曾經使用過 Eclipse,您將會對此感到非常親切。

圖 3. RFT 使用界面

圖 3. RFT 使用界面

在 RFT 的眾多特性中,錄制和回放是非常值得一提的功能,測試人員可以直接通過錄制屏幕操作來生成測試腳本,然后通過回放來執行測試。有經驗的測試人員也可以通過它來快速生成有用的代碼片段。

下面讓我們來看一看如何使用 RFT 錄制功能來生成上一章中的測試用例的腳本:

  1. 運行我們的 CD 訂購程序:C:\Program Files\IBM\SDP\FunctionalTester\FTSamples\ ClassicsJavaA.jar。實際上,這是 RFT 自帶的一個示例程序。(RFT 在安裝后會對系統 JVM 進行配置,所以我們不再需要對普通的 SWT 程序安裝額外插件,直接運行就可以了)
  2. 在一個空白的 RFT 測試腳本中,點擊 "Script->Insert Recording" 菜單,RFT 將彈出“Recording”對話框,啟動腳本錄制。
  3. 手工操作我們的 CD 訂購程序,選擇條目,點擊“Place order”按鈕,然后點擊 Cancel 關閉彈出的“Member Logon”對話框。
  4. 執行完畢后,在 Recording 對話框中點擊停止按鈕,錄制就會終止。RFT 會生成測試用例步驟所對應的代碼。如圖 4 所示。
圖 4. RFT 錄制生成的測試腳本

圖 4. RFT 錄制生成的測試腳本

您可以通過點擊“Script->Run”菜單來運行新生成的腳本,一切都很簡單。

如果您足夠細心,就能夠在圖 4 中發現更多的信息。RFT 在生成腳本的同時,會把從應用程序捕獲的 UI 信息保存在映射文件(object map)里面,比如 tree2 和 placeOrder。而在生成的腳本中將直接使用對象上的方法,這些方法在底層將會最終映射到具體的鼠標和鍵盤事件。

圖 5 展示了 RFT 本身的錄制流程如,對於每個腳本,都有獨立的映射文件。RFT 會從映射文件里面查找,如果找不到當前測試對象,會把測試對象的信息加入到映射文件里面。

圖 5. 錄制流程

圖 5. 錄制流程

如果您更細心的話,您會發現 RFT 的錄制完成了捕獲和操作的功能,而沒有生成驗證相關的代碼,因為這些需要您隨后自己補齊。如果您對如何更高效的做驗證感興趣的話,歡迎關注我們的后續文章。

本地生成的腳本如下:

 1 package baidu;
 2 import resources.baidu.testHelper;
 3 import com.rational.test.ft.*;
 4 import com.rational.test.ft.object.interfaces.*;
 5 import com.rational.test.ft.object.interfaces.SAP.*;
 6 import com.rational.test.ft.object.interfaces.WPF.*;
 7 import com.rational.test.ft.object.interfaces.dojo.*;
 8 import com.rational.test.ft.object.interfaces.siebel.*;
 9 import com.rational.test.ft.object.interfaces.flex.*;
10 import com.rational.test.ft.object.interfaces.generichtmlsubdomain.*;
11 import com.rational.test.ft.script.*;
12 import com.rational.test.ft.value.*;
13 import com.rational.test.ft.vp.*;
14 import com.ibm.rational.test.ft.object.interfaces.sapwebportal.*;
15 /**
16  * Description   : Functional Test Script
17  * @author lenovo
18  */
19 public class test extends testHelper
20 {
21     /**
22      * Script Name   : <b>test</b>
23      * Generated     : <b>2014-10-18 上午2:01:44</b>
24      * Description   : Functional Test Script
25      * Original Host : WinNT Version 6.1  Build 7601 (S)
26      * 
27      * @since  2014/10/18
28      * @author lenovo
29      */
30     public void testMain(Object[] args) 
31     {
32         startApp("ClassicsJavaA");
33         
34         // Frame: ClassicsCD
35         tree2().click(atPath("Composers->Haydn->Location(PLUS_MINUS)"));
36         tree2().click(atPath("Composers->Haydn->Location(PLUS_MINUS)"));
37         tree2().click(atPath("Composers->Haydn->Location(PLUS_MINUS)"));
38         tree2().click(atPath("Composers->Haydn->Symphonies Nos. 94 & 98"));
39         tree2().click(atPath("Composers->Haydn->Symphonies Nos. 99 & 101"));
40         tree2().click(atPath("Composers->Schubert->Location(PLUS_MINUS)"));
41         tree2().click(atPath("Composers->Schubert->Die schone Mullerin, Op. 25"));
42         placeOrder().click();
43         
44         // Frame: Member Logon
45         memberLogon().close();
46         
47         // Frame: ClassicsCD
48         classicsCD(ANY,MAY_EXIT).click(atPoint(611,5));
49     }
50 }

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM