性能測(cè)試培訓(xùn)(LoadRunner、JMeter、性能調(diào)優(yōu))_第1頁
性能測(cè)試培訓(xùn)(LoadRunner、JMeter、性能調(diào)優(yōu))_第2頁
性能測(cè)試培訓(xùn)(LoadRunner、JMeter、性能調(diào)優(yōu))_第3頁
性能測(cè)試培訓(xùn)(LoadRunner、JMeter、性能調(diào)優(yōu))_第4頁
性能測(cè)試培訓(xùn)(LoadRunner、JMeter、性能調(diào)優(yōu))_第5頁
已閱讀5頁,還剩130頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

性能測(cè)試培訓(xùn)(LoadRunner、JMeter、性能調(diào)優(yōu))第一頁,共135頁。1、性能測(cè)試基礎(chǔ)2、Loadrunner工具介紹

2.1、Loadrunner之VirtualUserGenerator

2.2、Loadrunner之Controller

2.3、Loadrunner之Analysis3、Jmeter工具介紹

3.1、Jmeter概要3.2、Jmeter腳本錄制

3.3、Jmeter測(cè)試實(shí)踐4、影響系統(tǒng)性能的因素5、性能調(diào)優(yōu)培訓(xùn)章程第二頁,共135頁。性能測(cè)試是什么?使用自動(dòng)化測(cè)試工具對(duì)產(chǎn)品按一定的性能指標(biāo)進(jìn)行測(cè)試,解決性能瓶頸,給用戶最好的體驗(yàn)。性能測(cè)試的時(shí)代背景,作用?大數(shù)據(jù)時(shí)代、網(wǎng)址(百度、淘寶、京東)、軟件(微信、QQ)、游戲(手游、頁游、端游)、金融(銀行、證券系統(tǒng))、教育(教務(wù)系統(tǒng))、交通(12306)通過性能測(cè)試,來保證以上系統(tǒng)的能夠給用戶更好的使用體驗(yàn)!性能測(cè)試基礎(chǔ)第三頁,共135頁。性能測(cè)試基本流程項(xiàng)目經(jīng)理、業(yè)務(wù)/框架專家、產(chǎn)品經(jīng)理、高級(jí)性能測(cè)試工程師、開發(fā)經(jīng)理性能測(cè)試需求分析項(xiàng)目經(jīng)理、框架專家、產(chǎn)品經(jīng)理、高級(jí)性能測(cè)試工程師性能測(cè)試計(jì)劃性能測(cè)試工程師、外部支持(網(wǎng)絡(luò)工程師、系統(tǒng)管理員)性能測(cè)試準(zhǔn)備開發(fā)腳本/執(zhí)行測(cè)試高級(jí)性能測(cè)試工程師、性能測(cè)試工程師測(cè)試結(jié)果分析高級(jí)性能測(cè)試工程師、外部支持(系統(tǒng)管理員、DBA)系統(tǒng)調(diào)優(yōu)框架師、產(chǎn)品經(jīng)理、高級(jí)性能測(cè)試工程師、外部支持(DBA)編寫測(cè)試報(bào)告性能測(cè)試工程師、高級(jí)性能測(cè)試工程師第四頁,共135頁。響應(yīng)時(shí)間(Responsetime)響應(yīng)時(shí)間就是用戶感受軟件系統(tǒng)為其服務(wù)所耗費(fèi)的時(shí)間,對(duì)應(yīng)網(wǎng)站系統(tǒng)來說,響應(yīng)時(shí)間就是從點(diǎn)擊一個(gè)頁面計(jì)時(shí)開始,到這個(gè)頁面完全在瀏覽器里展現(xiàn)計(jì)時(shí)結(jié)束的這一段時(shí)間間隔。響應(yīng)時(shí)間:2-5-8原則當(dāng)用戶在2-5秒之間得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)的響應(yīng)速度還可以;當(dāng)用戶在5-8秒以內(nèi)得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)的響應(yīng)速度很慢,但是還可以接受;而當(dāng)用戶在超過8秒后仍然無法得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)非常慢,這樣的系統(tǒng)一般不會(huì)被接受。(有研究顯示,當(dāng)網(wǎng)站的加載時(shí)間延遲1秒,那么會(huì)有1/4的用戶流失。)性能測(cè)試常用指標(biāo)第五頁,共135頁。吞吐量(Throughput)指在單位時(shí)間內(nèi)客戶端和服務(wù)器成功發(fā)送數(shù)據(jù)的數(shù)量。如網(wǎng)上下載文件,客戶端向服務(wù)器發(fā)送下載請(qǐng)求,服務(wù)器發(fā)送文件內(nèi)容到客戶端,這個(gè)過程所產(chǎn)生的數(shù)據(jù)就為吞吐量,吞吐量越大越好。資源使用率(TresourceUtilization)常見的資源有:CPU占用率、內(nèi)存使用率、磁盤I/O、網(wǎng)絡(luò)I/O。每秒點(diǎn)擊數(shù)(Hitspersecond)指客戶端每秒鐘向服務(wù)器提交的請(qǐng)求數(shù)量,如果客戶端發(fā)送的請(qǐng)求數(shù)量越多,之間相對(duì)的平均吞吐量也應(yīng)該越大。性能測(cè)試常用指標(biāo)第六頁,共135頁。并發(fā)用戶數(shù)(Concurrentusers)指在客戶端的一批用戶同時(shí)執(zhí)行一個(gè)操作的數(shù)量。并發(fā)數(shù)反應(yīng)了軟件系統(tǒng)的并發(fā)處理能力。兩種錯(cuò)誤理解:1、使用系統(tǒng)的全部用戶的數(shù)量2、用戶在線數(shù)量(不做任何操作的用戶)性能測(cè)試常用指標(biāo)第七頁,共135頁。如果要做性能測(cè)試,傳統(tǒng)方式該怎么做呢?傳統(tǒng)性能測(cè)試方式-不精確、不嚴(yán)謹(jǐn)。Loadrunner安裝、組件介紹Loadrunner介紹腳本錄制、編輯、調(diào)試,支持最好的是C語言,也支持Java、C#、python等。壓測(cè)場(chǎng)景,設(shè)置并發(fā)等參數(shù),運(yùn)行期間提供多種圖標(biāo)的實(shí)時(shí)展示。結(jié)果分析,圖表維度、值等結(jié)果參數(shù)的展示及整合。第八頁,共135頁。Loadruner自帶的自學(xué)網(wǎng)站。啟動(dòng)網(wǎng)站:LoadrunnerSample/網(wǎng)址登錄賬號(hào):用戶名:jojo密碼:bean第九頁,共135頁。1.提示1080端口被占用。Cmd:輸入命令netstat

–ano查找各端口所在進(jìn)程的PID,找到1080的程序PID,在自由管理器中將其關(guān)閉,再重啟服務(wù)。2.Internalerror:yourrequestwasunsuccessfulCatcreateCGIprocess–programnotfound安裝strawberry-perl-,和lr安裝在一個(gè)盤符。LoadrunnerSample不能訪問解決方法第十頁,共135頁。VirtualUserGenerator-創(chuàng)建測(cè)試腳本123第十一頁,共135頁。VirtualUserGenerator-步驟把操作轉(zhuǎn)換為腳本語言。檢查轉(zhuǎn)換腳本語言是否正確。設(shè)置注釋、事務(wù)、參數(shù)化、時(shí)間間隔等。設(shè)置負(fù)載場(chǎng)景。第十二頁,共135頁。VirtualUserGenerator-錄制腳本準(zhǔn)備工作第十三頁,共135頁。VirtualUserGenerator-Init、Action、EndInit錄制的一般是業(yè)務(wù)流程開始之前的初始化工作(如登錄、服務(wù)器初始化)。Action錄制的一般是業(yè)務(wù)流程操作的事件。End錄制的一般是退出的時(shí)候執(zhí)行的操作。(如用戶退出、注銷)init和end不能迭代多次,只能運(yùn)行一次,action可以迭代多次運(yùn)行。如果測(cè)試需求沒有對(duì)業(yè)務(wù)流程設(shè)置重復(fù)的要求,可以都放在action部分。有重復(fù)的要求,如要求一個(gè)用戶登錄之后要求重復(fù)訂票10次,就需要把訂票部分的腳本放在action之中進(jìn)行迭代。登錄部分腳本放在init,退出部分放在end。第十四頁,共135頁。VirtualUserGenerator-腳本錄制測(cè)試需求:登錄WebTours訂票網(wǎng)站,預(yù)定一張機(jī)票后退出。腳本錄制操作步驟:1、啟動(dòng)Web服務(wù)器。2、打開VirtualUserGenerator界面。3、選擇腳本協(xié)議。4、進(jìn)行頁面操作。5、回放驗(yàn)證。6、增強(qiáng)腳本。具體觀看演示。第十五頁,共135頁。VirtualUserGenerator-運(yùn)行時(shí)設(shè)置介紹第十六頁,共135頁。VirtualUserGenerator-回放結(jié)果刷選器進(jìn)行篩選第十七頁,共135頁。VirtualUserGenerator-設(shè)置關(guān)聯(lián)許多應(yīng)用程序都使用動(dòng)態(tài)值,每次使用應(yīng)用程序時(shí)這些值都會(huì)變化,例如,有些服務(wù)器會(huì)為每個(gè)新會(huì)話分配一個(gè)唯一的會(huì)話ID。回放錄制會(huì)話時(shí),應(yīng)用程序創(chuàng)建新會(huì)話ID與錄制的會(huì)話ID不同。LoadRunner通過關(guān)聯(lián)解決這種問題。關(guān)聯(lián)將動(dòng)態(tài)值保存到參數(shù)中。運(yùn)行模擬場(chǎng)景時(shí),Vuser并不使用錄制的值,而是使用服務(wù)器分配的新的會(huì)話ID。第十八頁,共135頁。VirtualUserGenerator-HTML模式與URL模式模式選擇菜單:工具/錄制選項(xiàng)/錄制第十九頁,共135頁。VirtualUserGenerator-HTML模式與URL模式在默認(rèn)情況下,選擇HTML模式,這種方式的腳本容易維護(hù),容易理解,推薦使用這種方式錄制腳本。URL模式說明:腳本中的表示采用基于URL的方式,所有的HTTP請(qǐng)求都會(huì)被錄制下來,單獨(dú)生成函數(shù),所以URL模式生成的腳本會(huì)顯示得比較雜亂。URL錄制的腳本中Web_concurrent_start函數(shù)是并發(fā)組開始的標(biāo)記,Web_concurrent_end是并發(fā)組的結(jié)束標(biāo)記。在并發(fā)組中的函數(shù)不是立即執(zhí)行的。在并發(fā)組開始時(shí),所有的函數(shù)首先被記錄下來,當(dāng)并發(fā)組結(jié)束時(shí),所有的函數(shù)并發(fā)執(zhí)行。演示URL錄制方式第二十頁,共135頁。VirtualUserGenerator-HTML模式與URL模式選擇HTML還是URL錄制,有以下參考原則:1、基于瀏覽器的應(yīng)用程序推薦使用HTML模式。2、不是基于瀏覽器的應(yīng)用程序推薦使用URL模式。3、如果基于瀏覽器的應(yīng)用程序中包含了javascript并且該腳本向服務(wù)器產(chǎn)生了請(qǐng)求

使用URL模式。4、基于瀏覽器的應(yīng)用程序中使用了HTTPS安全協(xié)議,使用URL方式錄制。第二十一頁,共135頁。VirtualUserGenerator-添加事務(wù)定義:事務(wù)(Transaction),為了衡量某個(gè)操作的性能,需要在操作的開始和結(jié)束位置插入這樣的一個(gè)范圍,這就定義了一個(gè)transaction。原因:從性能測(cè)試的角度出發(fā),我們需要知道不同的操作所花費(fèi)的時(shí)間,這樣我們就可以衡量不同操作對(duì)被測(cè)系統(tǒng)所造成的影響,那么我們?nèi)绾沃啦煌僮魉ㄙM(fèi)的時(shí)間,這就用到了事務(wù),我們?cè)诓僮髦安迦胍粋€(gè)事務(wù)開始標(biāo)識(shí),在操作完成后插入一個(gè)事務(wù)結(jié)束標(biāo)識(shí),這樣我們就知道了這個(gè)操作所花費(fèi)的時(shí)間。作用:LoadRunner運(yùn)行到該事務(wù)的開始時(shí),lr就會(huì)開始計(jì)時(shí),直到運(yùn)行到該事務(wù)的結(jié)束點(diǎn),計(jì)時(shí)結(jié)束。這個(gè)事務(wù)的運(yùn)行時(shí)間在lr的運(yùn)行結(jié)果中會(huì)反映出來,通俗的講lr中第二十二頁,共135頁。VirtualUserGenerator-添加事務(wù)的事務(wù)就是一個(gè)計(jì)時(shí)的標(biāo)識(shí),lr在運(yùn)行過程中一旦發(fā)現(xiàn)事務(wù)開始標(biāo)識(shí),就開始計(jì)時(shí),一旦發(fā)現(xiàn)事務(wù)的結(jié)束標(biāo)識(shí),則計(jì)時(shí)結(jié)束,這個(gè)過程中得到的時(shí)間即為一個(gè)事務(wù)時(shí)間。通常事務(wù)時(shí)間反應(yīng)的是一個(gè)操作過程的響應(yīng)時(shí)間。函數(shù)構(gòu)造:事務(wù)開始函數(shù)共包括一個(gè)參數(shù),就是事務(wù)名稱,事務(wù)結(jié)束函數(shù)共包括兩個(gè)參數(shù),第一個(gè)參數(shù)是事務(wù)名稱,第二個(gè)參數(shù)是事務(wù)的狀態(tài),事務(wù)狀態(tài)可以分為LR_PASS:返回PASS;LR_FAIL:返回Fail;LR_STOP:返回Stop;LR_AUTO:自動(dòng)返回檢測(cè)到的狀態(tài)。Duration表示事務(wù)的完成響應(yīng)時(shí)間,wastedtime包括事務(wù)中函數(shù)自身執(zhí)行所消耗的時(shí)間。演示添加事務(wù),兩種方式…第二十三頁,共135頁。VirtualUserGenerator-添加事務(wù)注意:在應(yīng)用事務(wù)的過程中,不要將思考時(shí)間(lr_think_time函數(shù))放在事務(wù)開始和結(jié)束之間,否則在回放思考時(shí)間設(shè)置被允許的情況下,思考時(shí)間將被算入事務(wù)的執(zhí)行時(shí)間,從而影響對(duì)事務(wù)的執(zhí)行時(shí)間的分析和統(tǒng)計(jì)。第二十四頁,共135頁。VirtualUserGenerator-腳本參數(shù)化第二十五頁,共135頁。VirtualUserGenerator-腳本參數(shù)屬性介紹選擇下一行:

順序(Sequence):按照參數(shù)化得數(shù)據(jù)順序,一個(gè)一個(gè)的來取。

隨機(jī)(Random):參數(shù)化中的數(shù)據(jù),每次隨機(jī)的從中抽取數(shù)據(jù)。

唯一(Unique):為每個(gè)虛擬用戶分配一條唯一的數(shù)據(jù)。更新值的時(shí)間:每次迭代(Eachiteration):每次迭代時(shí)取新的值。每次出現(xiàn)(Eachoccurrence):每次參數(shù)化時(shí)取新的值,這里強(qiáng)調(diào)前后兩次

取值不能相同。只取一次(once):參數(shù)化中的數(shù)據(jù),一條數(shù)據(jù)只能被抽取一次。以上兩個(gè)屬性組合就有9種方式,這里不一一進(jìn)行說明,可以親自嘗試看效果。第二十六頁,共135頁。VirtualUserGenerator-設(shè)置檢查點(diǎn)內(nèi)容檢查菜單:Vuser/運(yùn)行時(shí)設(shè)置/Internet協(xié)議/內(nèi)容檢查第二十七頁,共135頁。VirtualUserGenerator-設(shè)置檢查點(diǎn)第二十八頁,共135頁。VirtualUserGenerator-日志解析1、回放日志(Replaylog):腳本回放運(yùn)行時(shí)輸出都記錄在這個(gè)log里輸出窗口的回放日志顯示得消息用于描述Vuser運(yùn)行時(shí)執(zhí)行的操作,該信息可以說明在方案中執(zhí)行腳本時(shí),該腳本的運(yùn)行方式,腳本執(zhí)行完成后,可以檢查回放日志中的消息,以查看腳本在運(yùn)行時(shí)是否發(fā)生了錯(cuò)誤。回放日志中使用了不同的顏色的文本。黑色:標(biāo)準(zhǔn)輸出消息。紅色:標(biāo)準(zhǔn)錯(cuò)誤消息。綠色:用引號(hào)括起來的文字字串(例如URL)。藍(lán)色:事務(wù)信息(開始、結(jié)束、狀態(tài)和持續(xù)時(shí)間)。橙色:迭代次數(shù)信息。如果雙擊以操作名開始的行,光標(biāo)將會(huì)跳轉(zhuǎn)到生成腳本中的相應(yīng)步驟上。第二十九頁,共135頁。VirtualUserGenerator-日志解析2、錄制日志當(dāng)錄制腳本時(shí),Vugen會(huì)捕捉Client端(瀏覽器)與Server端(服務(wù)器)之間的對(duì)話,并且通過日志記錄下來,產(chǎn)生腳本。在Vugen的RecordingLog中,我們可以找到瀏覽器與服務(wù)器之間的所有對(duì)話,包括通信內(nèi)容、日期、時(shí)間、瀏覽器請(qǐng)求、服務(wù)器的響應(yīng)內(nèi)容等。3、生成日志記錄了腳本的設(shè)置、網(wǎng)絡(luò)事件到腳本函數(shù)的轉(zhuǎn)換過程。第三十頁,共135頁。VirtualUserGenerator-錯(cuò)誤處理函數(shù)錯(cuò)誤處理設(shè)置:Vuser/運(yùn)行時(shí)設(shè)置/常規(guī)/其他第三十一頁,共135頁。VirtualUserGenerator-錯(cuò)誤處理函數(shù)VuGen提供了錯(cuò)誤處理函數(shù)lr_continue_on_error,用來在腳本中實(shí)時(shí)修改Vuser的錯(cuò)誤設(shè)置。lr_continue_on_error函數(shù)的語法結(jié)構(gòu)如下:voidlr_continue_on_error(intvalue);Value是腳本運(yùn)行出錯(cuò)設(shè)置的取值,具體取值及相應(yīng)值得含義如下表所示。在使用表中的參數(shù)時(shí),既可以使用常量名稱作為參數(shù),也可以直接使用對(duì)應(yīng)常量值作為參數(shù)。常量名稱常量值含義LR_ON_ERROR_NO_OPTIONS0取消出錯(cuò)繼續(xù)執(zhí)行設(shè)置LR_ON_ERROR_CONTINUE1發(fā)生錯(cuò)誤繼續(xù)運(yùn)行腳本LR_ON_ERROR_SKIP_TO_NEXT_ACTCION2發(fā)生錯(cuò)誤跳轉(zhuǎn)到下一個(gè)actionLR_ON_ERROR_SKIP_TO_NEXT_ITERATION3發(fā)生錯(cuò)誤跳轉(zhuǎn)到下一個(gè)迭代LR_ON_ERROR_END_VUSER4發(fā)生錯(cuò)誤結(jié)束當(dāng)前用戶第三十二頁,共135頁。VirtualUserGenerator-錯(cuò)誤處理函數(shù)lr_continue_on_error調(diào)用后將對(duì)其后面所有的語句產(chǎn)生影響。因此腳本中較常用的是lr_continue_on_error(0)與lr_continue_on_error(1),這兩個(gè)語句成對(duì)出現(xiàn),期間包含著需要設(shè)置為發(fā)生錯(cuò)誤停止執(zhí)行的關(guān)鍵業(yè)務(wù)腳本。這種設(shè)置比較適合壓力較大且在夜間自動(dòng)運(yùn)行的測(cè)試場(chǎng)景,而這類場(chǎng)景通常會(huì)在run-time-settings中開啟continueonerror選項(xiàng),因此需要通過lr_continue_on_error(0)關(guān)閉continueonerror選項(xiàng),使一些關(guān)鍵業(yè)務(wù)發(fā)生錯(cuò)誤停止執(zhí)行。對(duì)于一些非關(guān)鍵的業(yè)務(wù),則需要通過lr_continue_on_error(1)開啟continueonerror選項(xiàng),這樣即使遇到錯(cuò)誤也不會(huì)影響腳本的繼續(xù)執(zhí)行。第三十三頁,共135頁。VirtualUserGenerator-腳本編寫最佳實(shí)踐有過開發(fā)經(jīng)驗(yàn)的朋友都知道,程序的開發(fā)大多不是一蹴而就的,通常要經(jīng)過編碼、代碼評(píng)審和測(cè)試等流程后,才能趨于穩(wěn)定。而VU腳本本身雖然不復(fù)雜,但VU腳本運(yùn)行往往涉及到多個(gè)因素,也會(huì)經(jīng)常出問題。提早發(fā)現(xiàn)和解決腳本中的問題不僅從技術(shù)上下功夫,在流程上也要做文章。通常驗(yàn)證一個(gè)腳本的比較好的過程是這樣的:1、Generate:錄制或開發(fā)腳本。2、SUSI(SingleusersingleIteration單用戶單循環(huán)):運(yùn)行錄制生成腳本,解

決可能存在的關(guān)聯(lián)問題。3、SUMI(SingleUserMultiIteration單用戶多循環(huán)):參數(shù)化腳本,在runtime

中設(shè)置iteration,再次運(yùn)行,驗(yàn)證參數(shù)化問題。4、MUSI(MultiUserSingleIteration多用戶單循環(huán)):controller里多用戶運(yùn)行

腳本,驗(yàn)證腳本中可能的多線程同步問題。5、MUMI(MultiUserMultiIteration多用戶多循環(huán)):即性能測(cè)試開始。其中1-3是在VU中進(jìn)行,4-5是在Controller中進(jìn)行。第三十四頁,共135頁。VirtualUserGenerator-常見報(bào)錯(cuò)處理方法1、LoadRunner錄制腳本時(shí)為什么不能彈出IE瀏覽器當(dāng)一臺(tái)主機(jī)安裝多個(gè)瀏覽器時(shí),LoadRunner錄制腳本經(jīng)??赡苡龅讲荒艽蜷_瀏覽器的情況,可以用下面的方法來解決:?jiǎn)?dòng)瀏覽器,打開Internet選項(xiàng)對(duì)話框,切換到高級(jí)標(biāo)簽,去掉“啟用第三方瀏覽器擴(kuò)展(需重新啟動(dòng))”的勾選,然后運(yùn)行VuGen即可解決。提示:通常安裝Firefox等瀏覽器后,都會(huì)勾選上面的選項(xiàng),導(dǎo)致不能正常錄制。2、錄制Web腳本時(shí),生成的腳本中存在亂碼該如何解決錄制腳本前,打開錄制選項(xiàng)配置對(duì)話框Record-Options,進(jìn)入到Advanced標(biāo)簽,先勾選“Supportcharset”,然后選擇中支持UTF-8。再次錄制,就不會(huì)出現(xiàn)亂碼問題了。第三十五頁,共135頁。VirtualUserGenerator-常見報(bào)錯(cuò)處理方法3、Error-26377:No

matchfoundfortherequestparameter“CorrelationParameter1”Checkwhethertherequestedboundariesexistintherequestdata.Also,ifthedatayouWanttosaveexceeds1024bytes,useweb_set_max_html_param_lentoincreasetheParametersize.第一種方法:參數(shù)化前面把web_set_max_html_param_len(999999)值加大第二種方法:在關(guān)聯(lián)函數(shù)添加“NotFound=warning”第三十六頁,共135頁。VirtualUserGenerator-常見報(bào)錯(cuò)處理方法4、錄制的腳本為空(1)、選擇的協(xié)議不對(duì),需要和開發(fā)人員溝通(2)、沒有選擇jar包(3)、檢查防火墻殺毒軟件5、Actionc(16):Error–27728:Steodownloadtimeout(120seconds)hasexpiredWhendownloadingnon-resource(s)。錯(cuò)誤分析:對(duì)應(yīng)HTTP協(xié)議,默認(rèn)的超時(shí)時(shí)間是120秒,客戶端發(fā)送一個(gè)請(qǐng)求到服務(wù)

器端,如果超過120秒服務(wù)器端還沒有返回結(jié)果,則出現(xiàn)超時(shí)錯(cuò)誤。解決方法:首先在運(yùn)行環(huán)境中對(duì)超時(shí)進(jìn)行設(shè)置,默認(rèn)的超時(shí)時(shí)間可以設(shè)置長一些,

再設(shè)置多次迭代運(yùn)行,如果還有超時(shí)現(xiàn)象,需要在“RuntimeSetting/

InternetProtocol:Preferences/Advanced/Option”修改HTTP-requestconnecttimeout,HTTP-requesttimeout,Stepdownloadtimeout的值,

再回復(fù)是否成功。第三十七頁,共135頁。Controller-簡(jiǎn)介當(dāng)虛擬用戶腳本開發(fā)完成后,使用Controller將這個(gè)執(zhí)行腳本的用戶從單用戶轉(zhuǎn)化為多用戶,從而模擬大量用戶操作,進(jìn)而形成負(fù)載。(多用戶單循環(huán),多用戶多循環(huán))我們需要對(duì)負(fù)載模擬的方式和特征進(jìn)行配置從而形成場(chǎng)景。場(chǎng)景(Scenario)是一種用來模擬大量用戶操作的技術(shù)手段,通過配置和執(zhí)行場(chǎng)景想服務(wù)器產(chǎn)生負(fù)載,驗(yàn)證系統(tǒng)各項(xiàng)性能指標(biāo)是否達(dá)到用戶要求,而Controller可以幫助我們對(duì)場(chǎng)景的設(shè)計(jì)、執(zhí)行及監(jiān)控進(jìn)行管理。使用Controller管理場(chǎng)景主要分為:場(chǎng)景設(shè)計(jì)、場(chǎng)景監(jiān)控。最后通過運(yùn)行場(chǎng)景完成性能測(cè)試的執(zhí)行。第三十八頁,共135頁。Controller-簡(jiǎn)介手工場(chǎng)景(ManualScenario)自行設(shè)置虛擬用戶的變化,通過設(shè)計(jì)用戶的添加和減少的過程,來模擬真實(shí)的用戶請(qǐng)求模型,完成負(fù)載的生成手工場(chǎng)景是“定量型”性能測(cè)試,掌握負(fù)載的變化過程中系統(tǒng)各個(gè)組件的變化情況,定位性能瓶頸并了解系統(tǒng)的處理能力,一般在負(fù)載測(cè)試和壓力測(cè)試中應(yīng)用。手工場(chǎng)景的核心就是設(shè)置“用戶負(fù)載方式”。第三十九頁,共135頁。Controller-場(chǎng)景設(shè)置演示場(chǎng)景設(shè)置…第四十頁,共135頁。Controller-場(chǎng)景計(jì)劃方式與運(yùn)行模式手工場(chǎng)景-計(jì)劃方式Scenario(場(chǎng)景):多個(gè)腳本之間按照設(shè)定

