在開發提供了添加日誌版本的用戶端後,開始嘗試重現錯誤。 手工執行登入20餘次後,再次遇到登入失敗,但開發說輸出的日誌不夠詳細,重新提交了一個編譯版本。實在是不想再重複做登入操作,於是想到寫一個自動化的指令碼來實現手工過程:
1)輸入使用者名稱,密碼,登入用戶端
2)退出用戶端
3)刪除安裝後的使用者應用目錄(每次使用者登入後,都會產生一個使用者的應用目錄,刪除是為了盡量接近全新安裝用戶端後再登入的情況)
首先想到的是QTP,但由於我的測試機之前就安裝QTP 不成功,重裝系統當然是來不及了。於是想到使用AutoIT來完成上面的需求,代碼很簡單,如下:
Run("d:\安裝目錄\xxx.exe")
; 沉睡sleep(毫秒),這是為了等使用者登入的對話方塊出現
Sleep(2000)
; 等待用戶端登入的對話方塊
WinWait("登入框視窗名")
; 在"使用者"框中輸入使用者id,方法:ControlSend ( "視窗標題", "視窗文本", 控制項ID, "字串" [, 標誌] )
ControlSend("登入框視窗名", "", "Edit6", "username")
; 在"密碼"框中輸入密碼
ControlSend("登入框視窗名", "", "Edit7", "passwd")
; 點擊"登入"按鈕,方法:ControlClick ( "視窗標題", "視窗文本", 控制項ID [, 按鍵 [, 點擊次數 [, X座標 [, ;Y座標 ]]]] )
ControlClick("登入框視窗名", "", "Button6")
;等待5秒
Sleep(5000)
;等待登入成功後的用戶端視窗出現
WinWait("登入成功後的用戶端視窗名")
Sleep(5000)
WinClose("登入成功後的用戶端視窗名")
;刪除登入後產生的使用者應用模具路
DirRemove("C:\使用者應用目錄", 1)
有了這個指令碼,我們可以通過指定登入的次數來重現或驗證缺陷是否修複。最後對開發第11次修改後的版本,重複運行登入50次,沒有出現登入失敗,表明該缺陷得到修複。如果採用手工測試,11個版本測試下來手估計都要斷了,呵呵。
AutoIT提供了一個視窗資訊工具來識別視窗或控制項,用法很簡單,可以參見autoit內建的協助手冊。