設計自己的基於Selenium 的自動化測試框架-Java版(1) - 爲什麼selenium還需要測試框架?

本人自動化測試接觸時間不久,如有誤導,概不負責。

既然有了selenium這個開源的自動化的工具,爲什麼還要我們自己再去寫一個框架?

Selenium是自動化的工具,當然是可以用在測試領域,但他不是爲測試量身打造的。當然我們在編寫簡單的腳本的時候也不需要什麼框架,隨着時間的推移,或者腳本的變多,我們發現有很多重複的代碼,這時候我們就可以把這些重複的代碼提取出來,就形成所謂的框架。

 

首先一個普通的測試用例,比如以一個Excel爲例(如下圖),每一行代表一個測試步驟,每個步驟又包含(步驟名,描述,期望結果) 3個部分。

TestNG + selenium 我想網上也有很多人用的這兩個來搭配。

我們自定義一個TestCaseClass(測試用例類)來定義一個Test Case(測試用例)。讓後讓Class繼續 Selenium中的SeleneseTestBase,SeleneseTestCase,或者SeleneseTestNgHelper.TestCaseClass的一個Method(方法)對應一個Test Step. Method Name對應Step Name

方法中Operationselenium.*一些actions)對應Description,方法中的Assertions(如AssertEqual)來對應 Expected Result.

再加上啓動selenium和關閉 selenium的代碼,這樣一個TestCaseClass就可以運行起來了。

這時候如果我們要寫10case,問題就來了。

1) 每次運行TestCase都需要實例化selenium,都要start,和close。這寫都重複能不能提取出來?

2) 能不能設計自己的 Actions(操作),能不能設計自己的 Assertions(我叫做檢查點)

3) 能不能把selenium運行的一些環境信息(如OS,Browserserverport)保存到配置文件中?

4) 能不能吧測試對象分離出來保存(比如保存到xml文件)?

5) 能不能吧測試數據分離出來保存(比如保存到xmlexcel文件中)?,能不能實現數據迭代,而不只是重複的copy代碼來實行不同的數據測試。

6) 能不能一次執行10Case?當然也可以,TestNg有自己的配置文件,你可以定義NClass。但我有個定勢思維,總不能Class文件和測試用例關聯起來。

7) 異常處理,如果一個Test Step失敗了,會不會執行下面的步驟,還是直接跳過該本 Case

8) 如果一個TestCase失敗了,下面的case還能不能執行? Case之間有沒有依賴性?

9) 有沒有詳細的log輸出,當執行失敗的時候,能精準的定位錯誤。因爲自動化測試要無人值守,log也是至關重要。

10)          有沒有詳細的測試結果輸出,能不能多種格式(xml, html, excel等等),能不能自定義要輸出的內容。

11)          包括與其他測試工具協同工作,如 autoitHudson QC 怎麼使用 Hudson來進行調度job去執行一套測試用例?怎麼把測試結果上傳到QC之類測試管理工具?和怎麼讓autoit和處理selenium幹不了的工作等等。

 

這上面的問題是我工作中遇到的一些問題,TestNg並不能解決上面的全部,我們可以在TestNg的基礎上加上一些從而來實現這些目的。當讓可以自己寫一套處理這些的方法。

可能我們在測試過程並不需要這麼多功能,也可能會遇到更多的問題。最適合的就是最好的原理。

希望通過工作記錄自己的工作下來,將上面的內容一步一步實現並整理出來。

發佈了38 篇原創文章 · 獲贊 3 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章