的場(chǎng)景計(jì)劃來統(tǒng)一運(yùn)行。Group(組):多個(gè)腳本之間按照獨(dú)立設(shè)置模式跑,各個(gè)腳本可以單獨(dú)設(shè)置虛擬用

戶、運(yùn)行時(shí)間等。手工場(chǎng)景-運(yùn)行模式Realworldschedule(實(shí)際計(jì)劃):可以通過AddAction來添加多個(gè)用戶的變化過

程,包括多次負(fù)載用戶增加用戶,持續(xù)時(shí)間,

停止用戶。Basicschedule(基本計(jì)劃):經(jīng)典模式,只能設(shè)置一次負(fù)載運(yùn)行的虛擬用戶配置

,不能添加多個(gè)用戶變化過程。第四十一頁,共135頁。Controller-目標(biāo)場(chǎng)景設(shè)置一個(gè)運(yùn)行目標(biāo),通過Controller的自動(dòng)加載功能進(jìn)行自動(dòng)化負(fù)載,如果測(cè)試的結(jié)果達(dá)到目標(biāo),說明系統(tǒng)的性能符合測(cè)試目標(biāo),否則就提示無法達(dá)到目標(biāo)。第四十二頁,共135頁。Controller-目標(biāo)場(chǎng)景設(shè)置一個(gè)運(yùn)行目標(biāo),通過Controller的自動(dòng)加載功能進(jìn)行自動(dòng)化負(fù)載,如果測(cè)試的結(jié)果達(dá)到目標(biāo),說明系統(tǒng)的性能符合測(cè)試目標(biāo),否則就提示無法達(dá)到目標(biāo)。第四十三頁,共135頁。Controller-目標(biāo)場(chǎng)景設(shè)置第四十四頁,共135頁。Controller-目標(biāo)場(chǎng)景設(shè)置目標(biāo)場(chǎng)景的5種目標(biāo)類型:VirtualUsers:該參數(shù)表示虛擬用戶數(shù),驗(yàn)證被測(cè)系統(tǒng)所需要支持的用戶數(shù)。HitperSecond:該參數(shù)標(biāo)識(shí)每秒點(diǎn)擊數(shù),是指一秒鐘能做到的目標(biāo)請(qǐng)求數(shù)目,即

客戶端產(chǎn)生的每秒請(qǐng)求數(shù)(正常情況下=服務(wù)器請(qǐng)求響應(yīng)數(shù))。TransactionperSecond:該參數(shù)表示每秒事務(wù)數(shù),一個(gè)事務(wù)代表一個(gè)操作,反應(yīng)

系統(tǒng)的處理能力。TransactionResponseTime:該參數(shù)表示事務(wù)的響應(yīng)時(shí)間,反應(yīng)系統(tǒng)的處理速度

以及一個(gè)操作花費(fèi)的時(shí)間。PagesperMinute:該參數(shù)表示每分鐘頁面的刷新次數(shù),反應(yīng)系統(tǒng)每分鐘提供的頁

面處理能力,代表了系統(tǒng)的整體處理能力。第四十五頁,共135頁。Controller-負(fù)載生成器管理對(duì)場(chǎng)景進(jìn)行設(shè)計(jì)后,需要對(duì)負(fù)載生成器進(jìn)行管理和配置。LoadGenerator是運(yùn)行腳本的負(fù)載引擎,相當(dāng)于加壓機(jī),主要功能是生成虛擬用戶進(jìn)行負(fù)載,在默認(rèn)情況下使用本地的負(fù)載生成器來運(yùn)行腳本。但是每生成一個(gè)虛擬用戶,需要花費(fèi)負(fù)載生成器大約2M-3M的內(nèi)存空間。通常運(yùn)行Controller的主機(jī)很少用作負(fù)載生成器。負(fù)載生成器的工作由其他裝有LRAgent的PC來擔(dān)任。如果負(fù)載生成器內(nèi)存大使用大于了70%,負(fù)載生成器就會(huì)變成系統(tǒng)的瓶頸,導(dǎo)致性能測(cè)試成績(jī)下降。這種問題需要添加負(fù)載生成器來解決。所以在一臺(tái)電腦上無法模擬大量的虛擬用戶,這個(gè)時(shí)候需要調(diào)用多個(gè)LoadGenerator來完成大規(guī)模的性能負(fù)載。第四十六頁,共135頁。Controller-負(fù)載運(yùn)行時(shí)設(shè)置具體觀看演示。第四十七頁,共135頁。Controller-手工場(chǎng)景負(fù)載界面具體觀看演示。第四十八頁,共135頁。Controller-Windows資源性能常用計(jì)數(shù)器%TotalProcessorTime該計(jì)數(shù)器用于體現(xiàn)服務(wù)器整體的處理器利用率,對(duì)應(yīng)多

處理器系統(tǒng)而言,該計(jì)數(shù)器體現(xiàn)的是所有CPU的平均利用率,如果該值的數(shù)值持續(xù)超過90%,則可以說明整體系統(tǒng)面臨處理器方面的瓶頸,需要通過增加處理器來提供性能。Operation/sec計(jì)算機(jī)對(duì)文件系統(tǒng)進(jìn)行讀取和寫入操作的頻率,但是不包括文件控制操作。ProcessQueueLength線程在等待分配CPU資源所排隊(duì)列的長度,此長度不包括正在占用CPU資源的線程。如果該隊(duì)列長度大于處理器個(gè)數(shù)+1,就表示處理器有可能處于阻塞狀態(tài)(參考值:<=處理器個(gè)數(shù)+1)第四十九頁,共135頁。Controller-Windows資源性能常用計(jì)數(shù)器%ProcessTimeCPU利用率,該計(jì)數(shù)器最為常用,可以查看處理器是否處于飽和狀態(tài),如果該值持續(xù)超過95%,就表示當(dāng)前系統(tǒng)的瓶頸為CPU,可以考慮增加一個(gè)處理器或更換一個(gè)性能更好的處理器。(參考值:<80%)%PriviliageTimeCPU在特權(quán)模式下處理器所花的時(shí)間百分比。一般的系統(tǒng)服務(wù),進(jìn)程管理,內(nèi)存管理等一線由OS自行啟動(dòng)的進(jìn)程屬于這類。%UserTime與%PriviliageTime計(jì)數(shù)器正好相反,指的是在用戶狀態(tài)摸上下(非特權(quán)模式)的操作所花的時(shí)間百分比。%DPCTime處理器在網(wǎng)絡(luò)處理上消耗的時(shí)間,該值越低越好。PrivateBytes進(jìn)程無法與其他進(jìn)程共享的字節(jié)數(shù)量。該計(jì)數(shù)器的值較大時(shí),有可能是內(nèi)存泄漏的信號(hào)。第五十頁,共135頁。Controller-Windows資源性能常用計(jì)數(shù)器Workset最近處理線程使用的內(nèi)存頁。PageFaults/sec每秒鐘處理錯(cuò)誤頁數(shù),當(dāng)處理器在內(nèi)存中讀取某一頁出現(xiàn)錯(cuò)誤時(shí),就會(huì)產(chǎn)生缺頁中斷,也就是pagefault。如果這個(gè)頁位于內(nèi)存的其他位置,這種錯(cuò)誤稱為軟錯(cuò)誤,如果這個(gè)頁位于硬盤上,必須從硬盤重新讀取,這個(gè)錯(cuò)誤稱為硬錯(cuò)誤。硬錯(cuò)誤會(huì)使系統(tǒng)的運(yùn)行效率很快降下來。PageInput/sec

表示為了解決硬錯(cuò)誤而寫入硬盤的頁數(shù)(參考值:>=pagereads/sec)。PageReads/sec表示為了解決音頻錯(cuò)誤而從硬盤讀取的頁數(shù)。Page/sec

