本人自動化測試接觸時間不久,如有誤導,概不負責。
既然有了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的基礎上加上一些從而來實現這些目的。當讓可以自己寫一套處理這些的方法。
可能我們在測試過程並不需要這麼多功能,也可能會遇到更多的問題。最適合的就是最好的原理。
希望通過工作記錄自己的工作下來,將上面的內容一步一步實現並整理出來。
http://blog.csdn.net/caiqcong/article/details/7594687