性能測試的目的,簡單說其實就是為了獲取待測系統的響應時間、吞吐量、穩定性、容量等信息。而發現一些具體的性能相關的缺陷(如內存溢出、并發處理等問題),我認為只是一種附加結果。從更高的層次來說,性能測試最想發現的,是瓶頸。如何能得到所需要的信息,就需要從多方面進行測試。
拿到一個性能測試任務的時候,我們首先需要明確我們的測試目標和輸出結果是什么;沒有計劃的開始注定是失敗的。做性能測試需要一個規范的流程,劃分清各個階段需要做哪些工作,這樣我們在接到一個任務時就不會手忙腳亂。
性能測試流程大致分為一下幾個階段:
1、測試準備
2、腳本開發與調試
3、測試執行
4、測試結果評估
5、測試后跟蹤
測試準備包括:
1、測試目標:
從需求文檔或者用戶獲?。翰l用戶數,事務吞吐需求,響應時間需求,系統占用資源需求,可擴展性需求等;
2、應用軟件:
從開發人員獲?。合到y整體架構(BS/CS),采用開發語言,通信協議,動態session,驗證碼等;
3、系統部署平臺:
從運維人員獲?。何锢聿渴穑ň钟蚓W/虛擬機),硬件架構(CPU/MEM/IO),操作系統,數據庫(版本/啟動參數/存儲布局),中間件(參數配置),部署模式等;
4、系統負載模型:
通過調研獲?。簭臉I務層面選取關鍵用例吞吐率以及用戶行為習慣,確定測試流程及流程業務比例;從系統負載方面了解高峰/平常場景吞吐率;
5、制定測試計劃和測試方案
測試腳本是做好性能測試的基礎,監控結果是性能測試的關鍵;扎實的代碼基礎和熟練掌握監控結果的收集和分析是性能測試的保障;系統上線后,對實際負載與性能情況和測試過程中做比較總結經驗也是學習提高的好方法。
在實際中作中我們經常會對兩種類型軟件進行測試:bs和cs,這兩方面的性能指標一般需要哪些內容呢?
Bs結構程序一般會關注的通用指標如下(簡):
Web服務器指標指標:
* Avg Rps: 平均每秒鐘響應次數=總請求時間 / 秒數;
* Avg time to last byte per terstion (mstes):平均每秒業務角本的迭代次數 ,有人會把這兩者混淆;
* Successful Rounds:成功的請求;
* Failed Rounds :失敗的請求;
* Successful Hits :成功的點擊次數;
* Failed Hits :失敗的點擊次數;
* Hits Per Second :每秒點擊次數;
* Successful Hits Per Second :每秒成功的點擊次數;
* Failed Hits Per Second :每秒失敗的點擊次數;
* Attempted Connections :嘗試鏈接數;
CS結構程序,由于一般軟件后臺通常為數據庫,所以我們更注重數據庫的測試指標:
* User 0 Connections :用戶連接數,也就是數據庫的連接數量;
* Number of deadlocks:數據庫死鎖;
* Butter Cache hit :數據庫Cache的命中情況
當然,在實際中我們還會察看多用戶測試情況下的內存,CPU,系統資源調用情況。這些指標其實是引申出來性能測試中的一種:競爭測試。什么是競爭測試,軟件競爭使用各種資源(數據紀錄,內存等),看他與其他相關系統對資源的爭奪能力。
我們知道軟件架構在實際測試中制約著測試策略和工具的選擇。如何選擇性能測試策略是我們在實際工作中需要了解的。
一般軟件可以按照系統架構分成幾種類型:
c/s
client/Server 客戶端/服務器架構
基于客戶端/服務器的三層架構
基于客戶端/服務器的分布式架構
b/s
基于瀏覽器/Web服務器的三層架構
基于中間件應用服務器的三層架構l
基于Web服務器和中間件的多層架構l
總結:
總的來說,我認為,性能測試的難度主要不在技術手段上,互聯網時代技術都是共享的,要善于去搜索利用他人的成果。即使自己搞不定,團隊內一定還有專業的開發工程師、數據庫管理員、系統管理員可以幫你搞定。真正的難點在于,你要想出來如何去測是有效的、有保障的,這才是測試工程師最重要的能力。
還是那個觀點,思想才是根本。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。