一 背景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格式的測試報告;
四 框架流程
框架主要分爲三大功能模塊,場景執行、資源監控、結果分析和報告;流程圖以下:
五 框架目錄結構
框架實現目錄結構以下:
Config目錄:提供框架統一配置入口,presql目錄提供場景初始化準備的腳本;
Log目錄:提供框架執行的詳細日誌,以天爲單位記錄日誌,當日日誌會被重寫;
Report目錄:框架執行完畢後生成報告,包括summary_report.html和resource_report.html;
Result目錄:該目錄用於存放執行的結果,其中包括用於保存linux資源監控的Linux目錄、場景執行結果的LR目錄和數據庫運行監控的Oracle目錄;
Scenarios目錄:場景執行文件目錄和用於保存LR結果分析模板的Perf_Autotest_Tep目錄;
Scripts目錄:框架腳本目錄;
六 實現效果
框架執行完畢後,會以郵件形式發送報告,附件包括summary_report.html和resource_report.html,實現效果以下:
summary_report.html效果:
resource_report.html效果:
七 其餘資源
關於python學習、分享、交流,筆者開通了微信公衆號【小蟒社區】,感興趣的朋友能夠關注下,歡迎加入,創建屬於咱們本身的小圈子,一塊兒學python。