表示為了解決音頻錯(cuò)誤而從硬盤上讀取或?qū)懭胗脖P的頁數(shù)(參考值:0-20)。第五十一頁,共135頁。Controller-Windows資源性能常用計(jì)數(shù)器AvailableMbytes剩余的可用物理內(nèi)存,單位是兆字節(jié)(參考值:>=10%)。CatheBytes文件系統(tǒng)的緩存(默認(rèn)為50%的可用物理內(nèi)存)。%DiskTime表示磁盤驅(qū)動(dòng)器為讀取或?qū)懭胝?qǐng)求提供服務(wù)所用的時(shí)間百分比,如果%DiskTime比較大,硬盤有可能是瓶頸。AverageDiskQueueLength表示磁盤讀取和寫入請(qǐng)求提供服務(wù)所用的時(shí)間百分比,可用通過增加磁盤構(gòu)造磁盤陣列來提供性能(參考值:<=磁盤數(shù)x2)。AverageDiskwritequeueLength表示磁盤寫入請(qǐng)求的平均數(shù)。AverageDisksec/read磁盤中讀取數(shù)據(jù)的平均時(shí)間,單位是s第五十二頁,共135頁。Controller-Windows資源性能常用計(jì)數(shù)器AvailableDisksec/Transer磁盤中寫入數(shù)據(jù)的平均時(shí)間,單位是s。ByteTotal/sec表示網(wǎng)絡(luò)中接收和發(fā)送字節(jié)的速度,可以用該計(jì)數(shù)器來判斷網(wǎng)絡(luò)是否存在瓶頸(參考值:該計(jì)數(shù)器和網(wǎng)絡(luò)帶寬相除,<50%)。第五十三頁,共135頁。Controller-資源評(píng)價(jià)表性能項(xiàng)資源評(píng)價(jià)CPU占用率70%好85%壞90%很差磁盤I/O<30%好<40%壞<50%+很差網(wǎng)絡(luò)<30%帶寬好運(yùn)行隊(duì)列<2*CPU數(shù)量好內(nèi)存沒有頁交換好每個(gè)CPU每秒10個(gè)頁交換壞更多的頁交換很差第五十四頁,共135頁。Controller-運(yùn)行手工場(chǎng)景具體觀看演示。第五十五頁,共135頁。Controller-運(yùn)行目標(biāo)場(chǎng)景具體觀看演示。第五十六頁,共135頁。Controller-集合點(diǎn)設(shè)置集合點(diǎn)的含義:當(dāng)通過Controller虛擬多個(gè)用戶執(zhí)行該腳本時(shí),用戶的啟動(dòng)或運(yùn)行步驟不一定都是同步的。集合點(diǎn)是在某處設(shè)置一個(gè)標(biāo)記,當(dāng)有虛擬用戶運(yùn)行到這個(gè)標(biāo)記處時(shí),停下來等待,直到所有的用戶都達(dá)到這個(gè)標(biāo)記處時(shí),再一同進(jìn)行下面的步驟,這樣能夠用最大的用戶并發(fā)去做下面的操作,就像集合再前進(jìn)一樣,集合點(diǎn)之名由此而得。集合點(diǎn)主要用于對(duì)關(guān)鍵步驟的加壓。插入集合點(diǎn)的目的:集合點(diǎn)的用處對(duì)于LoadRunner來說意義非常大,它可以設(shè)置多個(gè)虛擬用戶等待到一個(gè)點(diǎn),同時(shí)觸發(fā)一個(gè)事務(wù),以達(dá)到模擬真實(shí)環(huán)境下同時(shí)多個(gè)用戶操作(如果購物網(wǎng)站的秒殺等業(yè)務(wù)),同時(shí)模擬負(fù)載,實(shí)現(xiàn)性能測(cè)試的最終目的。由此可見插入集合點(diǎn)主要是為了衡量在加重負(fù)載的情況下服務(wù)器的性能情況,從而找到性能瓶頸??梢园鸭宵c(diǎn)理解成是一種特殊情況下的并發(fā)。第五十七頁,共135頁。Controller-集合點(diǎn)設(shè)置插入集合點(diǎn)菜單:Insert/Rendezvous第五十八頁,共135頁。Controller-集合點(diǎn)設(shè)置使用集合點(diǎn)菜單:Scenario/Rendezvous第五十九頁,共135頁。Controller-IP欺騙什么是IP欺騙:IP地址欺騙是指用戶操作產(chǎn)生的IP數(shù)據(jù)包為偽造的源IP地址,以便冒充其他系統(tǒng)或發(fā)件人的身份。這是一種黑客的攻擊形式,黑客使用一臺(tái)計(jì)算機(jī)上網(wǎng),而借用另外一臺(tái)機(jī)器的IP地址,從而冒充另外一臺(tái)機(jī)器與服務(wù)器打交道。為什么要用IP欺騙:1、當(dāng)某個(gè)Ip的訪問過于頻繁或訪問量過大時(shí),服務(wù)器會(huì)拒絕訪問請(qǐng)求,這時(shí)候通過IP欺騙可以增加訪問頻率和訪問量,已達(dá)到壓力測(cè)試的效果。2、某些服務(wù)器配置了負(fù)載均衡,使用同一個(gè)IP不能測(cè)出系統(tǒng)的實(shí)際性能。LR中的IP欺騙通過調(diào)用不同的IP,可以很大程度上的模擬實(shí)際使用中多

IP訪問和并發(fā),測(cè)試服務(wù)器均衡處理的能力。3、有一些網(wǎng)站會(huì)限制同一個(gè)用戶同一個(gè)IP等登錄,為了更加真實(shí)的模擬實(shí)際情況,LoadRunner允許運(yùn)行的虛擬用戶使用不同的IP訪問同一網(wǎng)站。第六十頁,共135頁。Controller-IP欺騙的設(shè)置先將測(cè)試端電腦的IP地址設(shè)置為靜態(tài)IP,不要使用DHCP方式。第六十一頁,共135頁。Controller-IP欺騙的驗(yàn)證1、將服務(wù)器的IP設(shè)置為真實(shí)IP2、添加事務(wù)第六十二頁,共135頁。Controller-IP欺騙的驗(yàn)證3、開啟擴(kuò)展日志4、以線程的方式運(yùn)行第六十三頁,共135頁。Controller-IP欺騙的驗(yàn)證6、啟用IP欺騙7、啟用專家模式8、以線程方式運(yùn)行第六十四頁,共135頁。Controller-IP欺騙的驗(yàn)證第六十五頁,共135頁。Controller-IP欺騙的注意事項(xiàng)1、虛擬IP是同一個(gè)Generator上的多個(gè)IP,這種分配過程由Controller自動(dòng)來進(jìn)行。2、對(duì)于同一個(gè)Generator,模擬的用戶數(shù)量多于IP數(shù)量時(shí),將會(huì)發(fā)生IP重復(fù)

的現(xiàn)象,否則將隨機(jī)分配不同的IP。3、對(duì)于同一個(gè)Generator,以其某一個(gè)IP添加到Generator中即可,不需要

不同的IP添加多次。4、IP欺騙設(shè)置前主機(jī)IP為固定的IP,測(cè)試完成之后要釋放掉IP。第六十六頁,共135頁。Controller-服務(wù)水平協(xié)議SLASLA是為負(fù)載測(cè)試場(chǎng)景定義的具體目標(biāo)。例如測(cè)評(píng)腳本中任意數(shù)量事務(wù)的平均響應(yīng)時(shí)間,可以定義具體的目標(biāo)或閥值。測(cè)試運(yùn)行結(jié)束后,LoadRunner將定義的目標(biāo)與實(shí)際錄制的平均事務(wù)響應(yīng)時(shí)間進(jìn)行比較。如果實(shí)際的平均事務(wù)響應(yīng)時(shí)間未超過定義的閥值,SLA狀態(tài)將為通過,否則為不通過。作為目標(biāo)定義的一部分,可以指示SLA將負(fù)載條件考慮在內(nèi)。這意味著可接受的閥值將依據(jù)負(fù)載級(jí)別而有所更改(例如,運(yùn)行的Vuser數(shù)、吞吐量等)。隨著負(fù)載的增加,可以允許更大的閥值。第六十七頁,共135頁。Controller-服務(wù)水平協(xié)議SLASLA與面向目標(biāo)場(chǎng)景的主要區(qū)別是前者有一定的調(diào)整幅度,而面向目標(biāo)創(chuàng)建時(shí)具體的目標(biāo)設(shè)定。第六十八頁,共135頁。Controller-LR常用函數(shù)(事務(wù)函數(shù))Lr_start_transaction();//標(biāo)記事務(wù)的開始Lr_end_transaction();//標(biāo)記事務(wù)的結(jié)束,一般情況下,事務(wù)開始與結(jié)束聯(lián)合使用。Lr_get_trans_instance_status();//得到事務(wù)的狀態(tài),當(dāng)事務(wù)由許多步驟組成或可能

存在導(dǎo)致事務(wù)失敗的執(zhí)行點(diǎn),這個(gè)函數(shù)非常有用

,可以通過檢查狀態(tài)和終止Vuser,可以避免不

必要的活動(dòng)。Lr_get_transaction_think_time();//得到事務(wù)的指定思考時(shí)間。Lr_stop_transaction();//停止事務(wù),該事務(wù)函數(shù)返回當(dāng)前事務(wù)的持續(xù)時(shí)間,以毫秒

為單位,當(dāng)為錯(cuò)誤時(shí)返回一個(gè)負(fù)數(shù)。第六十九頁,共135頁。Controller-LR常用函數(shù)(日志函數(shù))Lr_debug_message();//發(fā)送調(diào)試信息到日志文件,這個(gè)函數(shù)將返回設(shè)定的字符,

不包括終止null字符,錯(cuò)誤時(shí)返回一個(gè)負(fù)值。Lr_get_debug_message();//返回當(dāng)前調(diào)試的信息,其返回值時(shí)依據(jù)不同日志設(shè)置

返回不同的值。Lr_error_message();//發(fā)送錯(cuò)誤信息到LR輸出窗口或日志文件里,如果這個(gè)函數(shù)

