如何設計一個自動化測試框架

  • 2020 年 3 月 28 日
  • 筆記

在進行自動化框架設計之前我們先來看兩個問題,什麼是自動化框架,設計的時候應該注意什麼原則,然後該怎麼做?本文會以一個web端的UI自動化測試框架設計為例

什麼是自動化測試框架

  • 什麼是框架

特指為解決一個開放性問題而設計的具有一定約束性的支撐結構。在此結構上可以根據具體問題擴展、安插更多的組成部分,從而更迅速和方便地構建完整的解決問題的方案。框架是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法。也就是說框架本身不解決特定的問題,它是通過擴展的各種組件或者工具來解決問題,並且它可以方便的添加或者修改部分組件的功能。

  • 什麼是自動化測試框架

什麼是自動化測試框架,我們拆分來看的話,其實就是三個方面,自動化、測試、框架,什麼是框架上面說了,還有就是他能執行測試,而且還是自動化的,所以框架的各個組件的主要功能就是圍繞著如何自動化如何執行測試展開的。

這裡可以把框架的各個功能稱作模組,那我們來看看都需要那些模組,需要一個基礎模組,主要是怎麼實現腳本編寫,管理模組,主要的行為是持續集成,定時執行、case管理,統計模組,主要是發送測試報告,統計分析。那總結一下自動化測試框架的定義就是:把在自動化測試過程中用到的一些功能或者工具,分裝成各個模組,包括如何進行自動化腳本編寫以及分層功能的基礎模組,進行持續集成、定時任務的管理模組,發送測試報告、進行測試結果統計分析的統計模組等,將這些模組組成一套可重用的骨架

自動化測試框架的設計原則

通用性:能夠在各種各樣的系統和平台都能夠使用

易維護性:能夠把我們的數據、用例、框架的實現進行獨立的維護,能夠在實現完善的過程,快速的定義到維護的點,而不對框架的其他功能造成影響

定時處理:能夠在指定的時間執行

持續集成:當被測程式和測試程式碼有更新能夠自動執行

調試:可調試行強

測試結果:測試報告、測試數據的統計分析

框架的設計思想

可以把自動化測試框架主體分為兩部分,一個是內部框架,一個是外部框架,內部框架就是我們自己實現的測試框架程式碼,外部框架就是拋開我們實現的核心程式碼,要達到自動化測試框架設計原的一些內容時用到的一些第三方工具。

外部框架

主要是指以webdriver為核心,輔以外部第三放框架和工具。用以實現持續集成、自動部署、腳本執行、遠程調用、報告優化、郵件發送導等功能性框架,實現自動化框架設計原則的一些外圍的組件。

內部框架

也就是分層框架,目的在於更好的優化和管理測試用例,更便捷的進行數據、元素、腳本的維護和更快速的創建新腳本

自動化測試框架設計思路
  • 通用的外部框架實現邏輯

    maven或者tox-自動編譯,執行TestNG或junit,集成郵件發送等

    TestNG或Junit、pytest,調用webdriver或者發送請求的方法,執行自動化測試用例,規範自動化測試腳本

    selenium腳本或者介面用例腳本

    reportNG或者allure報告優化模板

    main 自動以html郵件通知或者Jenkins發送郵件

  • 內部框架

    層架框架-也就是程式碼結構優化,根據具體的業務和需求可以大致分為以下幾層,有時並不需要下面所有的層次,選取合適自己業務測試的就行。

    TestCase層,執行的用例腳本

    Task層,公共業務分裝,是其他的項目不需要的,只和當前項目相關,比如公共登陸、搜索等業務

    utils層:與業務無關的方法,比如數據驅動-也就進行數據文件的讀寫、瀏覽器操作、元素定位方法等進行封裝

    page層或po層:頁面層,頁面層主要維護某一個頁面的所有元素,對頁面的操作、對元素的操作以及和其他頁面的交互,業務其實就是一個元素到另一個元素或者一個頁面到另一個頁面,這就和task層有點重複一般有一個就可以了。

    element層:公共元素或者組件的維護,或者自定義組件封裝

    data層:數據存儲

    properties層:配置文件、全局變數

下篇我們將以java和python語言生態的相關內容實現自動化測試框架,敬請關注!!

歡迎大家去 我的部落格 瞅瞅,裡面有更多關於測試實戰的內容哦!!