性能測試
1.1.性能測試是什么
基于協(xié)議模擬用戶發(fā)出請求,對服務(wù)器形成一定負(fù)載,來測試服務(wù)器的性能指標(biāo)是否
滿足要求
性能指標(biāo)關(guān)注點(diǎn):時(shí)間性能、空間性能
性能測試與頁面無關(guān)
性能測試定義:指通過自動(dòng)化的測試工具模擬多種正常、峰值以及異常負(fù)載條件來對
系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測試。
性能測試類型
1.基準(zhǔn)測試:在給系統(tǒng)施加較低壓力時(shí),查看系統(tǒng)的運(yùn)行狀況并記錄相關(guān)數(shù)做為基
礎(chǔ)參考
2.負(fù)載測試:是指對系統(tǒng)不斷地增加壓力或增加一定壓力下的持續(xù)時(shí)間,直到系統(tǒng)
的某項(xiàng)或多項(xiàng)性能指標(biāo)達(dá)到安全臨界值,例如某種資源已經(jīng)達(dá)到飽和狀態(tài)等。
3.壓力測試:壓力測試是評估系統(tǒng)處于或超過預(yù)期負(fù)載時(shí)系統(tǒng)的運(yùn)行情況,關(guān)注點(diǎn)
在于系統(tǒng)在峰值負(fù)載或超出最大載荷情況下的處理能力。
4.穩(wěn)定性測試(可靠性測試):在給系統(tǒng)加載一定業(yè)務(wù)壓力的情況下,使系統(tǒng)運(yùn)行
一段時(shí)間,以此檢測系統(tǒng)是否穩(wěn)定。24X3小時(shí)
5.并發(fā)測試:測試多個(gè)用戶同時(shí)訪問同一個(gè)應(yīng)用、同一個(gè)模塊或者數(shù)據(jù)記錄時(shí)是否
存在死鎖或者其他性能問題,
性能測試工具

Jmeter簡介
Jmeter的基本概念
ApacheJMeter是Apache組織開發(fā)的基于Java的壓力測試工具。
2.2.我們?yōu)槭裁词褂肑meter
開源,免費(fèi),基于Java編寫,可集成到其他系統(tǒng)可拓展各個(gè)功能插件
支持接口測試,壓力(負(fù)載和壓力)測試等多種功能,支持錄制回放,
入門簡單相較于自己編寫框架活其他開源工具,有較為完善的UI界面,便于接口調(diào)試
多平臺支持,可在Linux,Windows,Mac上運(yùn)行
支持多協(xié)議
2.3.Jmeter的作用
1.接口測試
2.性能測試
3.壓力測試
4.Web自動(dòng)化測試
5.數(shù)據(jù)庫測試
6.JAVA程序測試
2.4.Jmeter怎么用
Windows下Jmeter下載安裝登錄http://jmeter.apache.org/download_jmeter.cgi,根據(jù)自己平臺,下載對應(yīng)文件

安裝JAVA環(huán)境
安裝JDK,配置環(huán)境變量(具體步驟不做介紹)
將下載Jmeter文件解壓,打開/bin/jmeter.bat