成功,返回發(fā)送的消息長度,如果失敗返回一個(gè)負(fù)數(shù)。Lr_log_message();//發(fā)送信息到用戶日志文件,如果這個(gè)函數(shù)成功,返回發(fā)送的消息長度,失敗返回一個(gè)負(fù)數(shù)。Lr_output_message();//發(fā)送信息到輸出窗口或日志文件。Lr_vuser_status_message();//發(fā)送虛擬用戶的狀態(tài)到lr的Controller,如果成功返

回0,如果事務(wù)名字是非法的或如果和lr_start_transaction事務(wù)開始名稱不同是,返回1。第七十頁,共135頁。Controller-LR常用函數(shù)(運(yùn)行時(shí)函數(shù))Lr_abort();//終止執(zhí)行的腳本,它能停止執(zhí)行action部分,vuser_end部分,以及

結(jié)束腳本執(zhí)行,當(dāng)需要手動(dòng)終止運(yùn)行的一個(gè)特定的錯(cuò)誤條件可以使用

這個(gè)函數(shù),當(dāng)結(jié)束運(yùn)行使用此函數(shù)時(shí),狀態(tài)是停止。Lr_continue_on_error();//當(dāng)發(fā)生錯(cuò)誤后運(yùn)行的事件,參數(shù)為1表示發(fā)生錯(cuò)誤繼續(xù)

運(yùn)行腳本,參數(shù)為0表示取消出錯(cuò)繼續(xù)運(yùn)行腳本。Lr_exit();//該函數(shù)允許運(yùn)行中退出腳本,在聲明該函數(shù)的事務(wù)退出后不會(huì)出現(xiàn)在

Controller的事務(wù)狀態(tài)集合中,也不會(huì)被計(jì)入到通過和失敗的事務(wù)中。Lr_think_time();//設(shè)置思考時(shí)間,在性能測(cè)試中為了更好模擬用戶操作,可以依據(jù)

實(shí)際生產(chǎn)環(huán)境設(shè)置思考時(shí)間。Lr_rendezous();//集合點(diǎn),可以設(shè)置虛擬用戶相同操作之前進(jìn)行集合,通過集合點(diǎn)

可以增加被測(cè)應(yīng)用的壓力,從而達(dá)到壓力測(cè)試的目的。Lr_load_dll();//調(diào)用DLL文件,這個(gè)函數(shù)執(zhí)行成功,將返回0,如果導(dǎo)致內(nèi)存溢出條

件返回10,如果文件不存在,返回11。第七十一頁,共135頁。Analysis-簡(jiǎn)介Analysis的功能是對(duì)測(cè)試結(jié)果進(jìn)行查看、分析和比較。LoadRunnerResults文件和AnalysisSessionFiles的區(qū)別,LoadRunnerResults是Controller運(yùn)行后的結(jié)果文件,AnalysisSessionFiles是Analysis保存的分析會(huì)話文件。演示…第七十二頁,共135頁。Analysis-報(bào)告摘要(SLA分析)演示…第七十三頁,共135頁。Analysis-事務(wù)摘要分析演示…第七十四頁,共135頁。Analysis-圖表過濾與分組依據(jù)演示…第七十五頁,共135頁。Analysis-圖表調(diào)整操作演示…第七十六頁,共135頁。Analysis-合并圖表演示…第七十七頁,共135頁。Analysis-圖例操作演示…第七十八頁,共135頁。Analysis-性能圖表分析AverageTransactionResponseTime(事務(wù)平均響應(yīng)時(shí)間)顯示得是測(cè)試場(chǎng)景運(yùn)行期間每一秒鐘內(nèi)事務(wù)執(zhí)行所用的平均時(shí)間,通過它可以分析測(cè)試場(chǎng)景運(yùn)行期間應(yīng)用系統(tǒng)的性能走向。例如隨著測(cè)試時(shí)間的變化,系統(tǒng)處理事務(wù)的速度開始逐漸變慢,這說明應(yīng)用系統(tǒng)隨著時(shí)間的變化,整體性能將會(huì)有下降的趨勢(shì)。運(yùn)行Vuser事務(wù)平均響應(yīng)時(shí)間合并關(guān)聯(lián)圖通過合并圖可以分析隨著用戶數(shù)量的變化,各個(gè)事務(wù)平均響應(yīng)時(shí)間的變化,從而可以得出各個(gè)事務(wù)在指定時(shí)間內(nèi)的最大用戶的并發(fā)用戶數(shù)。每秒點(diǎn)擊次數(shù)(HitsperSecond)是Vuser每秒向Web服務(wù)器提交的HTTp請(qǐng)求數(shù)。查看其曲線情況可以判斷被測(cè)系統(tǒng)是否穩(wěn)定,曲線呈下降趨勢(shì)表明Web服務(wù)器的響應(yīng)速度在變慢,其原因可能是服務(wù)器瓶頸問題,也有可能是Vusers數(shù)量減少,訪問服務(wù)器的HTTP請(qǐng)求減少。第七十九頁,共135頁。Analysis-性能圖表分析吞吐量(Throughput)表示服務(wù)器在任意時(shí)間的吞吐能力,即任意時(shí)間服務(wù)器發(fā)送給Vusers的流量。其是度量服務(wù)器性能的重要指標(biāo),度量單位是字節(jié),也有兆字節(jié)。運(yùn)行Vuser吞吐量合并關(guān)聯(lián)圖并發(fā)用戶數(shù)和吞吐量瓶頸之間存在一定的關(guān)聯(lián),(在網(wǎng)絡(luò)和服務(wù)器正常情況下,隨著并發(fā)用戶數(shù)增加,網(wǎng)絡(luò)吞吐量也會(huì)增加,因此可以通過不斷增加用戶數(shù)和吞吐量觀察系統(tǒng)的性能瓶頸。然后從網(wǎng)絡(luò)、數(shù)據(jù)庫、應(yīng)用服務(wù)器和代碼本身等4個(gè)環(huán)節(jié)確定系統(tǒng)的性能瓶頸)。HitsperSecondThroughput合并關(guān)聯(lián)圖在比較吞吐量和每秒點(diǎn)擊率中可以獲得服務(wù)器在執(zhí)行過程中的情況。如果服務(wù)器如預(yù)期的一樣在執(zhí)行,那么吞吐量會(huì)隨著每秒的點(diǎn)擊量的增加而增加。這是期望實(shí)現(xiàn)的情況,因?yàn)辄c(diǎn)擊增加一次就會(huì)需要服務(wù)器發(fā)送更多的返回信息給用戶。如果點(diǎn)擊的次數(shù)增加而吞吐量恒定或是減少,就說明服務(wù)器無法執(zhí)行增加的請(qǐng)求,結(jié)果就是事務(wù)反應(yīng)時(shí)間的增加。第八十頁,共135頁。Analysis-性能圖表分析HTTPResponseperSecond(每秒HTTP響應(yīng)數(shù))顯示運(yùn)動(dòng)場(chǎng)景過程中每秒從Web服務(wù)器返回的不同HTTP狀態(tài)代碼的數(shù)量,還能返回各類狀態(tài)碼信息,通過分析狀態(tài)碼,可以判斷服務(wù)器在壓力下的運(yùn)行情況,也可以通過對(duì)圖中顯示得結(jié)果進(jìn)行分組,從而定位生成錯(cuò)誤的代碼腳本,常見的HTTP狀態(tài)返回碼如下:200成功服務(wù)器已成功處理請(qǐng)求。通常表示服務(wù)器提供了請(qǐng)求數(shù)據(jù)或頁面。201已創(chuàng)建請(qǐng)求成功并服務(wù)器創(chuàng)建了新的資源。202已接受服務(wù)器已接受請(qǐng)求,但尚未處理。203非授權(quán)信息服務(wù)器成功處理了請(qǐng)求,但返回的信息可能來自另一來源。204無內(nèi)容服務(wù)器成功處理請(qǐng)求,但沒有返回任何內(nèi)容。205重置內(nèi)容服務(wù)器成功處理了請(qǐng)求,但沒有返回任何內(nèi)容。部分內(nèi)容服務(wù)器成功處理了部分GET請(qǐng)求。永久移動(dòng)

請(qǐng)求的網(wǎng)頁已永久移動(dòng)到新位置。服務(wù)器返回此響應(yīng)(對(duì)GET或HEAD請(qǐng)求的

響應(yīng))時(shí),會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到新位置。未找到服務(wù)器找不到請(qǐng)求的網(wǎng)頁。500服務(wù)器內(nèi)部錯(cuò)誤服務(wù)器遇到錯(cuò)誤,無法完成請(qǐng)求。第八十一頁,共135頁。Analysis-頁面細(xì)分在平均事務(wù)響應(yīng)時(shí)間圖表中點(diǎn)擊:演示…第八十二頁,共135頁。Analysis-系統(tǒng)資源分析1、內(nèi)存分析方法:內(nèi)存分析方法主要是用于判斷系統(tǒng)有無遇到內(nèi)存瓶頸,是否需要通過增加內(nèi)存等手段提供系統(tǒng)的性能表現(xiàn)。主要計(jì)數(shù)器包括Memory和PhysicalDisk類別的計(jì)數(shù)器。內(nèi)存分析的主要步驟和方法如下:

