datapool ,假如字段name,password并自動生成數據,然后把 測試 用例 中各種數據輸入dp中 第二步:錄制 功能測試 腳本,腳本如下: Sub Main Dim R" name="description" />
第一步:創建名字為dp的javascript:;" onClick="javascript:tagshow(event, 'datapool');" target="_self">datapool,假如字段name,password并自動生成數據,然后把測試用例中各種數據輸入dp中
Sub Main
Dim Result As Integer
'Initially Recorded: 2004-4-24 10:59:24
'Script Name: Five
StartApplication "xxx"
Window SetContext, "Caption=登陸", ""
InputKeys "sa"
EditBox Click, "ObjectIndex=1", "Coords=34,9"
InputKeys "sa"
PushButton Click, "Text=登陸"
Window SetContext, "Caption=登陸;Class=#32770", ""
PushButton Click, "Text=確定"
End Sub
第三步:循環讀出datapool數據,進行自動化測試,腳本如下
'$Include "sqautil.sbh"
Sub Main
Dim Result As Integer
Dim dp_id as Long
Dim dp_Result as Long
Dim strName as String
Dim strPassWord as String
'Initially Recorded: 2004-4-24 10:30:51
'Script Name: Four
StartApplication "xxx"
Window SetContext, "Caption=登陸", ""
dp_id = SQADatapoolOpen ("dp", FALSE, SQA_DP_SEQUENTIAL, FALSE)
dp_Result = SQADatapoolFetch (dp_id)
while dp_Result <> sqaDpEOF
dp_Result = SQADatapoolValue (dp_id, "name", strName)
dp_Result = SQADatapoolValue (dp_id, "password", strPassWord)
dp_Result = SQADatapoolFetch (dp_id)
InputKeys strName
EditBox Click, "ObjectIndex=1", "Coords=34,9"
InputKeys strPassWord
PushButton Click, "Text=登陸"
Window SetContext, "Caption=登陸;Class=#32770", ""
PushButton Click, "Text=確定"
wend
dp_Result = SQADatapoolClose (dp_id)
End Sub
第四步: 加入執行成功和失敗的result信息并寫入Result report中,和必要的除錯處理。對腳本進行優化。加入BASELINE設置(對于測試基線有兩種思路,一種是文件處理,采用文件類型為文本文件或者EXCEL或者WORD,讀取DATAPOOL測試數據和文件內容對比,檢測測試數據是否在文件中存在,當然這里的測試基線考慮的不夠周全,你可以定制規則,逐步完善,一種是直接從數據庫中讀取數據進行對比,用數據庫作為baseline來避免以后增加測試用例后改動baseline文件,當然這么做跟測試理論不合,應該把預期輸出保存到特定文件中作為baseline,這個留給你自己動手來改進)。
腳本如下:
'$Include "sqautil.sbh"
Sub Main
Dim Result As Integer
Dim dp_id as Long
Dim dp_Result as Long
Dim strMessage as String
Dim vSText as string
Dim cnn As object
Dim Rst As object
Dim strLink As String
Dim strSql As String
Dim strName as String
Dim strPassWord as String
'Initially Recorded: 2004-4-24 10:30:51
'Script Name: Four
strLink = "連接字符串"
Set cnn = CreateObject("ADODB.Connection")
Set Rst = CreateObject("ADODB.Recordset")
cnn.Open strLink
Rst.CursorLocation = 0
Rst.LockType = 1
Rst.CursorType = 2
On Error Goto Last
StartApplication "xxx"
Window SetContext, "Caption=登陸", ""
dp_id = SQADatapoolOpen ("dp", FALSE, SQA_DP_SEQUENTIAL, FALSE)
dp_Result = SQADatapoolFetch (dp_id)
if (dp_Result = 0) then
while dp_Result <> sqaDpEOF
dp_Result = SQADatapoolValue (dp_id, "name", strName)
dp_Result = SQADatapoolValue (dp_id, "password", strPassWord)
dp_Result = SQADatapoolFetch (dp_id)
InputKeys strName
EditBox Click, "ObjectIndex=1", "Coords=34,9"
InputKeys strPassWord
PushButton Click, "Text=登陸"
strMessage = "用戶名:" + strName + "; 密碼:" + strPassWord
strSql = "select * from login where name = "" " + strName + " "" and password = """ + strPassWord + """"
Rst.open strSql, cnn
Window SetContext, "Caption=登陸;Class=#32770", ""
‘這個函數是作為插入驗證點,驗證點為窗體提示信息,沒有用window image來作為驗證點,是因為無法把該腳本進行模塊化,存入shl文件中,將來多平臺使用。
SQAGetProperty "Label", "Text", vSText
‘如果rst.RecordCount返回值為1,說明此用戶在數據庫中存在
‘測試用例分為成功,失敗的測試用例,失敗的測試用例中即使數據
’錯誤,但有預期輸出就是成功的用例,所以寫入result report中的信
‘息分為三種,成功,失敗,預期失敗,對于程序中有不是預期的窗
‘體,用程序自動關閉掉,繼續執行,這里安全的做法做標志然后關
‘閉整個軟件,重新啟動軟件,測試腳本從失敗處繼續執行
if Rst.RecordCount= 1 then
if (vSText="登陸成功") then
PushButton Click, "Text=確定"
SQALogMessage sqaPass, "測試數據為" + strMessage + "的測試用例執行成功", "項目名稱"
else
'出現異常窗體,該用例測試失敗
SQALogMessage sqaFail, "測試數據為" + strMessage + "的測試用例執行失敗", "項目名稱"
SQAGetProperty "Window", "Text", vSText
SQALogMessage sqaFail, "出現錯誤窗體:"+ vSText, "項目名稱"
Window CloseWin, "Caption=" + vSText, ""
end if
else
if (vSText="登陸失敗") then
'數據錯誤,用例執行失敗,軟件功能正常
PushButton Click, "Text=確定"
SQALogMessage sqaFail, "測試數據為" + strMessage + "的測試用例執行失敗但軟件功能正常", "項目名稱"
else
'出現異常窗體,該用例測試失敗
SQALogMessage sqaFail, "測試數據為" + strMessage + "的測試用例執行失敗", "項目名稱"
SQAGetProperty "Window", "Text", vSText
SQALogMessage sqaFail, "出現錯誤窗體:"+ vSText, "項目名稱"
Window CloseWin, "Caption=" + vSText, ""
end if
end if
wend
dp_Result = SQADatapoolClose (dp_id)
else
SQALogMessage sqaFail, "數據池打開失敗", "項目名稱"
end if
Last:
SQALogMessage sqaFail, "測試腳本發生異常,測試腳本執行失敗", "項目名稱"
End Sub
總結:
上邊腳本是對登陸功能測試自動化初步優化后的代碼,后邊還要做的是腳本模塊化,函數話,功能分切。腳本過大不容易維護,把其中連接數據庫,處理datapool功能寫成函數提供其他工程使用。其實也可以把測試數據存入文本文件,word,excel等文件中,然后讀出處理模擬datapool功能,但開發腳本工程量大。datapool提供自動生成數據功能和能夠和工程結合是它的優點,但很困難多個工程共享datapool。
原文轉自:http://www.anti-gravitydesign.com