/bin目錄(常用文件介紹)
examples:目錄下包含Jmeter使用實(shí)例
ApacheJMeter.jar:JMeter源碼包
jmeter.bat:windows下啟動(dòng)文件
jmeter.sh:Linux下啟動(dòng)文件
jmeter.log:Jmeter運(yùn)行日志文件
jmeter.properties:Jmeter配置文件
jmeter-server.bat:windows下啟動(dòng)負(fù)載生成器服務(wù)文件
jmeter-server:Linux下啟動(dòng)負(fù)載生成器文件
/docs目錄——Jmeter幫助文檔
/extras目錄——提供了對Ant的支持文件,可也用于持續(xù)集成
/lib目錄——存放Jmeter依賴的jar包,同時(shí)安裝插件也放于此目錄
/licenses目錄——軟件許可文件,不用管
/printable_docs目錄——Jmeter用戶手冊
使用Jmeter測試快速入門
線程組是什么
進(jìn)程:一個(gè)正在執(zhí)行的程序?qū)?yīng)一個(gè)進(jìn)程
線程:一個(gè)進(jìn)程有多個(gè)執(zhí)行線程
線程組:按照線程性質(zhì)對線程分組
三者關(guān)系:一個(gè)進(jìn)程有多個(gè)線程組,一個(gè)線程組有多個(gè)線程
測試計(jì)劃—線程組—線程組屬性中的線程數(shù)
并發(fā)執(zhí)行:多個(gè)線程同時(shí)執(zhí)行,特點(diǎn):執(zhí)行結(jié)束的順序與開始的順序不一致
順序執(zhí)行:按照線程的啟動(dòng)順序挨個(gè)執(zhí)行
默認(rèn)情況下,線程組中的線程是并發(fā)執(zhí)行
每一個(gè)線程都要執(zhí)行組內(nèi)的http請求
設(shè)置線程組順序執(zhí)行:勾選測試計(jì)劃中的(獨(dú)立運(yùn)行每個(gè)線程組)
線程組用來模擬用戶的并發(fā)訪問
創(chuàng)建線程組
線程組主要包含三個(gè)參數(shù):線程數(shù)、準(zhǔn)備時(shí)長(Ramp-UpPeriod(inseconds))、
循環(huán)次數(shù)。
1.1.3.線程數(shù):虛擬用戶數(shù)。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程。設(shè)置多少虛擬
用戶數(shù)在這里也就是設(shè)置多少個(gè)線程數(shù)。
1.1.4.準(zhǔn)備時(shí)長(秒):設(shè)置的虛擬用戶數(shù)需要多長時(shí)間全部啟動(dòng)。如果線程數(shù)
為20,準(zhǔn)備時(shí)長為10,那么需要10秒鐘啟動(dòng)20個(gè)線程。也就是每秒鐘啟動(dòng)
2個(gè)線程。
1.1.5.循環(huán)次數(shù):每個(gè)線程發(fā)送請求的次數(shù)。如果線程數(shù)為20,循環(huán)次數(shù)為100,
那么每個(gè)線程發(fā)送100次請求??傉埱髷?shù)為20*100=2000。如果勾選了“永遠(yuǎn)”,
那么所有線程會一直發(fā)送請求,一到選擇停止運(yùn)行腳本。
1.1.6..調(diào)度器:設(shè)置線程組啟動(dòng)的開始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí),需要勾選
循環(huán)次數(shù)為永遠(yuǎn))
1.1.7.持續(xù)時(shí)間(秒):測試持續(xù)時(shí)間,會覆蓋結(jié)束時(shí)間
1.1.8.啟動(dòng)延遲(秒):測試延遲啟動(dòng)時(shí)間,會覆蓋啟動(dòng)時(shí)間
1.1.9.啟動(dòng)時(shí)間:測試啟動(dòng)時(shí)間,啟動(dòng)延遲會覆蓋它。當(dāng)啟動(dòng)時(shí)間已過,手動(dòng)只需測
試時(shí)當(dāng)前時(shí)間也會覆蓋它。
1.1.10.結(jié)束時(shí)間:測試結(jié)束時(shí)間,持續(xù)時(shí)間會覆蓋它。
一個(gè)HTTP請求有著許多的配置參數(shù),下面將詳細(xì)介紹:
名稱:本屬性用于標(biāo)識一個(gè)取樣器,建議使用一個(gè)有意義的名稱。
注釋:對于測試沒有任何作用,僅用戶記錄用戶可讀的注釋信息。
服務(wù)器名稱或IP:HTTP請求發(fā)送的目標(biāo)服務(wù)器名稱或IP地址。
端口號:目標(biāo)服務(wù)器的端口號。
方法:發(fā)送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、
DELETE等。
Contentencoding:內(nèi)容的編碼方式,默認(rèn)值為iso8859
路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口)
測試計(jì)劃
1.測試計(jì)劃就是一個(gè)完整的場景
2.“獨(dú)立運(yùn)行每個(gè)線程組”:勾選以后所有的線程組都是順序執(zhí)行的了。一般不勾
選,讓所有的線程組并發(fā)啟動(dòng)。
3.“函數(shù)測試模式”:勾選后會有詳細(xì)的請求記錄,消耗資源,影響客戶端性能。
一般不勾選。
4.用戶定義的變量:全局變量,測試計(jì)劃上可以添加用戶定義的變量。一般添加一
些系統(tǒng)常用的配置。如果測試過程中想切換環(huán)境,切換配置,一般不建議在測試計(jì)劃上添加變量
(1)、threadgroup(線程組)
這個(gè)就是我們通常添加運(yùn)行的線程。通俗的講一個(gè)線程組,可以看做一個(gè)虛擬用
戶組,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶。
(2)、setupthreadgroup
一種特殊類型的ThreadGroup的,可用于執(zhí)行預(yù)測試操作。這些線程的行為完全
像一個(gè)正常的線程組元件。不同的是,這些類型的線程執(zhí)行測試前進(jìn)行定期線程組的
執(zhí)行;類似LoadRunner的init,測試開始時(shí)進(jìn)行初始化的工作。
(3)、teardownthreadgroup
一種特殊類型的ThreadGroup的,可用于執(zhí)行測試后動(dòng)作。這些線程的行為完全
像一個(gè)正常的線程組元件。不同的是,這些類型的線程執(zhí)行測試結(jié)束后執(zhí)行定期的線
程組;類似LoadRunnner的end,測試結(jié)束時(shí)進(jìn)行回收工作。