(1)首先查看AvailableMbytes指標(biāo)

該值用于描述系統(tǒng)可用內(nèi)存的直接指標(biāo),在對(duì)系統(tǒng)進(jìn)行操作級(jí)別的內(nèi)存分析

時(shí),首先應(yīng)通過該值建立一個(gè)初步的印象,了解性能系統(tǒng)測(cè)試過程中,系統(tǒng)

是否仍然有足夠的內(nèi)存可用。

如果該指標(biāo)的數(shù)據(jù)比較小,系統(tǒng)可能出現(xiàn)內(nèi)存方面的問題。

(2)注意pages/sec、pagesread/sec和pagefaults/sec

操作系統(tǒng)經(jīng)常會(huì)使用磁盤交換的方式來提高系統(tǒng)可用的內(nèi)存量或是提高內(nèi)存的

使用效率。這三個(gè)指標(biāo)直接反應(yīng)了操作系統(tǒng)進(jìn)行磁盤交換的頻道。

第八十三頁,共135頁。Analysis-系統(tǒng)資源分析如果page/sec的計(jì)數(shù)持續(xù)高于幾百,很有可能存在內(nèi)存方面的問題,但其值

很大不一定表示內(nèi)存有問題,而可能是運(yùn)行使用內(nèi)存映射文件的程序所致。

pageFaults/sec說明了每秒發(fā)生頁面失效的次數(shù),頁面失效次數(shù)越多,說明

操作系統(tǒng)向內(nèi)存中讀取的次數(shù)越多。此時(shí)還需要查看pageread/sec計(jì)數(shù)器,

該計(jì)數(shù)器閥值為5,如果超過5,則可以判定存在內(nèi)存方面的問題。

(3)依據(jù)physicalDisk計(jì)數(shù)器的值分析性能瓶頸

對(duì)于PhysicalDisk計(jì)數(shù)器的分析包括pagesread/sec和%DiskTime及Average

DiskQueueLength的分析。如果pagesread/sec很低,同時(shí)%DiskTime和AverageDiskQueueLength的值很高,則可能有磁盤瓶頸。但是如果AverageDiskQueueLength增加的同時(shí)pagesread/sec并未降低,則是由于內(nèi)存不足。

第八十四頁,共135頁。Analysis-系統(tǒng)資源分析2、處理器分析方法:處理器(CPU)也可能是系統(tǒng)的瓶頸,對(duì)處理器進(jìn)行性能分析的步驟如下:

(1)首先查看%TotalProcessorTime性能計(jì)數(shù)器的計(jì)數(shù)值

該值用于體現(xiàn)服務(wù)器整體的處理器利用率,對(duì)多處理器的系統(tǒng)而言,該值體

現(xiàn)的是所有CPU的平均利用率。如果該值的數(shù)值持續(xù)超過90%,則說明整個(gè)

系統(tǒng)面臨處理器的瓶頸,需要增加處理器來提供性能。注意:由于操作系統(tǒng)本身特性,在某些多CPU系統(tǒng)中該數(shù)據(jù)本身并不大,但

此時(shí)CPU之間的負(fù)載狀況極不均衡,此時(shí)也應(yīng)該視為系統(tǒng)產(chǎn)生了處理

器方面的瓶頸。

(2)其次查看每個(gè)CPU的%processortime和%usertime和%privilegedtime%usertime是指系統(tǒng)的非核心操作消耗的cpu時(shí)間,如果該值較大,可以考慮

是否通過算法優(yōu)化等方法降低該值,如果服務(wù)器是數(shù)據(jù)庫服務(wù)器,processortime和%usertime值大的原因可能是數(shù)據(jù)庫的排序函數(shù)操作消耗了cpu,優(yōu)化數(shù)據(jù)庫。

第八十五頁,共135頁。Analysis-系統(tǒng)資源分析

(3)研究系統(tǒng)處理器瓶頸

查看processorqueueLength計(jì)數(shù)器的值,當(dāng)該值大于CPU數(shù)量的總數(shù)+1時(shí),

說明產(chǎn)生了處理器阻塞。如果該值持續(xù)超過95%,就表示當(dāng)前系統(tǒng)的瓶頸為CPU

,可以考慮增加一個(gè)處理器或更換一個(gè)性能更好的處理。(參考值:<80%)%DPCTime是另一個(gè)需要關(guān)注的內(nèi)容,該值越低越好,在多系統(tǒng)處理中,如果

這個(gè)值大于50%并且Processor\%ProcessorTime非常高,加入一個(gè)網(wǎng)卡可能會(huì)

提高性能。

第八十六頁,共135頁。Analysis-導(dǎo)出分析報(bào)告演示…第八十七頁,共135頁。Analysis-編寫測(cè)試報(bào)告使用我中心的效率測(cè)試報(bào)告進(jìn)行講解…第八十八頁,共135頁。JMeter是什么:ApacheJmeter是Apache組織的開源代碼項(xiàng)目,是一個(gè)純java桌面應(yīng)用,用于壓力測(cè)試和性能測(cè)量。它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試但后來擴(kuò)展到其他測(cè)試領(lǐng)域。JMeter有什么用:可以用于對(duì)靜態(tài)和動(dòng)態(tài)的資源(文件、Servlet、Perl腳本、java對(duì)象、數(shù)據(jù)庫和查詢、FTP服務(wù)器或其他資源)的性能進(jìn)行測(cè)試,可以用于分析不同壓力條件下的總體性能情況,也可以使用Jmeter提供的圖形化界面,分析性能指標(biāo)或者在高負(fù)載情況下測(cè)試服務(wù)器、腳本和對(duì)象。JMeter介紹第八十九頁,共135頁。LR與JMeter的區(qū)別JMeter介紹LoadRunnerJMeter安裝卸載比較麻煩,文件體積大比較簡(jiǎn)單,文件體積小腳本錄制支持支持參數(shù)化支持支持集合點(diǎn)支持支持檢查點(diǎn)支持支持關(guān)聯(lián)支持支持多協(xié)議支持支持IP欺騙支持不支持多線程支持支持報(bào)告生成與導(dǎo)出支持支持測(cè)試成本商業(yè)軟件,成本高開源軟件,成本低第九十頁,共135頁。1、安裝配置好JDK2、JMeter下載地址http:///download_jmeter.cgi下載后,解壓文件到任意目錄,避免在一個(gè)有空格的路徑安裝JMeter,這將導(dǎo)致遠(yuǎn)程測(cè)試出現(xiàn)問題。JMeter安裝第九十一頁,共135頁。JMeter文件目錄介紹bin目錄:

jmeter.bat:windows下的啟動(dòng)文件jmeter.log:日志文件

jmeter.sh:linux下的啟動(dòng)文件

perties:系統(tǒng)配置文件jmeter-server.bat:windows分布式測(cè)試要用到的服務(wù)器配置

jmeter-server:linux分布式測(cè)試要用到的服務(wù)器配置docs目錄:接口文檔目錄。extras目錄:擴(kuò)展插件目錄。lib目錄:所用到的插件目錄,里面的全是jar包,Jmeter會(huì)自動(dòng)在JMETER_HOME

/lib和ext目錄下尋找需要的類。license目錄:jmeter證書目錄。printable_docs:用戶使用手冊(cè)。第九十二頁,共135頁。JMeter功能概要JMeter組成部分:資源生成器:用于生成測(cè)試過程中服務(wù)器、負(fù)載機(jī)的資源代碼。(LR中的VuGen)用戶運(yùn)行器:腳本運(yùn)行引擎,根據(jù)腳本要求模擬指定的用戶行為。(LR中的Controller)報(bào)表生成器:根據(jù)測(cè)試中實(shí)時(shí)的數(shù)據(jù)生成報(bào)表,提供可視化的數(shù)據(jù)顯示方式。(Analysis)負(fù)載發(fā)生器:用于產(chǎn)生負(fù)載,通常以多線程或多進(jìn)程方式模擬用戶行為。(loadGenerator)測(cè)試計(jì)劃:用于描述一個(gè)性能測(cè)試,包含與本次性能測(cè)試所有相關(guān)的功能。也就是說性能測(cè)試的所有

