潘輝輝
摘 要:萬物互聯IOT時代的到來,軟件系統日益復雜,為確保可支撐數以萬計的終端,軟件系統性能測試尤其重要。本文簡要闡明如何更好的提升軟件系統性能測試水平,主要從兩方面進行闡述,第一:性能測試流程保障;第二:性能測試專業知識技能。
關鍵詞:軟件測試;性能測試;流程規范;測試技術
中圖分類號:TP311.53 文獻標識碼:A 文章編號:1004-7344(2018)11-0247-01
引 言
性能測試是利用自動化測試程序模擬海量用戶對系統進行業務訪問操作,驗證系統能夠承受負載的能力。當前互聯網系統高速發展,軟件系統進入大數據、云時代,軟件系統的功能規模越來越龐大,性能測試不僅要做而且要深入做。然而性能測試做深、做精并非易事,那么我們該如何把性能測試做深、做精呢?
1 性能測試流程保障
性能測試流程保障主要是規范測試過程中的關鍵活動及文檔輸入、產出。指導性能測試項目的實施,從管理上保證性能測試質量。
性能測試主要流程涵蓋點:需求分析階段、計劃方案編寫階段、測試用例數據準備階段、測試執行實施階段、編寫測試報告及知識技能總結。
性能需求分析階段的主要任務是對原始需求進行分析,獲取真實有效的性能需求數據,性能需求分析至關重要,其決定性能測試是否有效。大多數情況下性能測試人員需引導需求人員給出具體的性能需求數據,并對這些數據加以分析,提煉有效的指標。例如需求人員提出的原始性能需求為“測試系統是否支持3500個用戶并發”,此條需求是有問題的,因為并發用戶數與響應時間掛鉤,3500個并發用戶平均響應時間為1s和平均響應時間為30s,站在用戶角度,體驗有很大差異。諸如此類的需求問題一定要分析明確,不充足的性能需求分析將直接導致性能測試工作失敗。性能測試需求分析包括但不局限于:獲取系統架構設計、期望的性能指標、測試基礎數據量、測試軟硬件環境等詳細需求。
測試計劃(或測試方案)主要包含測試目的、測試內容范圍及對應的方法策略、測試環境軟硬件部署方式、測試時間安排、測試程序選型等。相對于測試計劃,測試方案應突顯測試內容及其測試方法。
測試準備階段主要包括設計性能測試用例、測試基礎數據準備及開發對應的腳本;測試用例主要描述本次性能測試進行的場景,測試場景要盡可能真實的模擬系統線上的負載,得到更有效的數據,測試場景要明確壓測時業務分配比例、業務量、業務時間及不同業務所分配的虛擬用戶數、執行比例等;測試腳本編寫主要指開發和測試場景對應的腳本,如Ixchariot性能腳本。
實施執行階段主要完成性能測試用例的執行,業務指標、軟硬件指標監控記錄及性能診斷優化。通過性能測試工具執行性能測試用例中的場景,實時記錄執行過程中的結果數據如TPS、響應時間、并發用戶數、失敗率、CPU/內存/磁盤/網絡占用率等。同時分析并記錄測試過程中所識別系統的性能弱點,甄別系統的性能問題。
最后是根據記錄的測試數據,編寫產品性能測試報告。總結性能測試過程中的知識技能及解決相關問題的經驗,提出過程改進建議。
2 性能測試技術
性能測試技術體系是從技術角度制定性能測試實施過程中關鍵技術規范,更好的對系統進行性能測試。對性能測試實施過程中關鍵的技術進行分析總結如:系統測試環境、測試模型及策略、數據量、測試腳本、監控工具及使用、瓶頸分析及調優、性能測試分布式壓測工具。
測試環境主要包含硬件環境及軟件環境,搭建環境是性能測試的一個難點。硬件測試環境搭建需注意以下幾點:環境架構與生產環境物理架構完全相同;測試環境機型與生產環境物理機型盡量相同;測試環境基礎數據量與生產環境基礎數據量需在同一個數量級上。只能減少測試環境機器臺數,且需同比例縮小。理想的測試環境硬件配置與生產環境一致,若資源不滿足可為生產環境的1/2,1/4等。軟件測試環境需注意以下幾點:系統軟件版本相同,如操作系統Linux版本、中間件Nginx版本、數據庫Oracle版本等;相關參數配置與生產環境相同,如系統ipv4配置參數、中間件Tomcat線程池配置參數、數據庫連接池配置參數、應用配置參數。
工欲善其事必先利其器,針對性能測試,選擇合適的測試工具可以讓性能測試事半功倍。WEB服務類的的系統可選擇使用LoadRunner,其專業、穩定、高效。若是考慮產出投入比也可選擇開源工具JMeter。網絡設備類的性能測試可選擇IxChariot、iperf、trex等,最好專人負責相關測試工具的深入研究。
測試腳本是根據測試用例編寫相應的測試代碼。編寫測試代碼需注意以下幾點,如并發集合點設置、服務端返回值檢查點設置、事務的設置以及腳本變量的參數化,同時要注意其編碼規范及編碼質量,腳本不要出現諸如申請內存不釋放、打開文件不關閉等情況。
數據監控技術是識別整理測試監控指標及其對應監控工具、方法。硬件資源監控如CPU/內存/磁盤/網絡占用率,軟件資源監控如中間件Tomcat、數據庫MySQL等。通常Linux環境下使用Nmon對服務硬件資源監控;使用MONyog對Mysql進行遠程監控。監控哪些指標以及Nmon、JConsole、Jstat、JMap、MONyog等常用監控工具使用方法均在數據監控技術范疇,最好形成標準文檔供性能測試時參考使用。
瓶頸分析及調優技術是根據相關測試結果數據及測試資源監控數據找出性能瓶頸點,并對其調優。性能測試一般的調優方式是先優化硬件后調整軟件,先易后難。即先確定系統性能瓶頸不是由于硬件資源如網絡、內存、磁盤使用率引起的,然后排查系統瓶頸是否是由于應用中間件配置、數據庫配置等引起;然后再確定程序編碼是否有問題,如是否使用表單壓縮、是否使用局部刷新、是否減少大對象引用;最后再確認性能問題是否是由于系統架構引起。常見的性能測試問題瓶頸、分析調優方法亦需要文檔化。
3 結 語
性能測試是一項綜合性的測試工程,不僅需要性能測試流程管理體系做保障更需要性能測試技術體系做支撐。二者相輔相成共同保證產品性能指標,為軟件質量打下強力的基礎。
參考文獻
[1]陳志勇,馬利偉,萬 龍,著.全棧性能測試修煉寶典-Jmeter實戰.
[2]于 涌,王 磊,曹向志,高 樓,于 躍,著.精通軟件性能測試與LoadRunner最佳實戰.
收稿日期:2018-3-15