天天看點

用QTP做自動化測試過程剖析(轉)

         如何用工具對自己的業務實作自動化測試,是一個很多人都關心的問題。在我看來,實作自動化測試有兩種方式:一、對于特定的系統錄制或者編寫腳本,實作特定系統的自動化測試。二、自己編寫測試工具,對于同一類的軟體進行測試。這種軟體的基本功能是,抓取被測對象,根據抓取的對象生成測試腳本。這個适合于需要測試的多個項目具有大緻相同的特征,比如說,要測試的項目都是管理資訊系統,項目中大部分功能都類似。都是新增、修改、删除。功能相似的情況下,要進行測試的範圍也大緻相同。比如對于新增,都要測試超長啊,無效的資料。這種情況下,編寫一個通用的工具,制定公共的測試點,然後根據被測對象生成測試腳本是比較可取的方法。

    下面我以  通過qtp工具實作對www.alipay.com中交易管理的自動化測試的過程為例子,說明一下我是如何做的及碰到的哪些問題。

    首先說下被測系統的背景知識。www.alipay.com是個支付平台,買家和賣家在這裡完成完整的交易支付過程。

下面我從幾個方面來說一下實施自動化測試的一個大體的過程,當然這隻是最基礎的一部分,後面要做的工作還很多。

首先,對所測的業務系統進行分析,抽取公共操作,定義接口參數。目前我簡單分析了幾個部分:

建立交易;買家付款;賣家發貨;買家确認收貨;買家發起退款_未收貨;賣家同意退款;買家發起退款_已收貨;賣家拒絕退款_買家已收貨;買家修改退款協定_已收貨;賣家同意退款_買家已收貨;買家發貨;賣家确認收貨退款;

     其次,确定實作方式,也就是技術架構和細節。包括:

     所有這些接口的調用方式;變量及函數的存放位置[位置有外部的vbx檔案和qtp自己的檔案]。

     在qtp中,不支援調用腳本,隻能調用腳本中的某個action。是以最好把這些基礎性的動作放在一個腳本檔案中。

     在qtp中,調用action傳參數可以通過兩種方法實作:1、利用action本身的參數。在acition的屬性中,可以定義輸入輸出參數。2、參數化輸入資料。這兩種方法都很容易的。

     在别的腳本中調用其他腳本的action時,還需要兩個腳本共享對象庫,被調用的action還需要設定為reusable。

     最後,所有的技術細節都準備好後,就可以開始錄制腳本了。

     錄制過程中,千萬要記得把一些元件或者頁面重命名為有意義的,這樣在以後維護的時候可以更清楚一些。否則以後你回對着n個相同的頁面名稱加上“_n"這樣的字尾的對象不知所措。

由于第一次接觸qtp,工作過程中碰到了一些問題,把重要的列舉如下:

1、如何在一個腳本中調用另外的腳本?解決辦法:在qtp中腳本無法重複調用,隻能調用腳本中的action。如果一個腳本中的某個action需要被外部調用,需要設定:a、腳本的屬性為reusable。b、設定腳本的object repository type 為 shared,這樣,此腳本的對象可以被别的腳本使用。 

2、登陸時使用者名和密碼的參數化問題:由于系統有兩種使用者,經常需要用不同的使用者登陸,如果是把使用者名和密碼做成參數化,需要手工頻繁修改參數。最後考慮把登陸部分放到外部檔案中,以函數的形式調用。 

3、如何隻運作指定的action?我把所有的交易動作都放在了一個腳本裡,每個動作是一個action。這樣需要組合不同的action完成不同的業務,需要運作指定的action。現在還沒有找到方法。暫時采用建立一個運作腳本,調用基礎腳本裡的各種操作完成業務。 

4、一個action的輸入參數依賴于另一個action的輸出。這個在參數的傳遞上用什麼來實作呢?用腳本裡的全局參數來傳遞。 

5、把登陸函數寫到外部vbx腳本後,發現驗證點失敗,但是用肉眼觀察是驗證點是可以成功的。說明vbx不支援驗證點嗎?此問題尚未解決。 

6、周五用自動化腳本進行ctu測試,發現用腳本順序執行建立交易、買家付款、賣家發貨交易後,沒有記錄到第一個動作和第三個動作的mac位址,交換買家賣家身份重新執行還是這個情況。這個初步估計是腳本的問題,目前尚未解決。

繼續閱讀