在應(yīng)用程序的生命周期中,應(yīng)盡早建立性能測試意識误褪。
確保應(yīng)用一切就緒
需要考慮的問題:
- 應(yīng)用程序部署后需要支持多少最終用戶责鳍?6個月后?1年后兽间?3年后呢历葛?
- 這些用戶分布在哪里?他們是如何與系統(tǒng)建立連接的嘀略?
- 部署后有多少在線用戶恤溶、并發(fā)用戶乓诽?6個月后?1年后咒程?3年后呢问裕?
引申出的問題: - 對于每個應(yīng)用程序,需要多少臺服務(wù)器孵坚?這些服務(wù)器的配置是怎么樣粮宛?是否需要集群?
- 我需要提供什么類型的網(wǎng)絡(luò)基礎(chǔ)設(shè)施卖宠?
性能測試重點關(guān)注的方面:
- 選擇合適的性能測試工具巍杈;
- 設(shè)計一個合適的性能測試環(huán)境;
- 設(shè)置切合實際的性能測試目標(biāo)扛伍;
- 確保被測應(yīng)用程序足夠穩(wěn)定筷畦;
- 安排有足夠的時間進行有效的性能測試;
- 做到代碼凍結(jié)刺洒;
- 確定和編寫關(guān)鍵業(yè)務(wù)腳本鳖宾;
- 提供高質(zhì)量、足夠的測試數(shù)據(jù)逆航;
- 確保準(zhǔn)確的性能測試設(shè)計鼎文;
- 確定監(jiān)控服務(wù)器和網(wǎng)絡(luò)的關(guān)鍵性指標(biāo)(KPI);
- 安排有足夠的時間進行有效的性能測試因俐。
性能測試工具
性能測試工具要求:
- 協(xié)議支持(通信協(xié)議)拇惋;
- 認(rèn)證模式(License);
- 概念驗證(Proof of concept抹剩,簡稱POC撑帖,證明其可行性,示范其原理)澳眷;
- 腳本效果(生成腳本的編輯程度)胡嘿;
- 解決方案與負(fù)載測試工具(提供解決方案);
- 外包性能測試or內(nèi)部執(zhí)行钳踊。
注意:制定替代方案衷敌。
預(yù)留足夠時間
安排足夠的時間確保有效的性能測試。
需要考慮的幾個方面:
- 準(zhǔn)備測試環(huán)境的時間
- 準(zhǔn)備負(fù)載生成器環(huán)境
- 確定及描述業(yè)務(wù)事務(wù)的時間
- 識別和創(chuàng)建足夠的測試數(shù)據(jù)的時間
- 部署測試環(huán)境的時間
- 準(zhǔn)備和執(zhí)行性能測試運行的時間
- 解決問題的時間
設(shè)計性能測試環(huán)境
理論上要與生產(chǎn)環(huán)境完全一致箍土,但是很多原因?qū)е虏惶赡芊晗恚赡艿脑颍?/p>
- 服務(wù)器的數(shù)量和規(guī)模:真實環(huán)境難以復(fù)制,盡量保持規(guī)格一致或接近吴藻,以便提供基準(zhǔn)瞒爬;
- 帶寬和網(wǎng)絡(luò)基礎(chǔ)設(shè)施:地理位置難以復(fù)制;
- 應(yīng)用層數(shù)量:建議完全一致;
- 應(yīng)用程序數(shù)據(jù)庫規(guī)模:建議完全一致侧但。
搭建性能測試環(huán)境矢空,需要進行計劃和規(guī)劃,必要時候需要定期做評審禀横。
性能測試環(huán)境的三個層次:
- 完全真實或者接近真實的環(huán)境屁药;
- 生產(chǎn)環(huán)境的子集。使用少數(shù)的服務(wù)器柏锄,但部署的規(guī)模和應(yīng)用層都與生產(chǎn)環(huán)境一致酿箭;
- 生產(chǎn)環(huán)境的子集。使用較少的和小規(guī)模的服務(wù)器(所有部署模式與生產(chǎn)一致趾娃,只是縮小規(guī)模)缭嫡。
施壓能力
負(fù)載生成器能力:確保負(fù)載生成器有足夠的硬件資源(盡量保證硬件資源處于非飽和狀態(tài))。
針對虛擬用戶需要注意以下幾點:
- 負(fù)載均衡:應(yīng)用程序根據(jù)傳入的IP地址不同進行負(fù)載分配抬闷;
- 需要實施“IP欺騙”技術(shù)(選擇測試工具時妇蛀,需要注意);
- 用戶會話限制:每一個物理機器只能發(fā)起一個用戶會話笤成,如:mac驗證等评架;
- 應(yīng)用程序技術(shù)的中間件可能無法錄制;
- 使用功能測試工具從表現(xiàn)層產(chǎn)生負(fù)載炕泳;
- 使用某種瘦客戶端的部署形式纵诞,以使性能測試工具能夠錄制;
- 從應(yīng)用層角度去衡量性能(通常性能測試是從中間層發(fā)起的喊崖,客戶端沒有進行性能測試選擇測試工具時挣磨,可以選擇負(fù)載測試腳本和功能測試腳本任意組合的性能測試工具)。
網(wǎng)絡(luò)部署模式
不同的部署模式(網(wǎng)絡(luò)環(huán)境)考慮如下幾點:
- 可用帶寬:局域網(wǎng)和廣域網(wǎng)的帶寬荤懂,需要作為性能測試模型的考慮因素;
- 網(wǎng)絡(luò)反應(yīng)時間:局域網(wǎng)和廣域網(wǎng)的延遲塘砸,廣域網(wǎng)的延遲高节仿,會影響性能。
針對廣域網(wǎng)的性能測試方法:
- 修改事務(wù)回放:性能測試工具通過修改事務(wù)的執(zhí)行頻率達到掉蔬;
- 廣域網(wǎng)的負(fù)載生成器:需要符合實際廊宪;
- 網(wǎng)絡(luò)模擬:網(wǎng)絡(luò)角度模擬廣域網(wǎng)的網(wǎng)絡(luò)環(huán)境。
環(huán)境檢查信息
- 服務(wù)器數(shù)量女轿;
- 負(fù)載均衡策略箭启;
- 硬件信息;
- 軟件清單蛉迹;
- 應(yīng)用程序組件(中間件)清單傅寡;
- 外部連接(其他內(nèi)部或者第三方系統(tǒng)的情況)。
軟件安裝沖突
測試環(huán)境中安裝的第三方軟件是否會互相沖突,比如:安全軟件荐操。
設(shè)定合理的性能目標(biāo)
制定切合實際的性能指標(biāo):制定明確清晰的性能指標(biāo)芜抒,否則性能測試沒有任何意義。
一致性
- 性能指標(biāo)制定需要提早制定(項目的早期階段)托启;
- 制定一致性的性能指標(biāo)需要相關(guān)所有部門都參與進來宅倒,使所有成員對項目進程和交付等問題都有清楚的了解(促進專家評審和參與);
- 商務(wù)人員:首席信息官(CIO)屯耸、首席技術(shù)官(CTO)拐迁、首席財務(wù)官(CFO)、部門負(fù)責(zé)人疗绣;
- IT:架構(gòu)團隊线召、開發(fā)人員、測試人員持痰、運維人員灶搜、基礎(chǔ)設(shè)施組(內(nèi)部和外部)、終端用戶工窍。
關(guān)鍵性能指標(biāo)
主要包含可用性割卖、響應(yīng)時間、吞吐量患雏、并發(fā)鹏溯、網(wǎng)絡(luò)利用率和服務(wù)器利用率。
- 可用性或者正常運行時間:應(yīng)用程序任何時候處于可用狀態(tài)淹仑;
- 并發(fā)性和擴展性:根據(jù)80/20原則確定丙挽,考慮高峰時期,經(jīng)驗法則在并發(fā)數(shù)和吞吐量指標(biāo)基礎(chǔ)上增加10%匀借;
- 吞吐量:考慮區(qū)分專家級和初級用戶颜阐,專家級用戶在單位時間內(nèi),創(chuàng)建的事務(wù)更多吓肋;
- 響應(yīng)時間:確定基線值(無任何影響情況下凳怨,一個用戶單獨運行此事務(wù)的響應(yīng)時間),根據(jù)差額確定響應(yīng)時間變化當(dāng)用戶增加時是鬼,響應(yīng)時間會增加肤舞,但是隨著負(fù)載的增加不應(yīng)該出現(xiàn)阻塞的情況;
- 網(wǎng)絡(luò)容量:數(shù)據(jù)量(低帶寬廣域網(wǎng)下均蜜,帶寬限制和網(wǎng)絡(luò)延遲的影響)李剖、數(shù)據(jù)吞吐量(是否能達到“節(jié)流”的情況)、數(shù)據(jù)錯誤率囤耳;
- 服務(wù)器容量:CPU篙顺、內(nèi)存偶芍、I/O(磁盤和網(wǎng)絡(luò)等)、磁盤空間等慰安。
梳理關(guān)鍵業(yè)務(wù)用例和編寫腳本
識別并確認(rèn)關(guān)鍵業(yè)務(wù)的事務(wù)腋寨,確定性能測試業(yè)務(wù)范圍。
確保在性能測試過程中應(yīng)用程序足夠穩(wěn)定化焕,系統(tǒng)穩(wěn)定性是對于應(yīng)用程序能夠正確提供服務(wù)的信心萄窜,性能測試之前,代碼的質(zhì)量對于性能的好壞是至關(guān)重要的撒桨。
影響應(yīng)用程序穩(wěn)定性查刻,可能出現(xiàn)的隱藏問題:
- 大數(shù)據(jù)量展現(xiàn);
- 執(zhí)行效率不佳的SQl語句凤类;
- 大量的網(wǎng)絡(luò)數(shù)據(jù)交互穗泵;
- 應(yīng)用程序的未知錯誤。
做到代碼凍結(jié)(保證測試版本穩(wěn)定)谜疤,對不斷變化的對象進行性能測試是毫無意義的佃延,保證代碼版本的一致性,對于性能測試至關(guān)重要夷磕。
事務(wù)檢查列表
- 定義每個執(zhí)行步驟并形成文檔履肃,保證不出現(xiàn)具有歧義的路徑;
- 確定所有輸入數(shù)據(jù)的要求和預(yù)期結(jié)果坐桩;
- 定義事務(wù)涉及的用戶類型:多用戶操作同一事務(wù)尺棋,使用量各有不同;
- 事務(wù)的鏈接模式是什么:局域網(wǎng)绵跷、廣域網(wǎng)膘螟、互聯(lián)網(wǎng);
- 主動型事務(wù)還是被動型事務(wù)碾局。
事務(wù)回放驗證
- 驗證單用戶回放荆残;
- 驗證多用戶回放。
度量目標(biāo)
要測量什么:關(guān)注事務(wù)的響應(yīng)時間净当,及LR里面事務(wù)的概率脊阴。
登錄還是不登錄
用戶是否反復(fù)登錄(腳本中,是否重復(fù)登錄)蚯瞧。
共存系統(tǒng)問題
資源共享(與其他應(yīng)用共享服務(wù)器、網(wǎng)絡(luò)帶寬等)品擎。
準(zhǔn)備測試數(shù)據(jù)
提供高質(zhì)量的足夠的測試數(shù)據(jù)
- 輸入數(shù)據(jù):用戶認(rèn)證埋合;搜索條件:不同的數(shù)據(jù)組成搜索條件;文檔關(guān)聯(lián):上傳下載測試萄传,文檔類型和大小多種甚颂;
- 目標(biāo)數(shù)據(jù):大忻刍:確定數(shù)據(jù)庫基礎(chǔ)數(shù)據(jù)量;數(shù)據(jù)回滾:保證每次測試時振诬,數(shù)據(jù)庫的數(shù)據(jù)量一致蹭睡,減少性能測試差異,考慮數(shù)據(jù)庫恢復(fù)時間赶么,并在性能測試計劃中體現(xiàn)肩豁;
- 運行時返回數(shù)據(jù):確認(rèn)執(zhí)行結(jié)果正確;
- 數(shù)據(jù)安全性:保證數(shù)據(jù)脫敏辫呻。
精確的設(shè)計性能測試
性能測試的基本類型
- 基準(zhǔn)測試:基準(zhǔn)測試是指建立一個可與進一步測試比較的點清钥,通常用于衡量事務(wù)響應(yīng)時間;通常是單用戶在一段時間或一定的循環(huán)次數(shù)內(nèi)執(zhí)行單個事務(wù)放闺,提供在“最好情況下”的測量祟昭;基準(zhǔn)測試得到的值可用于評估,隨著用戶數(shù)或吞吐量的增長而導(dǎo)致系統(tǒng)響應(yīng)性能的衰減怖侦;
- 負(fù)載測試:為達到性能目標(biāo)而做的性能測試篡悟;最接近真實的使用場景;
- 壓力測試:導(dǎo)致應(yīng)用程序或部分支撐硬件的崩潰匾寝,這樣做的目的是確定硬件的支撐大小和上限搬葬;壓力測試的結(jié)果不僅可以衡量系統(tǒng)的性能,還可以衡量功能旗吁;重要的是了解到了應(yīng)用程序的上限踩萎,為未來的做決策;
- 滲透或穩(wěn)定性或可靠性測試:長時間下的負(fù)載測試很钓;
- 冒煙測試:只關(guān)注發(fā)生改變的部分香府;
- 隔離測試:性能問題確定測試。
負(fù)載模型
負(fù)載生成策略:
- 爆炸式(同一時間加壓)
- 遞增式
- 逐步遞增式
- 逐步遞增式码倦,逐步遞減式
- 延遲啟動
為每個事務(wù)設(shè)置虛擬用戶數(shù)(混合場景性能測試)企孩。
性能測試負(fù)載方式:
- 每個事務(wù)的基準(zhǔn)測試:為每個事務(wù)建立一套性能數(shù)據(jù)基準(zhǔn);
- 每個事務(wù)的負(fù)載測試:確定每個事務(wù)需要的最大并發(fā)用戶數(shù)或吞吐量袁稽;
- 單個事務(wù)的隔離測試:出現(xiàn)問題時勿璃,啟動,直到問題解決推汽;
- 混合事務(wù)負(fù)載測試:單事務(wù)達標(biāo)补疑,啟動混合事務(wù)負(fù)載測試目的為了發(fā)現(xiàn)硬件能力或可能的沖突,比如數(shù)據(jù)庫鎖等資源的競爭負(fù)載生成策略:遞增或遞減歹撒;
- 混合事務(wù)隔離測試:混合負(fù)載不達標(biāo)時莲组,啟動,確認(rèn)診斷結(jié)果和解決方案暖夭,指導(dǎo)解決锹杈;
- 混合事務(wù)滲透測試:疲勞或穩(wěn)定性測試單事務(wù)或者混合事務(wù)撵孤,發(fā)現(xiàn)在長時間運行情況下,才能出現(xiàn)的問題竭望;
- 混合事務(wù)壓力測試:峰值測試單事務(wù)或者混合事務(wù)邪码,通過減少暫停時間和步進時間,創(chuàng)建比負(fù)載測試中更大的吞吐量查明應(yīng)用程序容量的上限咬清,并且確定在突然的業(yè)務(wù)高峰期系統(tǒng)的響應(yīng)如何闭专;
- 其他性能方面的測試:配置測試不同方式的負(fù)載均衡停掉應(yīng)用程序的一個或多個服務(wù)來測試系統(tǒng)的容錯行為為今后異常處理或者應(yīng)急方案做決策,而做的非性能方面的測試枫振。
用戶負(fù)載仿真:創(chuàng)建的負(fù)載必須和真實的環(huán)境一致喻圃,考慮帶寬的制約、資源的制約等粪滤。
思考時間&步進時間
思考時間和步進時間可以盡量讓性能測試更真實斧拍。
思考時間:影響的是事務(wù)執(zhí)行的頻率(事務(wù)內(nèi)部的等待時間)。
步進時間:影響的是事務(wù)的吞吐量(事務(wù)迭代之間的間隔時間)杖小。
確定關(guān)鍵性能指標(biāo)
服務(wù)器指標(biāo)
- 通用指標(biāo)
- CPU
- 內(nèi)存
- I/O(磁盤和網(wǎng)絡(luò))
- 磁盤空間
- Web和應(yīng)用服務(wù)層:OC4J肆汹、Weblogic、WebSphere予权、Jboss等昂勉;
- 數(shù)據(jù)庫服務(wù)層:MSSQL、Oracle扫腺、DB2岗照、MySQL、Sybase笆环、Informix等攒至;
- 主機層:Strobe(Compuware)、Candle(IBM)躁劣。
網(wǎng)絡(luò)指標(biāo)
- 數(shù)據(jù)包的響應(yīng)時間迫吐;
- 數(shù)據(jù)展現(xiàn);
- 大數(shù)據(jù)量引起的任何可能出現(xiàn)的錯誤账忘。
參考文檔
- 《應(yīng)用程序性能測試的藝術(shù)》
微信公眾號:daodaotest