內(nèi)容是基于一個(gè)計(jì)劃的。(相當(dāng)于LR的一個(gè)測(cè)試場(chǎng)景)第九十三頁,共135頁。JMeter功能概要setupThreadGroup:一種特殊類型的ThreadGroup,可用于執(zhí)行預(yù)測(cè)試操作。這些線程的行為完全像一個(gè)正常的線程組元件,不同是這些類型的線程執(zhí)行測(cè)試前進(jìn)行定期線程組的執(zhí)行。類似LR中的init()。TeardownThreadGroup:一種特殊類型的ThreadGroup,可用于執(zhí)行測(cè)試后動(dòng)作。這些線程的行為完全像一個(gè)正常的線程組元件,不同是這些線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組。類似LR中的end()。ThreadGroup(線程組):這個(gè)就是通常添加運(yùn)行的線程??捎每醋鲆粋€(gè)虛擬用戶組,線程組中的每個(gè)線程都可用理解為一個(gè)虛擬用戶。線程中包含的線程數(shù)量在測(cè)試執(zhí)行過程中發(fā)生改變。類型LR中的action()。第九十四頁,共135頁。JMeter測(cè)試片段測(cè)試片段(TestFragment):是控制器上的一個(gè)特殊的線程組,它在測(cè)試樹上與線程組處于一個(gè)層級(jí)。它與線程組有所不同,因?yàn)樗槐粓?zhí)行,除非它是一個(gè)模塊控制器或者是被控制器所引用時(shí)才會(huì)被執(zhí)行。第九十五頁,共135頁。JMeter8類可執(zhí)行元件配置元件(Configelement):用于提供對(duì)靜態(tài)數(shù)據(jù)配置的支持。如CSVDataSetconfig可以將本地?cái)?shù)據(jù)文件形成數(shù)據(jù)池datapool。定時(shí)器(Timer):用于操作之間設(shè)置等待時(shí)間,等待時(shí)間是性能測(cè)試中常用的控制客戶端QPS的手段。類似于LoadRunner里面的思考時(shí)間,Jmeter定義了

BeanShellTimer、ConstantThroughputTimer、固定定時(shí)器等不同

類型的Timer。前置處理器(PerProcessors):用于在實(shí)際的請(qǐng)求發(fā)出之前對(duì)即將發(fā)出的請(qǐng)求進(jìn)行特殊

處理。例如HTTPURL重寫修復(fù)符,則可以實(shí)現(xiàn)URL重寫,當(dāng)URL中有sessionID一類的session信息時(shí),可以

通過該處理器填充發(fā)出請(qǐng)求的實(shí)際的SessionID。后置處理器(PostProcessors):用于對(duì)Sampler發(fā)出請(qǐng)求后得到的服務(wù)器響應(yīng)進(jìn)行處理

。一般用來提取響應(yīng)中特定數(shù)據(jù)(類似LR中的關(guān)聯(lián))。斷言(Assertion):用于檢查測(cè)試中得到的相應(yīng)數(shù)據(jù)等是否符合預(yù)期,斷言一般用來設(shè)置

檢查點(diǎn),用以保證性能測(cè)試過程中的數(shù)據(jù)交互是否與預(yù)期一致。第九十六頁,共135頁。JMeter8類可執(zhí)行元件監(jiān)聽器(Listener):用于對(duì)測(cè)試結(jié)果數(shù)據(jù)進(jìn)行處理和可視化展示的一系列元件。圖形結(jié)果、查看結(jié)果樹、聚合報(bào)告。都是常用到的元件。注意:這個(gè)

監(jiān)聽器不是用來監(jiān)聽系統(tǒng)資源的元件。取樣器(Sampler):用于向服務(wù)器發(fā)送請(qǐng)求,記錄響應(yīng)信息,記錄響應(yīng)時(shí)間的最小單

元,Jmeter原生支持多種不同的Sampler,例如HTTPRequest

Sampler、Sampler、TCPRequestSampler、JDBC

RequestSampler等。每一種不同類型的Sampler可以根據(jù)設(shè)置的

參數(shù)向服務(wù)器發(fā)出不同類型的請(qǐng)求。邏輯控制器(Sample):包括兩類元件,一類是用于控制testplan中的sampler節(jié)點(diǎn)發(fā)送

請(qǐng)求的邏輯順序的控制器,常用的有if控制器、switch

Controller、runtimeController、循環(huán)控制器等。另一來是用來

組織可控制sampler節(jié)點(diǎn)的,如事務(wù)控制器、吞吐量控制等。第九十七頁,共135頁。JMeter錄制腳本以訪問百度()為例演示…第九十八頁,共135頁。JMeter錄制腳本以訪問Webtours(LoadRunner自帶的網(wǎng)站)為例。首先需要設(shè)置代理服務(wù)器,操作如下:創(chuàng)建一個(gè)線程組(右鍵點(diǎn)擊“測(cè)試計(jì)劃”->“添加”->“線程組”)創(chuàng)建一個(gè)http代理服務(wù)器(右鍵點(diǎn)擊“工作臺(tái)”->“添加”->“非測(cè)試元件”->“http代理服務(wù)器”),設(shè)置完成后,點(diǎn)擊“啟動(dòng)”啟動(dòng)。IE需要設(shè)置代理服務(wù)器,IE->“Internet屬性”->“連接”->“局域網(wǎng)設(shè)置”演示…第九十九頁,共135頁。Jmeter–Badboy與Jmeter配合進(jìn)行腳本錄制使用代理錄制,不是很方便,推薦使用Badboy工具配合進(jìn)行錄制。下載地址:Badboy是一個(gè)強(qiáng)大的工具,可以幫助測(cè)試和開發(fā)復(fù)雜的動(dòng)態(tài)應(yīng)用。Badboy包括一個(gè)簡(jiǎn)單而全面的捕獲/回放界面,強(qiáng)大的負(fù)載測(cè)試的支持,詳細(xì)報(bào)告圖表等等,從而使Web測(cè)試和開發(fā)變得更加容易。Badboy錄制后導(dǎo)出腳本Jmeter使用Badboy的腳本第一百頁,共135頁。JMeter–Badboy檢查點(diǎn)檢查點(diǎn)的設(shè)置:選擇要檢查的文字,然后在Tools->AddAssertionforSelection里添加斷言,再回放。第一百零一頁,共135頁。JMeter–Badboy參數(shù)化1、選擇要參數(shù)化的內(nèi)容2、添加變量第一百零二頁,共135頁。JMeter–Badboy參數(shù)化3、為變量做替換4、設(shè)置step循環(huán)演示…第一百零三頁,共135頁。JMeter–基礎(chǔ)實(shí)踐測(cè)試需求:測(cè)試20個(gè)用戶訪問百度https:///

在負(fù)載達(dá)到30QPS時(shí)的平均響應(yīng)時(shí)間。QPS:QueryPerSecond每秒查詢率,是一臺(tái)查詢服務(wù)器每秒能夠處理的查詢次數(shù)。在網(wǎng)上作為域名系統(tǒng)服務(wù)器的性能經(jīng)常用每秒查詢率來衡量其性能。測(cè)試步驟:1、添加線程組

線程組主要包含三個(gè)參數(shù):線程數(shù)、準(zhǔn)備時(shí)長(Ramp-UpPeriod(insecond

))、循環(huán)次數(shù)。

線程數(shù):虛擬用戶數(shù)。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程。設(shè)置多個(gè)虛擬用戶

數(shù)在這里也就是設(shè)置多個(gè)線程數(shù)。

準(zhǔn)備時(shí)長(單位為s):設(shè)置的虛擬用戶數(shù)需要多長時(shí)間全部啟動(dòng)。如果線程

數(shù)為20,準(zhǔn)備時(shí)長為10,那么需要10秒鐘啟動(dòng)20個(gè)線

程。也就是每秒啟動(dòng)2個(gè)線程。第一百零四頁,共135頁。JMeter–基礎(chǔ)實(shí)踐循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的次數(shù)。如果線程數(shù)為20,循環(huán)次數(shù)為5,那么

每個(gè)線程發(fā)送5次請(qǐng)求,總請(qǐng)求數(shù)為20*5=100。如果勾選了“永遠(yuǎn)”,那么所有線程會(huì)一直發(fā)請(qǐng)求,一直到選擇停止運(yùn)行腳本。2、添加HTTP請(qǐng)求

在線程組上點(diǎn)擊“添加”->“Sampler”->“HTTP請(qǐng)求”。

名稱:本屬性用于標(biāo)識(shí)一個(gè)取樣器,建議使用一個(gè)有意義的名稱。

注釋:對(duì)于測(cè)試沒有任何作用,僅用戶記錄用戶可讀的注釋信息。

服務(wù)器名稱或IP:HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或IP地址。

端口號(hào):目標(biāo)服務(wù)器的端口,默認(rèn)值為80。

Timeouts(milliseconds):設(shè)置請(qǐng)求和響應(yīng)的超時(shí)時(shí)間。

協(xié)議:向目標(biāo)服務(wù)器發(fā)送HTTP請(qǐng)求時(shí)的協(xié)議,可以是http或是https,默認(rèn)為

http協(xié)議。

第一百零五頁,共135頁。JMeter–基礎(chǔ)實(shí)踐方法:發(fā)送HTTP請(qǐng)求的方法,可用方法包括GET、POST、HEAD、PUT、

OPTIONS、TRACE、DELETE、PATCH等等。

Contentencoding:內(nèi)容的編碼方式,默認(rèn)值為is8859。

路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口)。自動(dòng)重定向:如果選擇該選項(xiàng),當(dāng)發(fā)生HTTP請(qǐng)求后得到的響應(yīng)是302/301

時(shí),Jmeter自動(dòng)重定向到新的頁面。

UsekeepAlive:當(dāng)該選項(xiàng)被選中時(shí),Jmeter和目標(biāo)服務(wù)器之間使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論