您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 > Jmeter
Jmeter使用實(shí)踐- 基礎(chǔ)介紹
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2016/5/18 14:22:24 ] 推薦標(biāo)簽:性能測(cè)試工具 LoadRunner

  隨著市場(chǎng)上推出越來(lái)越多的測(cè)試工具,大家使用起來(lái)也比較盲目,我個(gè)人而言,使用過(guò)LoadRunner和Jmeter
  很多人傾向于LoadRunner,因?yàn)長(zhǎng)R的功能更強(qiáng)大,其實(shí)工具的選擇,不在于工具本身有多強(qiáng)大,取決于我們的實(shí)際需求
  我接觸的項(xiàng)目基本都是web應(yīng)用,從性能測(cè)試需求的角度來(lái)說(shuō),性能測(cè)試工具需要具有以下一些特點(diǎn)
  1、支持HTTP/HTTPS協(xié)議,能夠發(fā)送HTTP/HTTPS請(qǐng)求
  2、可以實(shí)現(xiàn)不同的用戶場(chǎng)景,能夠根據(jù)實(shí)際業(yè)務(wù)模擬場(chǎng)景,對(duì)用戶的比例進(jìn)行合理分配
  3、支持事務(wù);
  4、支持參數(shù)化和關(guān)聯(lián);
  5、可以生成報(bào)告;
  既然Jmeter滿足以上特性,使用特別靈活,又是免費(fèi)的,所以我很明顯的偏向了JMeter
  以下是整理的相關(guān)jmeter的基礎(chǔ)介紹和一些術(shù)語(yǔ)
  1.基本介紹
  Jmeter是Apache組織的開(kāi)放源代碼項(xiàng)目,是功能和性能測(cè)試的工具,它是的Java應(yīng)用。Jmeter提供的操作界面支持多種配置和結(jié)果顯示。Jmeter能夠模擬對(duì)服務(wù)器或者網(wǎng)絡(luò)系統(tǒng)逐步加負(fù)載(壓測(cè)包括HTTP/FTP/JDBC/JAVA等)。Jmeter支持多線程并發(fā)取樣和單線程組對(duì)不同的功能同時(shí)取樣。Jmeter也可以作為Web服務(wù)器與瀏覽器之間的代理網(wǎng)關(guān),以便捕獲瀏覽器的請(qǐng)求和Web服務(wù)器的響應(yīng)。
  Jmeter包含4部分:
  負(fù)載發(fā)生器:用于產(chǎn)生負(fù)載,通常以多線程或多進(jìn)程的方式模擬用戶行為。
  用戶運(yùn)行器:通常是一個(gè)腳本運(yùn)行引擎,用戶運(yùn)行器附加在線程或進(jìn)程上,根據(jù)腳本要求模擬指定的用戶行為。
  資源生成器:用于生成測(cè)試過(guò)程中服務(wù)器、負(fù)載機(jī)的資源數(shù)據(jù)。
  報(bào)表生成器:根據(jù)測(cè)試分析結(jié)果生成報(bào)表,提供可視化的數(shù)據(jù)展現(xiàn)方式
  2.基礎(chǔ)元件介紹
  測(cè)試計(jì)劃是測(cè)試計(jì)劃是性能測(cè)試的起點(diǎn),其它元件都需要依賴測(cè)試計(jì)劃,是所有元件的容器
  2.1 線程Threads(Users)
  2.1.1線程組
  (1) 取樣錯(cuò)誤后要執(zhí)行的動(dòng)作
  a.繼續(xù):默認(rèn)選項(xiàng),出錯(cuò)后后續(xù)的線程繼續(xù)運(yùn)行
  b.Start Next Thread Loop:出錯(cuò)后啟動(dòng)下一組線程運(yùn)行
  c.停止線程:后續(xù)的線程停止運(yùn)行,但是會(huì)返回出錯(cuò)前的結(jié)果
  d.停止測(cè)試:與停止線程的差異在于不返回出錯(cuò)前的結(jié)果
  (2)線程數(shù):虛擬用戶數(shù),代表發(fā)送請(qǐng)求的用戶數(shù),一個(gè)線程數(shù)占用一個(gè)進(jìn)程或線程。
  (3)Ramp-Up Period(in seconds)-準(zhǔn)備時(shí)長(zhǎng)
  -所有線程在多少時(shí)間內(nèi)啟動(dòng),單位是秒,為0時(shí)代表一次請(qǐng)求即并發(fā)。如果線程數(shù)為5,Ramp-Up Period為10
  (4)循環(huán)次數(shù)
  -每個(gè)線程發(fā)送請(qǐng)求的次數(shù)。如果線程數(shù)為20,循環(huán)次數(shù)為100,那么每個(gè)線程發(fā)送100次請(qǐng)求,總 請(qǐng)求數(shù)是2000
  (5)Delay Thread Creation until needed:直到需要時(shí)延遲線程的創(chuàng)建
  (6)調(diào)度器:設(shè)定測(cè)試運(yùn)行時(shí)間
  2.2配置元件
  2.2.1 CSV Data Set Config
  參數(shù)化配置,一般用在數(shù)據(jù)驅(qū)動(dòng),通過(guò)文件來(lái)存儲(chǔ)測(cè)試數(shù)據(jù)。調(diào)用時(shí)也支持參數(shù)化一部分?jǐn)?shù)據(jù)。Jmeter參數(shù)化方式是一次讀入一行,分割后存入若干變量中交給一個(gè)線程處理。
  2.2.2 HTTP信息頭管理器
  2.2.3 HTTP Cookie管理器
  2.2.4 HTTP COOKIE Manager管理cookie
  每個(gè)Jmeter線程都有自己的session
  2.3前置處理器
  全局的參數(shù)設(shè)置,設(shè)置后每次請(qǐng)求前讀取的值,比如地址、端口、token
  2.4后置處理器(Post Processors)
  正則表達(dá)式提取器可以從請(qǐng)求的響應(yīng)結(jié)果中提取需要的內(nèi)容,從而實(shí)現(xiàn)關(guān)聯(lián)
  (1)引用名稱(chēng):外部引用時(shí)使用
  (2)正則表達(dá)式:提取的內(nèi)容需要用()括起來(lái)。
  (3)模板:使用$$引用起來(lái) ,值從1開(kāi)始
  (4)匹配數(shù)據(jù)(0代表隨機(jī)):0代表隨機(jī),-1代表所有,其余正整數(shù)代表將在已提取的內(nèi)容中匹配第 幾個(gè)內(nèi)容
  (5)缺省值:正則匹配失敗時(shí),取的值。
  2.5Sampler(取樣器)
  sampler是與服務(wù)器進(jìn)行交互的單元
  (1)HTTP請(qǐng)求
  (2)Web服務(wù)器
  (3)Http請(qǐng)求
  (4)Parameters參數(shù)
  2.6監(jiān)聽(tīng)器
  2.6.1 聚合報(bào)告
  聚合報(bào)告的相關(guān)指標(biāo):
  (1)Label:每個(gè) Jmeter 的 element (例如 HTTP Request )都有一個(gè) Name 屬性,這里顯示的是 Name 屬性的值。
  (2) #Samples:表示你這次測(cè)試中一共發(fā)出了多少個(gè)請(qǐng)求,如果測(cè)試計(jì)劃模擬10個(gè)用戶,每個(gè)用戶迭代10次,這里會(huì)顯示100。
  (3) Average:平均響應(yīng)時(shí)間,默認(rèn)情況下是單個(gè) Request 的平均響應(yīng)時(shí)間,使用了事務(wù)控制器后表示為整個(gè)事務(wù)的平均響應(yīng)時(shí)間。
  (4) Median: 50 %用戶的響應(yīng)時(shí)間。
  (5) 90% Line: 90 %用戶的響應(yīng)時(shí)間。
  6) Min:小響應(yīng)時(shí)間。
  (7) Max:大響應(yīng)時(shí)間。
  (8) Error%:錯(cuò)誤率,本次測(cè)試中出現(xiàn)錯(cuò)誤的請(qǐng)求的數(shù)量 / 請(qǐng)求的總數(shù)。
  (9) Throughput:吞吐量,默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)( Request per Second )。當(dāng)使用了 Transaction Controller 時(shí),也可以表示類(lèi)似 LoadRunner 的 Transaction per Second 數(shù) KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量,相當(dāng)于LoadRunner中的Throughput/Sec。
  (10) KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量。
  2.6.2 查看結(jié)果樹(shù)
  (1)Thread Name: 線程組名稱(chēng)
  (2)Sample Start: 啟動(dòng)開(kāi)始時(shí)間
  (3)Load time: 加載時(shí)長(zhǎng)
  (4)Latency: 等待時(shí)長(zhǎng)
  (5)Size in bytes: 發(fā)送的數(shù)據(jù)總大小
  (6)Headers size in bytes: 發(fā)送頭大小
  (7)Body size in bytes: 發(fā)送數(shù)據(jù)的其余部分大小
  (8)Sample Count: 發(fā)送統(tǒng)計(jì)
  (9)Error Count: 交互錯(cuò)誤統(tǒng)計(jì)
  (10)Response code: 返回碼
  (11)Response message: 返回信息
  (12)Response headers: 返回的頭部信息
  2.7斷言
  確定Jmeter有沒(méi)有按照預(yù)期工作,應(yīng)當(dāng)考慮使Jmeter提供的斷言,加到Sampler 里面可以對(duì)返回的結(jié)果進(jìn)行判斷,例如判斷HTTP返回結(jié)果里面是否含有某個(gè)字符串
  附上一張jmeter的界面截圖

相關(guān)鏈接:
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd