性能測試--2开财、有效應(yīng)用程序性能測試的基本原則

在應(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載志膀,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末鳖擒,一起剝皮案震驚了整個濱河市溉浙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒋荚,老刑警劉巖放航,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異圆裕,居然都是意外死亡广鳍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門吓妆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赊时,“玉大人,你說我怎么就攤上這事行拢∽婷耄” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵舟奠,是天一觀的道長竭缝。 經(jīng)常有香客問我,道長沼瘫,這世上最難降的妖魔是什么抬纸? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮耿戚,結(jié)果婚禮上湿故,老公的妹妹穿的比我還像新娘。我一直安慰自己膜蛔,他們只是感情好坛猪,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著皂股,像睡著了一般墅茉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呜呐,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天就斤,我揣著相機與錄音,去河邊找鬼卵史。 笑死战转,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的以躯。 我是一名探鬼主播槐秧,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忧设!你這毒婦竟也來了刁标?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤址晕,失蹤者是張志新(化名)和其女友劉穎膀懈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谨垃,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡启搂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年硼控,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胳赌。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡牢撼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疑苫,到底是詐尸還是另有隱情熏版,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布捍掺,位于F島的核電站撼短,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挺勿。R本人自食惡果不足惜曲横,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望满钟。 院中可真熱鬧胜榔,春花似錦、人聲如沸湃番。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吠撮。三九已至尊惰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泥兰,已是汗流浹背弄屡。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鞋诗,地道東北人膀捷。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像削彬,于是被迫代替她去往敵國和親全庸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容