1. 程式人生 > >《一頭扎進》系列之Python+Selenium框架設計篇1- 價值好幾K的框架,不看別後悔,過時不候

《一頭扎進》系列之Python+Selenium框架設計篇1- 價值好幾K的框架,不看別後悔,過時不候

1. 什麼是自動化測試框架

  在瞭解什麼是自動化測試框架之前,先了解一下什麼叫框架?框架是整個或部分系統的可重用設計,表現為一組抽象構件及構件例項間互動的方法;另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面,而後者是從目的方面給出的定

義。 從框架的定義可以瞭解,框架可以是被重用的基礎平臺;框架也可以是組織架構類的東西。其實後者更為貼切,因為框和架本來就是組織和歸類所用的。

  所以自動化測試框架的定義為:由一個或多個自動化測試基礎模組、自動化測試管理模組、自動化測試統計模組等組成的工具集合。

  按框架的定義來分,自動化測試框架可以分為:基礎功能測試框架、管理執行框架;按不同的測試型別來分,可以分為:功能自動化測試框架、效能自動化測試框架;按測試階段來分,可以分為:單元自動化測試框架、介面自動化測試框架、系統自動化測試框

架;按組成結構來分,可以分為:單一自動化測試框架、綜合自動化測試框架;按部署方式來分,可以分為:單機自動化測試框架、分散式自動化測試框架。

  在百度百科中是這樣定義的:自動化測試框架,即是應用於自動化測試所用的框架。按照框架的定義,自動化測試框架要麼是提供可重用的基礎自動化測試模組,如:selenium [1]  、watir等,它們主要提供最基礎的自動化測試功能,比如開啟一個程式,模擬鼠

標和鍵盤來點選或操作被測試物件,最後驗證被測物件的屬性以判斷程式的正確性;要麼是可以提供自動化測試執行和管理功能的架構模組,如:Phoenix Framework,robot [2]  ,STAF [3]  等,它們本身不提供基礎的自動化測試支援,只是用於組織、管理和執

行那些獨立的自動化測試用例,測試完成後統計測試結果,通常這類框架一般都會整合一個基礎自動化測試模組,如:robot框架就可以整合selenium [4]  框架,Phoenix Framework整合的也是selenium框架。

  簡單來說,自動化測試框架就是由一些標準,協議,規則組成,提供指令碼執行的環境。自動化測試框架能夠提供很多便利給使用者高效完成一些事情,例如,結構清晰開發指令碼,多種方式、平臺執行指令碼,良好的報告去跟蹤指令碼執行結果。

框架具有以下一些優點:

1)程式碼複用

2)最大覆蓋率

3)很低成本維護

4)很少人工干預

5)簡單報告輸出

2. 為什麼要進行自動化測試?

①、黑盒測試迴歸效率低

②、手動測試的偶然性和不確定性

③、迴歸的覆蓋率不足

④、交付的產品質量無法保證,全靠評估

⑤、系統越複雜,問題越多

⑥、上線時間長、構件失敗率高導致的蝴蝶效應(迭代快,加班多)

3. 自動化測試能解決什麼問題?

①、提高出現問題後的響應速率

②、降低迴歸成本

③、提高迴歸覆蓋率

④、提高迴歸效率

⑤、提高迴歸的穩定性

4. 自動化測試的不足有哪些?

①、無法減少成本投入,而是為了加快測試結果反饋,提升測試質量

②、自動化適用於迴歸和冒煙,而不是發現BUG

③、錄製回放功能是雞肋,視覺化並不是一個很好的做法

④、不是所有所有系統所有功能都適合做自動化測試

5. 常見的測試框架分類

好多Selenium自動化測試開發人員是有QTP那邊轉過來的,所以,他們在早期設計的框架大致可分為以下幾類:

1)基於模組的測試框架

2)基於庫(Library)結構測試框架

3)資料驅動測試框架,和QTP很像

4)關鍵字驅動測試框架,也是QTP過來的

5)混合測試框,3 4和綜合

6)行為驅動開發測試框架

 這裡我們不一一介紹這些框架,字面意思可以想象一些這些框架的背景和元件,本文只是對框架有一個基本瞭解。

6. 框架基本元件

我們來思考下框架組成部分:

1)需要配置檔案管理

2)業務邏輯程式碼和測試指令碼分離

3)報告和日誌檔案輸出

4)自定義的庫的封裝

5)管理、執行指令碼方式

6)第三方外掛引入

7)持續整合

解釋:

      我們需要一個配置檔案去控制一些,環境資訊,開關,配置檔案可以是txt/xml/yaml/properties/ini,一般.properties使用較多在JAVA裡,本文是Python系列,我可能會選擇ini檔案。

       業務邏輯程式碼和測試指令碼分離,不像我們剛開始學習Selenium那樣,程式碼和指令碼在一個類檔案裡演示。我們根本沒有用到程式碼重構,複用。程式碼和用例檔案分離後,更加清晰,去多人開發指令碼,方便除錯。

       報告和日誌檔案輸出,你執行了多少case,case結果如何,這都需要報告來展示,一般採用第三方外掛來實現這個功能,好多報告格式是html,簡單,明瞭的風格。日誌輸出也很重要,如果發生報錯,指令碼執行失敗,通過日誌快速定位發生問題位置。

      使用者自定義庫,這個很好理解,我們很多功能需要重複呼叫,這樣我們就寫成一個公用方法,放到工具包下,每次方便呼叫,例如瀏覽器引擎類和basepage.py的封裝。

      管理和執行指令碼的方式,例如Python中單元測試框架unittest使用率非常高。

      第三方外掛,有時候,我們一些功能,需要藉助第三方外掛,能夠更好實現,例如AutoIT,來實現檔案上傳和下載。還有利用第三方報告外掛生成基於html格式的測試報告。

      持續整合,git,svn,ant,maven,jenkins,我們會把這整合到jenkins,達到持續整合,一鍵執行測試指令碼。

7. 自動化框架概要設計

根據以上的框架基本元件特點介紹,巨集哥大致用以下圖來描述一下,一個簡單的自動化測試框架,可能包含配置檔案、框架的主要程式碼、產品業務頁面、測試指令碼集合、日誌和報告和持續整合等等這些組成部分吧,目前想到的只有這麼多,如果後期想到巨集哥再進一步完善它。

8. 自動化框架詳細設計

根據以上的框架概念設計的特點介紹,巨集哥這裡詳細地用以下圖來描述一下,一個簡單而又實用的自動化測試框架,可能包含以下這些組成部分。巨集哥目前細化到這裡,後期會將這個框架的程式碼放到github上,歡迎有興趣和有能力的大佬給出建議或者完善這個自動化測試框架。

   

9. 小結

  框架的簡單介紹就到這裡,有些人把框架想得太複雜了,框架無非就是一些軟體的集合,達到特定的目的。這裡我們上圖畫出來的框架,就是一個簡單的自動化測試框架,別笑,這確實是一個簡單但又包含必要的元件的自動化測試框架設計例項,如果你學會了這個設計思路和思想,那麼,你已經達到了自動化測試第二個階段的水平:能夠簡單設計自動化測試框架和維護框架的能力。

 

好了,今天的分享就到這裡吧!!!謝謝各位的耐心閱讀。

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!

別忘了點推薦留下您來過痕跡