本人自動化測試接觸時間不久,如有誤導,概不負責。
既然有了selenium這個開源的自動化的工具,爲什麼還要我們自己再去寫一個框架?
Selenium是自動化的工具,當然是可以用在測試領域,但他不是爲測試量身打造的。當然我們在編寫簡單的腳本的時候也不需要什麼框架,隨着時間的推移,或者腳本的變多,我們發現有很多重複的代碼,這時候我們就可以把這些重複的代碼提取出來,就形成所謂的框架。
首先一個普通的測試用例,比如以一個Excel爲例(如下圖),每一行代表一個測試步驟,每個步驟又包含(步驟名,描述,期望結果) 3個部分。
TestNG + selenium 我想網上也有很多人用的這兩個來搭配。
我們自定義一個TestCaseClass(測試用例類)來定義一個Test Case(測試用例)。讓後讓Class繼續 Selenium中的SeleneseTestBase,SeleneseTestCase,或者SeleneseTestNgHelper.用TestCaseClass的一個Method(方法)對應一個Test Step. Method Name對應Step Name,
方法中Operation(selenium.*一些actions)對應Description,方法中的Assertions(如AssertEqual)來對應 Expected Result.
再加上啓動selenium和關閉 selenium的代碼,這樣一個TestCaseClass就可以運行起來了。
這時候如果我們要寫10本case,問題就來了。
1) 每次運行TestCase都需要實例化selenium,都要start,和close。這寫都重複能不能提取出來?
2) 能不能設計自己的 Actions(操作),能不能設計自己的 Assertions(我叫做檢查點)
3) 能不能把selenium運行的一些環境信息(如OS,Browser,server,port)保存到配置文件中?
4) 能不能吧測試對象分離出來保存(比如保存到xml文件)?
5) 能不能吧測試數據分離出來保存(比如保存到xml或excel文件中)?,能不能實現數據迭代,而不只是重複的copy代碼來實行不同的數據測試。
6) 能不能一次執行10本Case?當然也可以,TestNg有自己的配置文件,你可以定義N個Class。但我有個定勢思維,總不能Class文件和測試用例關聯起來。
7) 異常處理,如果一個Test Step失敗了,會不會執行下面的步驟,還是直接跳過該本 Case。
8) 如果一個TestCase失敗了,下面的case還能不能執行? Case之間有沒有依賴性?
9) 有沒有詳細的log輸出,當執行失敗的時候,能精準的定位錯誤。因爲自動化測試要無人值守,log也是至關重要。
10) 有沒有詳細的測試結果輸出,能不能多種格式(xml, html, excel等等),能不能自定義要輸出的內容。
11) 包括與其他測試工具協同工作,如 autoit,Hudson, QC。 怎麼使用 Hudson來進行調度job去執行一套測試用例?怎麼把測試結果上傳到QC之類測試管理工具?和怎麼讓autoit和處理selenium幹不了的工作等等。
這上面的問題是我工作中遇到的一些問題,TestNg並不能解決上面的全部,我們可以在TestNg的基礎上加上一些從而來實現這些目的。當讓可以自己寫一套處理這些的方法。
可能我們在測試過程並不需要這麼多功能,也可能會遇到更多的問題。最適合的就是最好的原理。
希望通過工作記錄自己的工作下來,將上面的內容一步一步實現並整理出來。