基於Python的性能自動化測試框架設計思路和實現

背景html

性能測試,做爲一項對系統、接口或業務流程進行深度評估的測試活動,與功能測試的關注點和視角是不一樣的,同時由於可能涉及人員較廣,如性能測試人員,功能測試人員,開發,運維,DBA等,每每存在測試周期長的廣泛現象。然而,對於瓶頸優化後的性能迴歸,基於已有的環境數據、測試腳本、場景配置等,徹底能夠考慮實現性能自動化,將性能測試人員從繁瑣的場景執行、資源監控、結果收集等工做中解脫出來,從而節約時間、也使得性能人員能夠集中精力在更重要的結果分析階段。python

基於上述考慮及現實需求,有必要開發框架來實現性能測試自動化。linux

 

問題分析ios

俗話說,工欲善其事必先利其器,開發性能測試自動化框架前,須要考慮如下問題:sql

1.       選用什麼開發語言?shell

2.       框架要處理的性能測試工具是什麼?數據庫

3.       如何設計框架,讓使用者更省心,讓應對需求更從容?windows

4.       如何抽離通用功能並實現複用?服務器

5.       如何控制多場景下的執行順序?微信

6.       如何執行數據準備?

7.       如何高效實現window對多linux主機的控制和文件下載?

8.       如何讓數據庫的監控更方便?

9.       如何對html網頁數據爬取更簡單?

10.   如何進行文本內容提取和分析?

11.   如何寫html更優雅?

…………………………….

 

解決思路

好了,上面已經提了一大堆問題,固然,這僅僅是實現一個可用、可靠自動化框架衆多問題中的一部分,也是開發前須要有個基本解決構想的。

在框架開發中,設計原則及解決思路是這樣的:

採用Python做爲開發語言,並且是純python實現,拒絕其餘各類腳本形式,bat啊,shell啊,保持框架將來的可維護性;

性能測試工具主要是LR、某些場景可能會用到Jmeter,於是,框架優先支持LR,根據後續需求,會考慮對Jmeter的支持;

框架應提供簡潔、易配置的統一接口,用戶無需關心框架內部實現;

框架應模塊化設計,提升功能複用;

框架經過統一的配置接口方便支持場景順序控制的需求;

抽離數據庫操做功能,支持在每一個場景執行前進行環境初始化操做,並且該動做應該是可選或可配置的;

windows-linux的文件傳輸、命令執行、sql腳本執行能夠經過parimiko實現;

經過獲取awr報告實現對數據庫性能情況的監控;

經過nmon實現對各服務器資源的監控;

使用beautifulsoap解析html文件;

配置採用xml格式,且使用cElementTree進行解析;

框架的執行過程應有詳細的日誌記錄,可使用logging實現;

支持生成html格式的測試報告;


框架流程

框架主要分爲三大功能模塊,場景執行、資源監控、結果分析和報告;流程圖以下:

1.png 


框架目錄結構

框架實現目錄結構以下:

2.png

Config目錄:提供框架統一配置入口,presql目錄提供場景初始化準備的腳本;

Log目錄:提供框架執行的詳細日誌,以天爲單位記錄日誌,當日日誌會被重寫;

Report目錄:框架執行完畢後生成報告,包括summary_report.htmlresource_report.html

Result目錄:該目錄用於存放執行的結果,其中包括用於保存linux資源監控的Linux目錄、場景執行結果的LR目錄和數據庫運行監控的Oracle目錄;

Scenarios目錄:場景執行文件目錄和用於保存LR結果分析模板的Perf_Autotest_Tep目錄;

Scripts目錄:框架腳本目錄;

 

實現效果

框架執行完畢後,會以郵件形式發送報告,附件包括summary_report.htmlresource_report.html,實現效果以下:


summary_report.html效果

性能自動化框架-summary report報告.jpg


resource_report.html效果

性能自動化框架-resource_report-報告實例png.png

 

其餘資源

關於python學習、分享、交流,筆者開通了微信公衆號【小蟒社區】,感興趣的朋友能夠關注下,歡迎加入,創建屬於咱們本身的小圈子,一塊兒學python

相關文章
相關標籤/搜索