經常和一些同行在網上交流,了解到現在很多公司都在做
性能測試,甚至有的在公司都沒有成熟的性能測試人員情況下,就拉個稍微了解點性能測試工具的人員,跑個腳本就做起了性能測試。這時候都不約而同的拋出了一個問題,我們的性能測試結論是可信的嗎?結合自己的性能測試經驗,針對性能測試結論的可信度,談談個人的一點看法。
確定測試結果可信度,指的是性能測試結果是否穩定可靠。也就是說,測試得到的各種指標數據是不是反映了系統真實性能的情況。例如,如果同一套腳本在對同 一測試對象(即被測對象本身沒有變化,例如同一頁面)進行的數次測試中,一般情況下頁面響應時間指標忽高忽低的話,則說明該測試缺乏信度。則得到的響應時 間并不能反映系統在真實生產環境的響應時間。測試的信度與測試的效度有著密切的關系。一般說來,只有信度較高的測試才能有較高的效度,效度較高的性能指標 才有較高的實際性能分析價值和對改進性能方案進行決策時的參考價值。測試的信度主要涉及到測試工具自身的可靠性和測試環境穩定性以及測試方案成熟性這三個 方面。
第一,測試工具自身的可靠性。
測試工具的可靠性,主要是指測試工具本身是否有Bug,性能計數器是否準確等和性能測試工具針對當前性能測試項目的場景進行的設置是否合理。
解決辦法:
針對性能測試工具本身功能方面,要對要使用的性能工具進行評估,商業工具和開源工具以及自己開發的工具,甚至是一些簡單插件,一些小的 Application等。雖然他們的性能測試原理都是相同的。但是還是要根據項目情況和工具情況進行整體評估,特別是一些特別項目,并不是一定商業工具 就更穩定可靠,但是相對而言,商業工具功能較為豐富,簡單易學習,穩定性也可以。結合成本和項目情況可以選擇自己開發工具,也可以定制工具,也可以對一些工具進行部分改進,例如自己做個更加精確的計數器。
針對工具設置方面,結合項目情況選擇最合理的設置,也許run腳本時候的很多問題,就是由于設置產生的。這部分需要對使用的工具很熟悉,清楚一些常用屬 性的設置場景。例如一些基本的設置:Agent和Controller的設置,scenario設置,counter sets,run setting。
第二,測試環境穩定性。
測試環境的穩定性對性能測試結果的重要性,相信已經都深有感觸。每個項目做性能測試方案時候都要梳理一遍可能影響request的開關,過期時間等設置。
解決辦法:
首先要盡可能建立一個獨立的性能測試環境,即使一些大型程序,例如大型的電子商務網站,數據庫過于龐大,難以建立獨立的性能測試數據庫環境,也要對性能測試數據進行一些標識,建立環境時候,要確保web server上的版本和windows server版本相對應,即時根據測試方案要求更新測試版本。要對一些用的cache server、Application server,搜索引擎等server集群進行合理設置。以使其符合項目性能測試的要求。
第三,測試方案成熟性。
測試方案是對一個性能測試從始至終的所有工作的指導。性能測試相當于做一個精密的實驗,方案的精密嚴謹性就直接會導致得到的性能測試指標準確性,合理性。
解決辦法:
首先要熟悉該次性能測試的目的,和測試需求。深入分析需求,提取出一些關鍵點,熟悉涉及到相關部分的業務,特別是涉及到request的,是Html請 求,還是Ajax請求,請求中是否包含動態數據,例如一些cookie參數等。根據以上了解,提取出性能測試場景。給出詳細的測試場景執行方案,以及測試 指標名稱。給出性能指標分析策略。取數據的策略(例如重測法,交替形式法,對半法等)。
測試執行過程中要時刻保持精密的思想,確保性能測試從始至終都要有據可依,有理論可考。最終才能得出具有很高參考價值的性能指標數據,這樣才能得出有效的性能測試結論。
版權聲明:本文出自 582357212 的51Testing軟件測試博客:http://www.51testing.com/?305564