使用WinRunner 進行測試的幾點建議
分解 TestCase 在大型程序測試中,往往有很多任務是可以分開來Record。同時,如果錄制的代碼過長的,進行調試是很麻煩的事情,此外如果今后某一部分的程序進行了修改的話,修改和重新錄制的工作也是非常痛苦的一件使用。因此我們可以將一個TestCase 進行分解
分解TestCase
在大型程序測試中,往往有很多任務是可以分開來Record。同時,如果錄制的代碼過長的,進行調試是很麻煩的事情,此外如果今后某一部分的程序進行了修改的話,修改和重新錄制的工作也是非常痛苦的一件使用。因此我們可以將一個TestCase 進行分解,分解TestCase 可以采用以下幾種方式
1、將任務分段,比如Log、Logout、公共窗口的打開、關閉
2、錯誤處理的分類,比如將某一輸入項目的各中錯誤輸入分開錄制
3、公共界面的操作函數化統一處理,這種方式主要可以象移動BOSS 的業務受理等不
同窗口使用同一子界面的情況,如DELPHI/C++ Builder 中的Frame。
將不同任務(TestCASE)的分解之后,我們可以使用call 函數及自定義函數機制來調
用不同的子Script、函數來完成一個的TestCase
通過隨機組合實現大規模路徑覆蓋 有時候我們需要將一組數據隨機組合來進行大量數據測試,如填寫某些表單。那么我們
有兩種辦法:一是使用外邊工具隨機生成大量數據,也可用使用先將各個數據按測試要求生
成一小組數據,然后使用rand 方法隨機抽取數據來測試
偽代碼如下
data a[];
date b[];
for (i=0;i<要測試的次數;i++){
ca=a[rand()]
cb=b[rand()]
dosomething;
}
使用這種代碼的好處是隨意調整測試力度,缺點是數據單一,不想外邊工具一樣生產的
數據的多樣化。如果想根據數據分段標準動態產生不同數據,應該使用其他編程工具來生產
而不應采用這種辦法。
動態修改chk 文件實行參數化的動態Check 有時候我們知道在
測試過程中的某些數據是動態生產的,比如某些按順序或隨機產生的
單號,而我們又往往需要根據這個單號進行一些判斷,比如數據庫中對應的數據是否完整。
還有,當我們需要根據輸入的某些條件來判斷輸出的條件是否正確,這個時候WINRUNNER
就無能為力了,因為它目前沒有提來實現參數化的Check。但是我們可用使用WINRUNNER 的函數及WINNRUNNER 的錄制功能,先錄制一個使用ULTRAEDIT(或類似工具)手工修改chk 文件的函數。然后將要修改的內容參數化,在主SCRIPT 執行Check 以前先調用該函數。
在Script 里面管理GUI 使用WINRUNNER 都知道GUI 文件的重要性,
MI 推薦的一種方式是專人來管理GUI文件,整個測試使用同一個/系列GUI 文件。但實際我覺得這很困難的,特別是程序比較的話,光是找出所有的窗口就已經是很痛苦的一件事情。我認為應該首先應該將GUI 與SCRIPT同時存儲在同一目錄下。
然后使用GUI_load 在SCRIPT 開始以前就裝載GUI,在SCRIPT 開始增加:
if (GUI_load(".\\login.gui")!=0)
{
pause ("Can't load login.gui");
texit;
}
使用Winner 做過復雜測試的可能會問,如果不同GUI 文件中的對象名稱相同的話,運
行時候就會出問題。因此我們應該在SCRIPT 完畢的時候加入
GUI_close(".\\login.gui");
注意恢復測試前的狀態 此外,如果我們要連續運行多個測試CASE、就必須考慮將被測試程序恢復測試前的狀
態,比如我們在測試SCRIPT A 中打開了窗口A,如果下一個TESTCASE 不需要用到窗口A,
那么在SCRIPT A 窗口A。這樣下一個TESTCASE 才能正常運行。
如果我們采用采用批處理及CALL 的方式來組織SCRIPT 的話,就應該堅持這樣一個原
則:“誰打開、誰關閉”,這樣才便于管理。
此外如果對數據庫的操作也要根據具體要求考慮恢復。這些操作可以考慮通過錄制通過
數據庫客戶端的操作來實現。
原文轉自:http://www.anti-gravitydesign.com