學習性能測試之前我們務必需要知道一些性能測試的理論知識與概念。
性能
性能這個詞語饭于,我們可能在生活中多多少少都接觸到,比如一輛汽車的性能果覆,這輛車百米加速多少秒殖熟,百公里油耗多少,一腳油門能不能夠跑到50KM钳榨,這些都是汽車的性能纽门。
一個軟件的性能,需求說明書上的功能已完全且準確無誤地實現(xiàn)饼齿,只表明系統(tǒng)能做事瘟滨,但是做得怎么樣還有待驗證,“做得怎么樣”,就可以簡單地理解為系統(tǒng)的性能伙菊。
汽車能跑能停就表明車能夠做事镜硕,車的百米加速多少秒,百公里油耗多少兴枯,這些就是做的怎么樣?
性能: 客戶需求說明書上的功能已完全且準確無誤地實現(xiàn)悠夯,只表明系統(tǒng)能做事沦补,但是做得怎么樣還有待驗證,“做得怎么樣”夕膀,就可以簡單地理解為系統(tǒng)的性能。
性能測試: 指在一定的軟件魂奥、硬件及網(wǎng)絡條件下捧弃,通過自動化的測試工具模擬多種正常擦囊、峰值以及異常負載條件來對系統(tǒng)的各項性能指標進行測試,從而發(fā)現(xiàn)系統(tǒng)的性能瓶頸买鸽。也就是說贯被,通過各種測試策略,模擬真實的用戶使用場景看幼,驗證系統(tǒng)能“做得怎么樣”幌陕。
并發(fā)用戶
絕對并發(fā):所有的用戶在同一時刻做同一件事情或者操作,一般指做同一類型的業(yè)務棚唆,或所有用戶進行完全一樣的操作心例。
相對并發(fā):多個用戶對系統(tǒng)發(fā)出了請求或者進行了操作,但是這些請求或者操作可以是相同的瞎惫,也可以是不同的。
相對并發(fā)包含絕對并發(fā)瓜喇,且相對并發(fā)更接近用戶的實際使用情況欠橘,因此對于大多數(shù)的系統(tǒng),只有數(shù)量很少的用戶進行絕對并發(fā)肃续。對于 WEB 性能測試而言始锚,這 2 種并發(fā)情況一般都需要進行測試,通常做法是先進行絕對并發(fā)測試棵里。絕對并發(fā)一般發(fā)生在使用比較頻繁的模塊中姐呐,盡管發(fā)生的概率不是很大,但是一旦發(fā)生性能問題头谜,后果很可能是致命的柱告。絕對并發(fā)測試往往和功能測試關聯(lián)起來,因為并發(fā)功能遇到異常通常都是程序問題际度,這種測試也是健壯性和穩(wěn)定性測試的一部分乖菱。
點擊率: 單位時間用戶向 WEB 服務器提交的 HTTP 請求數(shù)妹笆。這個指標是 WEB 應用特有的一個指標:WEB 應用是“請求-響應”模式,用戶發(fā)出一次申請,服務器就要處理一次贸弥,所以點擊是 WEB 應用能夠處理的交易的最小單位。點擊率越大臣疑,對服務器的壓力越大徙菠。點擊率只是一個性能參考指標婿奔,重要的是分析點擊時產(chǎn)生的影響。這里的點擊并非指鼠標的一次單擊操作萍摊,因為在一次單擊操作中冰木,客戶端可能向服務器發(fā)出多個 HTTP 請求。
事務: 一個事務表示一個“從用戶發(fā)送請求->web server 接受到請求歇终,進行處理-> web server 向 DB 獲取數(shù)據(jù)->生成用戶的 object(頁面)逼龟,返回給用戶”的過程评凝。事務可能由一個請求肥哎,或一系列請求組成疾渣。
事務響應時間: 指的是從客戶端發(fā)起請求開始,到客戶端接收到從服務器端返回的響應結束杈女,這個過程所耗費的時間达椰,響應時間的單位一般為“秒”或者“毫秒”项乒。:響應時間=網(wǎng)絡響應時間+應用程序響應時間檀何。標準可參考業(yè)界的 3/5/10 原則。
吞吐量: 指軟件系統(tǒng)在每單位時間內(nèi)能處理多少個事務/請求等栓辜,也就是系統(tǒng)的處理能力。在不同的場景下 TPS 有不同的詮釋施敢,比如數(shù)據(jù)庫的吞吐量指的是單位時間內(nèi)僵娃,不同 SQL 語句的執(zhí)行數(shù)量贩毕,而在網(wǎng)絡的吞吐量指的是在單位時間內(nèi)在網(wǎng)絡上傳輸?shù)臄?shù)據(jù)流量悯许。吞吐量的大小由負載(如用戶數(shù))或行為方式來決定。
集合點: 通過創(chuàng)建集合點辉阶,可以配置多個 Vuser 同時執(zhí)行同一操作先壕。當某個 Vuser 到達該集合點時,將進行等待谆甜,直到參與該集合的全部 Vuser 都到達后垃僚,釋放所有這些 Vuser」嫒瑁可通過將集合點插入到 Vuser 腳本來指定會合位置谆棺。
思考時間: 即請求間的停頓時間。實際中罕袋,用戶在進行一個操作后往往會停頓然后再進行下一個操作改淑,為了模擬這種用戶行為而引入了該概念。在虛擬用戶腳本中用函數(shù) lr_think_time()來模擬用戶處理過程浴讯,執(zhí)行該函數(shù)時用戶線程會按照相應的 time 值進行等待。
90%的響應時間: 指在一次完整的測試過程中仰猖,所有事務的請求時間,按從小到大順序排序躏升,90%的事物所消耗的時間范圍盗温。
最小和最大響應時間偏差很大時會導致平均值本身并不可信,此時双霍,平均事務響應時間滿足了性能需求,并不能表示系統(tǒng)的性能已經(jīng)滿足了絕大多數(shù)用戶的要求均芽。所以深纲,在評估性能測試結果時,除了要考慮事務的平均響應時間币呵,還要考慮90%的事物響應時間。
資源利用率: 指對不同系統(tǒng)資源的使用程度妻柒,如服務器的 CPU(s),內(nèi)存啤贩,網(wǎng)絡帶寬,I/O 等志衍。通常以占用最大值的百分比 n%來衡量培廓。
負載測試: 在一定的軟件、硬件及網(wǎng)絡條件下价匠,通過運行一種或多種業(yè)務在不同虛擬用戶數(shù)量情況下,測試系統(tǒng)的性能指標是否在用戶的要求范圍內(nèi)洋腮,用于確定系統(tǒng)所能承受的最大有效用戶數(shù)以及不同用戶數(shù)下的系統(tǒng)響應時間及服務器的資源利用率徐矩。負載測試強調(diào)的是在一定的環(huán)境下系統(tǒng)能夠達到的峰值指標,目的是找到系統(tǒng)處理能力的極限鳞骤。
壓力測試: 在一定的軟件、硬件及網(wǎng)絡條件下美旧,通過模擬大量的虛擬用戶向服務器產(chǎn)生負載,使服務器的資源處于極限狀態(tài)下并長時間連續(xù)運行嗽测,以測試服務器在高負載情況下是否能夠穩(wěn)定工作疏魏。壓力測試強調(diào)在極端情況下系統(tǒng)的穩(wěn)定性。壓力測試方法測試目標系統(tǒng)在一定飽和狀態(tài)下,例如 CPU、內(nèi)存等在飽和狀態(tài)下,系統(tǒng)還能否穩(wěn)定地提供服務爬舰。
配置測試: 在不同的軟件、硬件和網(wǎng)絡條件下垃你,通過運行一種或多種業(yè)務在一定的虛擬用戶數(shù)量情況下,獲得不同配置的性能指標,用于選擇最佳的設備及參數(shù)配置锨亏。如 CPU、顯卡、內(nèi)存末融、硬盤浓瞪、系統(tǒng)。
并發(fā)測試: 通過模擬多個用戶并發(fā)訪問一個應用或一個應用的某個功能英岭,同一個存儲過程毅人,或接口以及其他并發(fā)操作,測試程序是否支持多用戶訪問,是否存在死鎖,線程同步的問題科乎。
疲勞測試
軟件可靠性是軟件系統(tǒng)在規(guī)定的時間內(nèi)以及規(guī)定的環(huán)境條件下空闲,完成規(guī)定功能的能力。
1)測試一個系統(tǒng)失效后重新恢復原有功能、性能的能力纲刀,涉及兩個方面:①原有能力恢復的程度面褐;②原有能力恢復的速度
2)長時間(7*24)運行系統(tǒng)扼菠,檢查系統(tǒng)是否能穩(wěn)定運行墨坚,有沒有內(nèi)存泄漏等。