




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
LoadRunner很多使用LoadRunner的測試人員經(jīng)常兩個難題:開發(fā)與性能測試分析。本書就是基于幫助測試人員解決這兩個問題而編寫,致力于使讀者學(xué)精LoadRunnner這一強大的性能測試工具。全書共分為四部分:篇、基礎(chǔ)篇、探索篇、實戰(zhàn)篇。第一篇篇的內(nèi)容包括第1章和第2章,著重于講解性能測試與LoadRunner的基礎(chǔ)理論知識。第二篇基礎(chǔ)篇的內(nèi)容包括第3章至第5章,是LoadRunner的基本使用部分,著重講解VirtualUserGenerator、Controller、ysis的使用方法。第三篇第1部分 1章性能測試基礎(chǔ)知識..性能測試基本概念...什么是性能測試...性能測試應(yīng)用領(lǐng)域...性能測試常見術(shù)語...全面性能測試模型...性能測試策略模型...性能測試用例模型...模型的使用方法...性能測試調(diào)整基礎(chǔ)...如何做能測試...本章小結(jié)...2章LoadRunner基礎(chǔ)知識..LoadRunner簡介...LoadRunner主要特點...LoadRunner常用術(shù)語...LoadRunner工作原理...LoadRunner測試流程...LoadRunner的部署與安裝...本章小結(jié)...第2部分基礎(chǔ) 第3章的錄制與開發(fā)..VirtualUserGenerator簡介...VuGen錄制原理...VuGen功能簡介...如何選擇協(xié)議...VuGen錄制功能詳解...錄制參數(shù)設(shè)置...錄制與創(chuàng)建事務(wù)... ...錄制的基本原則... ...參數(shù)化功能...深入集合點...巧用檢查點...關(guān)聯(lián)... ...兩個常用函數(shù)介紹...本章小結(jié)...4章場景的創(chuàng)建與執(zhí)行..Controller簡介...場景類型介紹...手動測試場景...面向目標(biāo)的測試場景...測試場景設(shè)計...配置測 ...Generator配置Schedule.集合點配置...IPSpoofer配置...其他設(shè)置場景... 試場景...啟動測試場景...控制用戶與用戶組...查看場景與用戶狀態(tài)...控制集合點...查看運行數(shù)據(jù)圖...系統(tǒng)資源...Windows系統(tǒng)資源...Linux/Unix系統(tǒng)資源...本章小結(jié)...第5章性 分析.. ...性能分析基礎(chǔ)知識...ysis使用基礎(chǔ)...一 例子...如何從分析圖中發(fā)現(xiàn)問題...虛擬用戶圖...事務(wù)圖...Web資源圖...網(wǎng)頁細(xì)分圖...小結(jié)...分析圖的處理方法...修改默認(rèn)配置...合并分析圖...自動關(guān)聯(lián)...場景運行比較...ysis分析報告...事務(wù)活動報告(ActivityReports)...事務(wù)性能報告(PerformanceReports)...HTML與Word報告...本章小結(jié)...第3部分探索 第6章用VisualC++增強虛擬用 動 動 VisualC++創(chuàng)建Dll 分析本章小 第7章深入Java虛擬用 7.2.2LoadRunnerJavaAPI.Java算法測試案例...本章小結(jié)...8章深入.NET虛擬用戶..認(rèn)識.NET虛擬用戶....NET虛擬用戶適用范圍...安裝與配置.NET插件...創(chuàng)建.NET虛擬用戶...創(chuàng)建虛擬用戶項目...參數(shù)、集合點、事務(wù)...性能測試應(yīng)用案例... 器類...創(chuàng)建抽象虛擬用戶類...創(chuàng)建抽象并發(fā)測試類... ...LoadRunner.NET虛擬用戶...案例總結(jié)...本章小結(jié)...9章LoadRunner特殊協(xié)議應(yīng)用..WindowsSockets協(xié)議應(yīng)用...錄制WindowsSockets協(xié) ...增強WindowsSockets協(xié) ...WAP協(xié)議應(yīng)用...WebServices協(xié)議應(yīng)用...WebServices協(xié)議簡介...錄制WebServices協(xié) ...FTP協(xié)議應(yīng)用...本章小結(jié)...第4部分實戰(zhàn) 第10章電子商務(wù)平臺測試案 其他事 測試環(huán) 測試數(shù) 虛擬用 綜 風(fēng)險分 10.610.6本章小結(jié)...ALoadRunner性能測試常見問題..BLoadRunner性能測試模板..性能測試計劃模板...項目背景簡介...測試方案簡介...測試環(huán)境與資源...項目里程碑...技能培訓(xùn)計劃...風(fēng)險分析...計劃結(jié)束標(biāo)準(zhǔn)...性能測試用例模板...文檔介紹...測試需求分析...性能測試用例...性能測試報告模板...基本信息...測試環(huán)境描述...性能測試用例執(zhí)行分析...綜合分析及建議...B.3.5測試經(jīng)驗總結(jié)...后記..在作者的另一作品《Web性能測試實戰(zhàn)》中,曾經(jīng)提到過“軟件亞健康”這個概念?,F(xiàn) 著IT人的生活質(zhì)量,也 局面 er這樣令性能測試工作如虎添翼的性能測試?yán)鳌1緯鴮⒑妥x者一起深入LoadRunner的 本開發(fā) 能開發(fā)測 、 要想 是遠遠不夠的。諸如LoadRunner等測試工 nner的強大功能來發(fā)現(xiàn)系統(tǒng)存在的問題。首先應(yīng)該弄清楚學(xué)習(xí)LoadRunnerLoadRunnerLoadRunner還遠遠不夠,這也是為什么很多 學(xué)好LoadRunner的標(biāo)準(zhǔn)是真正能夠把LoadRunner應(yīng)用到實際項目中去,這就要求學(xué)習(xí)LoadRunner的同時一定要學(xué) 能測試相關(guān)知識。本書的第1章即為基本的性能測試果要學(xué) 2LoadRunnerLoadRunner的工作2-1LoadRunner工作原理,LoadRunner開展工作的基礎(chǔ)。本書的第3章、第4章、第5章分別講解了LoadRunner的VirtualUserGenerator、 結(jié)果分析工作。用LoadRunner來開展性能測試,必須要掌握這三大組件的使用。如果連 學(xué)習(xí)完第3~5章后,可能還有一些讀者會問:“我還是不會自己寫測試 6~9LoadRunnerLoadRunnerC++、Java、C#語言進行開發(fā)以及一些特殊 協(xié)議相信通過前面9章的學(xué)習(xí),讀者已經(jīng)掌握LoadRunner的精髓了。不過本書不是一本“LoadRunner使用百 全”,接下來就需要讀者自己不斷地應(yīng)用與探索LoadRunner了,逐步完成成為一個LoadRunner高手的蛻變過程。會在項目中如何通過LoadRunnerl借助案例體會“全面性能測試模型”GBElll學(xué)習(xí)如何 ll 篇,包括第1章和第2章,著重于講解性能測試與LoadRunner的基礎(chǔ)理論知識。在第1章中,講解了性能測試基本概念、全面性能測試模型、性能測試調(diào)整第二部分:基礎(chǔ)篇,包括第3章至第5章,著重講解LoadRunner三大組件的使用,是LoadRunner的基本使用部分。在第3章中,主要講解如何在VirtualUserGenerator中完成代碼的錄制與開發(fā);第4章講解如何在Controller中創(chuàng)建與執(zhí)行場景;第5章中講 ysis來分析性能 69章,著重講解LoadRunner章講解如何用VisualC++來增強虛擬用戶;第 10章,結(jié)合案例來講解在具體項目中如何應(yīng)用來 目中 感謝廣大讀者對《Web性能測試實戰(zhàn)》一書的支持,讀者的支持是作者寫作的真正動 感謝師 感謝同事 的上一本著作《Web性能測試實戰(zhàn)》中,為接近軟件性能問題提出位作者共同創(chuàng)作了《LoadRunnerLoadRunner模擬成千上萬的用戶,很快地幫助用戶確認(rèn)和查找性能問題。但是國 場上卻沒有任何相關(guān)書籍,《LoadRunner《LoadRunnerLoadRunner應(yīng)用《Web戶蘭(Melody1.1llLoadRunnerlLoadRunner8lLoadRunnerlLoadRunner100lLoadRunnerITLoadRunner了。不nnnnn ,2006年5 其體現(xiàn)在和Web 點,來獲得系統(tǒng)能提供的最大服務(wù)級別的測試。例如測試一個Web1.2節(jié)的“全面性能測試模型”。l當(dāng)正常的用戶點擊率為“1000次/秒”時,運行點擊率為“2000次/秒”l運行需要最 l運行可能導(dǎo)致操作系 7×24小時的壓力測試。主要指當(dāng)測試多個用戶并同時同一個應(yīng)用程序、同一個模塊或數(shù)據(jù)記錄時是否存中,并發(fā)用戶往往都是借助工具來進行模擬的,LoadRunner中稱之為并發(fā)虛擬用戶。 重要依據(jù)。例如,可以通過不停地調(diào)整Oracle的內(nèi)存參數(shù)來進 CPU70%~90%8個小1.2節(jié)提出了“全面性能測試ll根 lllll系統(tǒng)的性能瓶頸定位是性能測試最常見的應(yīng)用領(lǐng)域。借助LoadRunner等工具,可以 系統(tǒng)資源、Web服務(wù)器資源等運行數(shù)據(jù),與響應(yīng)時間進行同步Oracle的內(nèi)存大小與系統(tǒng)自身的業(yè)務(wù)特點有極大關(guān)系,配置不同的數(shù)據(jù)庫,性能表現(xiàn)就會不同;而即使在內(nèi)存一定的情況下,SGA的分配也會對性能產(chǎn)生很大的 800用戶并發(fā),這些都是用戶根據(jù)自身需求來規(guī)劃硬件的重要依據(jù)。 理。例如 點。例如OA系統(tǒng)統(tǒng)計并發(fā)用戶數(shù)量的經(jīng)驗 OA1000200具中,請求響應(yīng)時間通常會被稱為“TTLB”,即“Timetolastbyte”,意思是從發(fā)送一個請為“秒”或“毫秒”1-1所示。1-1Web7個部分組成,即(N1+N2+N3+N4)+(A1+A2+A3)。吞吐率TPS(TransactionPer 是LoadRunner中重要的性能參數(shù)指標(biāo)。點擊率(HitPerWebHTTPWeb應(yīng)用特有的一個指 客戶端可能向服務(wù)器發(fā)出多個HTTP請求。CPU利用率、磁盤利用1.21.2 10501000乃至上萬時就變成 試, 模塊主要由性能測試策略決定,讀者可以參考1.2.2節(jié)“性能測試用通常所有的用戶不會只使用一個或幾個業(yè)務(wù)模塊,一個應(yīng)用系統(tǒng)的每個功能模塊使用同能),又要模擬多用戶的“不同”操作(這里的“不同”指很多用戶同時對一個或用戶實際使用情況的測試,也是性能測試的內(nèi)容。通常按照用戶的實際使用人數(shù)比例來模擬各個模板的組合并況。作系統(tǒng)、Web服務(wù)器、數(shù)據(jù)庫服務(wù)器)性能測試結(jié)合起來進行。在通過工具模擬用戶操作 一起,在整個性能測試的后期進行。大數(shù)據(jù)量測試可以理解為特定條件下的業(yè)務(wù)或組服務(wù)器性能測試主要是對數(shù)據(jù)庫、Web服務(wù)器、操作系統(tǒng)的測試,目的是通過性能測Wb“全面性能測試模型”3部1部分:性能測試策略模型,這是整個性能測試模型的基礎(chǔ)。軟件類型決定著性能第2部分:性能測試用例模型,這是整個性能測試模型的 結(jié)合測試工具,把以上性能測試的8項內(nèi)容進一步歸納,形成5類測試用例:lllll測試的用例設(shè)計與前三種類型結(jié)合起來。例如LoadRunner就可以在進行壓力測試的同 3部分:模型的使用方法。本部分內(nèi)容討論如何在工作中使用“全面性能測試模 用,例如辦公自動化軟件、MIS系統(tǒng)等。一般應(yīng)用類軟件多根據(jù)實際情況來制定性能測試策略,例如OA系統(tǒng),既可以早開始,也可以最后進行性能測試,這類軟件受用戶因素影4類,即高度重視、中等重視、一般重1-1列出了性能測試策略制定的基本原則。1-11-1中可以看出:(1)“系統(tǒng)類軟件”、“特殊應(yīng)用類軟件”應(yīng)該從設(shè)計階段開始進OA系統(tǒng),仍然要高度測試,甚至根本不關(guān)心,對于性能要求較高的軟件產(chǎn)品也應(yīng)按照表1-1的策略來執(zhí)行性能 表1-2某銀行項目測試策略 OA1-3所1-3OA例1-4例 求客戶提出了性能方面的需求:要求系統(tǒng)響應(yīng)時間要加快,可以滿足2000個產(chǎn)品類主要用于一些單位信息的發(fā)布,用戶在50人以下。因此該類軟件屬于一影響性能測試策略的制定。因此,本節(jié)只是基本的參考方案。制定測試策略是十分的基礎(chǔ),決定著性能測試工作的投入。因此,要充分這一工作的重要性,認(rèn)識到只“性能測試用例模型”是“全面性能測試模型”的內(nèi)容。限于篇幅和本書主旨,本節(jié)僅細(xì)的內(nèi)容,讀者可以參考作者的另一本專著《Web性能測試實戰(zhàn)》。8“” 1-2獨立 塊(以簡稱“ ?!保┌l(fā)性能的重點是試一些統(tǒng)重要塊獨立運行情況,此可以其理解“單性能試”。只這些決系統(tǒng)能的“ 單元”性能定,后的性測試才意義。 模并發(fā)性能試是整性能測工作的 “ 務(wù)系統(tǒng) 息llll基于硬件的測試:主要通過各 ll高級服務(wù)器性能測試:主要指在特定的硬件條件下,由數(shù)據(jù)庫、Web服務(wù)器、操作系統(tǒng)相應(yīng)領(lǐng)域的專家進行的性能測試。例如,數(shù)據(jù)庫服務(wù)器由專門的DBA來 l l ll ll模型具體化原則。模型具體化是指把模型運用到具體的項目中去,這是前面所有指導(dǎo)原“或“”“或“”“”“”“”首先根 l檢查應(yīng)用程序代碼:通常情況下,很多程序的性能問題都是“寫”出來的。因此對于發(fā)現(xiàn)lOracle的大型數(shù)據(jù)庫都需要DBA進行正確的參數(shù)調(diào)整才能投產(chǎn);ll檢查硬件設(shè)置:磁盤速度、內(nèi)存大小等都是引起瓶頸的原因,因此這些也是分析的重l檢查網(wǎng)絡(luò):網(wǎng)絡(luò)負(fù)載過重會導(dǎo)致網(wǎng)絡(luò) lllCPUI/Olll是大多數(shù)用戶還是少數(shù)用戶遇到了問題?如果是少數(shù)用戶,這幾個用戶與其他用戶的操l系統(tǒng)資 l問題是否集中在某一類模塊中?l是客戶端還是服務(wù)器出現(xiàn)問題?l系統(tǒng)硬件配置是否合理?lllll lll如何 l開發(fā)階段的性能測試實施開發(fā)階段的性能測試主要指軟件試運行前的性能測試,即團 l用戶現(xiàn)場性能測試的實施用戶現(xiàn)場的性能測試有驗收測試的“味道”l計算機專業(yè)技能計算機領(lǐng)域的專業(yè)技能是測試工程師應(yīng)該必備的一項素質(zhì),這是做好IT背景的人也可以從事測試工作,但是一名要想獲得3個方面:()“”“本錄制與修改、回放測試等)。序。只有能夠進試開發(fā),才可以勝任諸如單元測試、集成測試、性能測試等Java、C#、C++之中的一門語言以及相應(yīng)的開發(fā)工 Unix、linux來運行的,這就要求測試人員掌握其基本的操作命令以及相關(guān)工具軟件的使用。而WebLogic、Websphere等中間件的安裝lIT企業(yè)從事石油、lIT企業(yè)從事石油、l個人素養(yǎng)作為一名優(yōu)秀的測試工程師,首先要對測試工作 1.5LoadRunner1.5LoadRunner是遠遠不夠的,深入地理解性能測試?yán)砟钍亲? 逐步踏入LoadRunner的性能測試世界5.1.1 ysis如 nnnnn5.1 試 第三步 才 應(yīng)時間過長、系統(tǒng)支持的最大并發(fā)用戶數(shù)過低、系統(tǒng)的應(yīng)用服務(wù)器CPU利用率過高或內(nèi)存 本節(jié)先介紹性能測試分析的基礎(chǔ)知識,然后介紹 確 內(nèi),由表及里,層層深入”5-1所示。5-1 包括應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的響應(yīng)時間。對比Tn和Ts,就很容易知道系統(tǒng)在哪些圖5-2客 5-3Buffer性能分 而道不然。即使有了正確的,也不一定能對系統(tǒng)的性能問題進行正確定位。例如,服把工作做透,才能把性能測試工作做好。 ysis對這些 LoadRunner的 ysis是一個獨立模塊,本節(jié)將介紹它的主要功能以及基本使用方法。在后面的5.2節(jié)中,將詳細(xì)介紹如何借助各類數(shù)據(jù)圖表來分析系統(tǒng)的性能問題。 ysis有4種方式:在Controller啟動場景前選中其菜單的“Run→AutoLoadysis”;在Controller 圖標(biāo);在Controller 圖標(biāo);從開始菜單依次點擊“MercuryLoadRunner→Applications→ 前兩種方式在打開ysis后會自動分析當(dāng)前場景的運行結(jié)果,后兩種方式僅打開ysis應(yīng)用程序,需要手動選擇文件來產(chǎn)生分析圖。在測試結(jié)束并完成數(shù)據(jù)收集后,就可以啟動ysis打開文件,將其導(dǎo)入Access數(shù)據(jù)庫,然后按照設(shè)置的模板打開默認(rèn)的結(jié)果分析圖。通常的分5-4所示。利用ysis進行分析的第一步是查看分析概要報告(ysisSummary)5-4述、HTTP響應(yīng)概述(Web測試)等。 在圖5-4所示的 ysis界面中,點擊 將進入到圖5-5所示的新的分析圖 ysis提供的全部分析圖。 5-5虛擬用戶(Vusers)圖虛擬用戶圖分為運行狀態(tài)的虛擬用戶圖、虛擬用戶概要圖和集合3類。主要借助其查看場景與會話的虛擬用戶行為。Errors圖Errors圖主要有錯誤統(tǒng)計、每秒錯誤數(shù)量兩類。借助Errors圖可以發(fā)現(xiàn)服務(wù)器事務(wù)(Transactions)圖ysis和事務(wù)相關(guān)的分析圖表有事務(wù)綜述圖、事務(wù)平均響應(yīng)時間圖、每秒通過事務(wù)數(shù)圖、每秒通過事務(wù)總數(shù)圖、事務(wù)性能圖、事務(wù)響應(yīng)時間與負(fù)載Web資源(WebResources)圖WebWeb服務(wù)器的吞吐率圖、點擊率圖、返回的HTTPHTTP網(wǎng)頁細(xì)分(WebPageBreakdown)圖在ControllerAstics→Distribution”5-65-6中同時選中“Enablethefollowingdiagnostics”和“WebPageDiagnostics(MaxAllowedDistribution10%)”復(fù)選框。5-6 系統(tǒng)資源(SystemResources)圖系統(tǒng)資源圖顯示在場景運行期間,由聯(lián) 獲得 源的方法,可以參考第3章的相關(guān)內(nèi)容。在5.4節(jié)中, ysis分析圖 ysis提供的幾十個 ysis以外的各種分析工具。例如,可以借助Oracle提供的 與分析工具,也可以借助WebLogic提供的用戶是否全部運行,最大運行并發(fā)用戶數(shù)(umRunningVusers)是否與場景設(shè)計 CPU的利用率和內(nèi)存使用情況,尤其要注意查看是否存在內(nèi)存泄漏問題。這樣做是由于很CPU利用率過高或內(nèi)存不足。CPU、內(nèi)存、帶寬沒有出現(xiàn)瓶頸,否則測試結(jié)果無效。而待測試服務(wù)器,則重點分析測試過程中CPU和內(nèi)存是否出現(xiàn)了瓶頸:CPU需用)能正常運行,則需要重新設(shè)計場景或調(diào)整用戶加載與退出方式再次進試。對于事務(wù),5-7所示的5-7 可能是測 5-8ysis對虛擬用戶和事務(wù)提供了非常強大的功能,可以每一個用戶及其相關(guān)事務(wù)的執(zhí)行情況。這些內(nèi)容可以在ysis菜單“Reports→CrystalReport”下找到。這5.3節(jié)介紹。生成緩存文件導(dǎo)致用戶不能正常而產(chǎn)生的錯誤;5-9查看錯誤分類統(tǒng)計,作為優(yōu)化系統(tǒng)的參考。例如Web性能測試,當(dāng)出現(xiàn)瓶頸時往往需要查看服務(wù)器的錯誤統(tǒng)計信息結(jié)果:如果“超時錯誤”90%以上,可能需要提高硬件配置;Web性能測試。查看Web5.1.3一 例近兩年,隨著網(wǎng)絡(luò)的發(fā)展,如雨后春筍般出現(xiàn)。尤其一些熱門的,擁有巨大的用戶群體。如一些知名的寬頻,在社會發(fā)生熱點期間的并發(fā)用戶數(shù)量會達到百萬級以上。巨大的并發(fā)量對系統(tǒng)的性能提出了非常高的要求。本案例探討的是一個已經(jīng)上線的遇到的性能問題,該系統(tǒng)的設(shè)計目標(biāo)是每天00%,導(dǎo)致Oracle數(shù)據(jù)庫發(fā)生停止服務(wù)的現(xiàn)象。數(shù)據(jù)庫不工作, 發(fā)布 門戶來欣 1.首先,把數(shù)據(jù)庫的操作分為Insert、Update、Delete、Select四種,分 的結(jié)構(gòu),可以看出發(fā)布系統(tǒng)出問題的可能性不大,因為這是一個成型的產(chǎn)品。因此,問題更可能會出現(xiàn)在的門戶或門戶與發(fā)布系統(tǒng)的接口上。經(jīng)過進一步的分析,了解到門戶用戶首頁:首頁是導(dǎo)航頁面,主要操作有查找熱點或自己關(guān)注的 頁面等 用 2.不難看出 設(shè)計 5-1硬件配軟件配服務(wù)器:兩臺Dell2850CPU:Xeon3.0GB′2操作系統(tǒng):企業(yè)版Windows操作系統(tǒng):企業(yè)版WindowsWeb ysis進行分析,得到了如圖5-10的 首頁(Index頁面)不能 181.8345-1050置后,立刻發(fā)現(xiàn)了一個參數(shù)配置問題:Oracle數(shù)據(jù)庫的運行模式是“專有服務(wù)器模式”!而關(guān)于Oracle在服務(wù)器模式下,用戶連接所需要的全部資源在PGA中進行分配。該內(nèi)存區(qū)為指定私有連接,其他進程不能。連接采用一對一的連接方式,能很快地響應(yīng)用戶的請件的限制比較大。為了克服這種情況,Oracle提供了共享服務(wù)器運行模式,即用一個服務(wù) 獨立場景測試下面是Oracle調(diào)整為“共享服務(wù)器模式”后的測試實施過程。為了更好地對 從圖5-11中可以看出,“Action”事務(wù)即打開 頁面的平均時間是1.354秒,這是非常好的結(jié)果。但是應(yīng)該注意到:半小時內(nèi)有超過17萬個 務(wù)十分艱巨,而半小時內(nèi)超過17萬個 與圖5-11的 變大,這是用戶數(shù)量變大的正常反應(yīng);事務(wù)通過率85%與82%相比沒有太大變化。稍稍5-118005-129005-13找出了三個SQL程序本身的一個原因:SQL語句消耗了大量的數(shù)據(jù)庫時間,其他問題極有可能是語句不合理引起的。主要推理如下:當(dāng)一些反復(fù)執(zhí)行的SQL語句效率過低時,首先會造成高速緩存I/OI/OCPU。因此整個系統(tǒng)的瓶這兩次還有一個奇怪的現(xiàn)象:一方面事務(wù)響應(yīng)時間較快,另一方面卻有大量的事務(wù)沒有響應(yīng)。僅根據(jù)目前的還看不出直接原因。但這也很可能是前面的三個SQL ysis打開圖5-14的“事務(wù)平均響應(yīng)時間圖”和圖5-15的“建立第一個緩沖的 ysis打開圖5-14的“事務(wù)平均響應(yīng)時間圖”和圖5-15的“建立第一個緩沖的5-145-15SQL語句進行優(yōu)化,然后對系統(tǒng)進SQL語句調(diào)整后的測試開發(fā)人員優(yōu)化了SQL語句后,并對900個用戶進行并發(fā)、持續(xù)1.5小時的壓力測試,如圖5-16所示。從圖中可以看出,調(diào)整后系統(tǒng)的性能非常穩(wěn) 5-16SQL ysis打開圖5-17所示的事務(wù)平均響應(yīng)時間圖,可以看到整個測試過程“打 由此可以得出結(jié)論:調(diào)整SQL5-17 根據(jù)常理,本次測試用的是普通的PC服務(wù)器,900個并發(fā)用戶用1秒的響應(yīng)時間顯然不合理,39秒才符合實際情況。1秒的事務(wù)平均響應(yīng)時間只是一種假像,是系統(tǒng)存在性 頁面”的性能,在圖5-16中有穩(wěn)定表現(xiàn),可以認(rèn)為測試過關(guān)!3. 150PV(頁面瀏覽500個并發(fā)用戶。1.頁面無緩存、500運行的最大用戶數(shù):1000個5-185-2事務(wù)響應(yīng)時間(秒5-19CPU5-3CPUOracleWeb5-20數(shù)OracleCPU82.723%,說明數(shù)據(jù)庫系統(tǒng)穩(wěn)定運行。Web服務(wù)CPU67.5438PV均值為:67.126*3600*8≈193150PV。2.采用靜態(tài)頁面緩存方式、500用戶并發(fā)測試場景持續(xù)執(zhí)行時間:6分鐘5-215-225-22CPU5-6CPU利用率 頁 5-23數(shù)OracleWebOracleCPU8.267%,這說明靜態(tài)頁面緩存技術(shù)大大節(jié)省了對數(shù)據(jù)庫的資源消耗,系統(tǒng)更加穩(wěn)定運行。WebCPU67.3238PV均值為:69.043*3600*8≈199萬 完成ysis是遠遠不夠的。在實際工作中,往往會借助各種系統(tǒng)工具以及各方面的綜合知識找出系統(tǒng)的瓶頸。例如在本項目中,Oracle自帶的管理工具起了至關(guān)重要的作用,本案例恰恰是借助它發(fā)現(xiàn)了引起系統(tǒng)瓶頸的SQL語句,借助這個突破口逐步解決了其他性能問 ysis的各種分析報表,不能讓任何一個性能 7.1JavanJavannnJavaJava虛擬用戶 主要有JavaVuser、Corba-Java、RMI-Java、EJB等類型。這些類 JavaJavaVuserJava虛擬用戶,中可以使用標(biāo)準(zhǔn)的Java語言。這種CVuser一樣,非常廣泛。JavaVuserVuGen錄制的,然后使用標(biāo)準(zhǔn)的JavaLoadRunnerJava方法來增強該。RMI-Java虛擬用戶適用于測試RMI( 方法調(diào)用)Java應(yīng)用程序或小程序。選擇RMI-Java用戶進行錄制,VuGen可以創(chuàng)建對應(yīng)的Java 。完成錄制后,可以使用JDK或自定義類,通過標(biāo)準(zhǔn)的Java代碼來增強或修改 ,還可以通過特定于LoadRunner的Java方法增強該 EJB虛擬用戶專門用于測試EnterpriseJavaBeans對象。采用EJB協(xié)議,VuGen會自 以測試EJB功能,無需錄制或編程,這和標(biāo)準(zhǔn)的JavaVuser明顯不同。在使用EJB協(xié)議類型的虛擬用戶生成 前,需要指定JNDI屬性和關(guān)于應(yīng)用程序服務(wù)器的其他信息。LoadRunner的EJB檢測器首先掃描應(yīng)用程序服務(wù)器并確定哪些EJB可 需要注意的是,創(chuàng)建EJB虛擬用戶測試 nnerEJB檢測器,而且檢測器必須處于活動狀態(tài)。EJB檢測器是一個獨立 裝有效的JDK環(huán)境。Java7-2JavaActionsinit、end部分7-1JavaVuser7-2JavaVuserActionsJava 所在 會更快。下一章將重點介紹如何用.NET來開發(fā)性能測試 Java虛擬用戶適用范圍非常廣,歸納起來主要有兩大類:一類是不太適合錄制的業(yè)務(wù)功能點的性能測試,例如網(wǎng)頁上Http文件的 等;另一類是基于Java語言開發(fā)的應(yīng)用系統(tǒng)的性能測試,這類應(yīng)用更適合采用Java虛擬用戶進 JavaVuserlWebl vaVuser來測試這些業(yè)務(wù)的執(zhí)行效率。lJavaJavaJava應(yīng)用相比,JavaJava虛擬用戶,因為可以直接對一些方Java開發(fā)工具包的簡稱(JavaDevelopmentKit),SunJDK1.2以后的版本Java2。JDKJ2SDK(Java2SoftwareDevelopmentKit),J2SDK1.4以上的版本。JDK可以從/\j2sdk1.4.1”路徑下,LoadRunner安裝在“D:\ProgramFiles\Mercury rcury WindowsXP 級”選項卡,如圖7-3所示。7-4的“系統(tǒng)變量”CLASSPATHCLASSPATH,則點擊“新建”7-5所示的界面。通常安裝了LoadRunnerCLASSPATH變量。這里需要注意CLASSPATH變量值的最前面輸入當(dāng)前路徑“.”JDK的類庫路徑,;7-4中,CLASSPAT變量值是“.;C:\j2sdk1.4.1\libC:\j2sdk1.4.1\jre\lib;D:\Tomcat-5.0\common\lib;D:\ProgramFiles\MercuryInctive\MercuryLoadRunner\classes;D:\ProgramFiles\MercuryInctive\MercuryLoadRunner\l7-37-47-5第四步:在圖7-4的“系統(tǒng)變量”中,選中Path,點擊編輯,會進入圖7-6所示的界面。在變量值的最前面填上JDK開發(fā)工具包的bin 7-6PathPath變量值的最前面輸入當(dāng)前路徑“·JDKbin路徑,如“.;C:\j2sdk1.4.1\bin;C:\j2sdk1.4.1\jre\bin;”Java虛擬用戶可能產(chǎn)生運行錯誤?!?;C:\j2sdk1.4.1\bin;C:\j2sdk1.4.1\jre\bin;D:\ProgramFiles\MercuryInctive\MercuryLoadRunner\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\ProgramFiles\In\Wireless\Bin\”。 要想掌握J(rèn)ava虛擬用戶的使用,測試 Java語言方面的技能,并熟練使用至少一種Java集成開發(fā)工具,例如Eclipse;二是掌握LoadRunner的JavaAPI,JavaAPI是 Vuser函數(shù)的基礎(chǔ),通過LoadRunner的JavaAPI可以在 不難看出,JavaJavaVuserJavaJava語言方面JavaJava7-17-1Java詳細(xì)內(nèi)Java Java Java詳細(xì)內(nèi)Java Java Java類定義規(guī)范 Java Java Java名字空間及規(guī) Java I/O 例 2 2JavaInternet2使用InetAddress2URL Socket JDBC編程詳細(xì)內(nèi)Java ServletAPI Servlet JavaServer JSPJSPJava開發(fā)知識。EclipseNetBeans、SunONEStudioBorlandJbuilder類似的,一種基于Java的整合型可擴展開發(fā)平臺,也是目前最著名的開源項目之一。IBM一直在大力支持該2001114千萬到該項目的研發(fā),這也是Eclipse項Eclipse專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術(shù)項目組成,具體包括四個組成部 tform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE tform則是一個開放的可擴展IDE,提供了一個通用的開發(fā)EclipseSDK(軟件開發(fā)包)是Eclipse tform、JDT和PDE所生產(chǎn)的組件合并,它們可以從 一個具有豐富特性的開發(fā)環(huán)境,允許開發(fā)者有效地建造可以無縫集成到Eclipse 中的工具。EclipseSDK由Eclipse項目生產(chǎn)的工具和來自其他開放源代碼的第 在接下來的內(nèi)容里,將介紹用EclipseJava虛擬用戶中調(diào)用編譯好的類文件。關(guān)于EclipselJava7-77-87-97-107-10中,單擊“完成”Java7-11中可以看到新建的項7-11lJava在圖7-13中,輸入包名稱“com.lr.test”、類名稱“ 可。點擊“完成”,進入源代碼編輯界面,如圖7-14所示。7-137-14 oWord!");”如圖7-14所示。代碼編輯完成后,按照圖7-15編譯與運行程序。如果編譯執(zhí)行成功,可以在Eclipse的控制臺看到輸出結(jié)果,如圖7-16所示。7-15Java7-16lJaval進入到 到b”,這樣LoadRunner創(chuàng)建的所有Java 入語句“importcom.lr.test.*;”7-17JavalVirtualUser7-187-18與C相比,JavaC...” 保存后,接下來可以放到Controller中來運行,讀者可以自己進行實驗。需 的客戶機必須安裝JDK環(huán)境并正確設(shè)置路徑,否則將會出現(xiàn)如圖7-19所示的提示。7-19JDK LoadRunnerJavaLoadRunner為VuserJavaAPIlrapi.lr類的靜JavaAPIJava虛擬用戶的可用性。本節(jié)將介紹常用的JavaAPI的用法,的函數(shù)及其用法讀者可以參考LoadRunner聯(lián)機手冊。Java虛擬用戶中,JavaAPIVuser函數(shù)中的用法基本一致,只是寫法Java語言的特點。事務(wù)函數(shù)(Transactionintlr.start_transaction(Stringtransaction_name)intlr.end_transaction(Stringtransaction_name,intstatus)信息函數(shù)(InformationalStringlr.get_group_name()VuserStringlr.get_host_name():返回執(zhí)行 的負(fù) Stringlr.get_master_host_name()Controllerintlr.get_scenario_id()intlr.get_vuser_id()VuserID運行時函數(shù)(Run-Timevoidlr.peek_events();:指示可以暫停 intlr.rendezvous(Stringrendezvous_name):在 voidlr.think_time(doubletime):暫 字符串函數(shù)(StringStringlr.eval_string(Stringinstring)intlr.eval_int(Stringname)intlr.next_row(Stringdat_file)消息函數(shù)(Messageintlr.debug_message(intmessage_level,Stringmessage)intlr.error_message(Stringmessage):向Vuserintlr.log_message(Stringmessage)Vuserintlr.message(Stringmessage)intlr.output_message(Stringmessage)intlr.vuser_status_message(Stringmessage)Controller窗口中的7.3JavaJavaVuserJava SocketgiveOutWork()synchron一 作。服務(wù)器端程序即WorkServer.java,包含WorkQueue、Accept ver三類。類WorkQueue主要完成任務(wù)隊列的構(gòu)建與管理工作;類Accept Thread繼承線程類Thead,以獨立線程的方式來處理客戶端申請任務(wù)并保存客戶端對任務(wù)的處理結(jié)果;類WorkServer是服務(wù)器端的執(zhí)行類,主要完成對WorkQueue、Accept packagecom.loadrunner.test;importjava.io.*;import @authorpublicclass Socketsocket; BufferedReaderis;//讀出服務(wù)器返回的輸入流PrintWriteros;//反饋給服務(wù)器的輸出流*(Sockets)trythis.socket=this.is=newBufferedReader(newthis.os=newPrintWriter(s.getOutputStream()); Number=Integer.parseInt(is.readLine());}catch(Exceptione)System.err.println("Error:Cannotinitthe}}publicintapplyWork(){intworkNumber=-1;try{workNumber=Integer.parseInt(this.is.readLine());//讀出申請結(jié)果if(workNumber==-1){System.out.println("ServerhasnoWorktodo");}}catch(Exceptione)System.err.println("Error:Cannotapplythe}return}@returndealwith@authorpublicintdealWithWork(intworknumber)return1;}@returnensure@authorpublicbooleanfinishWork(intworkNumber){booleanfinish=false;try{finish=Boolean.valueOf(this.is.readLine()).booleanValue();if(finish==false){System.out.println("Error:Workfinishcannotbeset!");}}catch(Exceptione)System.err.println("Error:Cannotstartthenetwork!");}return}} packagecom.loadrunner.test;importjava.io.*;import隊列{原始N個任務(wù),接受申請返回任務(wù)號,檢查任務(wù)是否正在處理、接受 @authorclassprivateint[]WorkFlag;//0-未申請;1-申請后正在處理;2-處理完成privateinttotal;int WorkQueue(int{this.WorkFlag=newint[this.total];for(inti=0;i<this.total;i++){}}intgiveOutWork(){intk=this.nowNumber;try}catch(InterruptedExceptione){}returnk;}//truefalse。booleanfinishWork(intworknumber){intif{returntrue;System.err.println("Work"+number+"Cannotbe}return}} class Threadextends{privateSocketsocket=null;privateint privateWorkQueueworkQueue; Thread(Socketsocket,WorkQueue { }intgiveOutWork()//{}catch(Exception{}return}booleanfinishWork(intworknumber)//{return}publicvoid{BufferedReaderis=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintWriteros=newPrintWriter(socket.getOutputStream());os.println(this.Number);Stringstep=is.readLine();{}intworknumber=this.giveOutWork();{}//如果沒有被處理過(1),則可以提交客戶端的結(jié)果booleanresult=this.finishWork(worknumber);{System.out.println("Work+"doneby }}catch(Exception{}}}publicclassWorkServerpublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubServerSocketserverSocket=null;booleanlistening=true;WorkQueuequeue=newtry{serverSocket=new}catch(IOException{System.err.println("Couldnotlistenonport:8000.");}{ while(listening){Socketsocket=newsocket=serverSocket.accept();//程序?qū)⒃诖说群蚩蛻舳说倪B接new }}catch(Exception{}}}JavaTest.javaEclipse中開發(fā)完成。在Test.javaTest,用于調(diào)用.java中的方法。下面是測試程序Test.java的程序 packagecom.loadrunner.test;importjava.io.IOException;import.Socket;import.UnknownHostException;publicclassTest{publicvoidApplyProccess()throws{ Socket=null;try{Socket=new int int booleanensureResult= {System.err.println("Error:Workcheckerror!");}{System.out.println("Finishwork}}catch(UnknownHostExceptione){System.err.println("Don'tknowabouthost:.");}catch(IOExceptione)System.err.println("Couldn'tgetI/Ofortheconnectionto:}}}上面三個程序在Elipse中編譯完成后,將會按照類文件的包名稱“com.loadrunner.test” 結(jié)構(gòu)“com\loadrunner\test”,下面可以看到編譯后的class文件。啟動VuGen,先創(chuàng)建空的虛擬用戶 下,如圖7-20所示。圖7-20虛擬用 結(jié) ,以調(diào)用Test類中的Test()方法。修改后的如圖7-21所示。在Eclipse中運行WorkServer.java,啟動WorkServer服務(wù)器后才可以調(diào)試 uGen中運行 ,如果在運行結(jié)果Log中看到“FinishworkNo.*”,則表示 確,可以成功申請并處理任務(wù)。圖7-22所示為成功申請并處理了1號任務(wù)。7-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 固定資產(chǎn)購銷合同
- 飛機操作考試題庫及答案
- 網(wǎng)絡(luò)行業(yè)網(wǎng)絡(luò)安全防護技術(shù)研究方案
- 智慧物流運輸管理平臺開發(fā)方案
- 飲料冰凍化培訓(xùn)
- 幼兒園藝術(shù)節(jié)活動的策劃與實施計劃
- 單位施工裝修合同
- 航空科學(xué)與技術(shù)作業(yè)指導(dǎo)書
- 青白江區(qū)電梯安全管理人員加試試題集和答案
- 品牌文化的構(gòu)建方法計劃
- “德能勤績廉”考核測評表
- GB/T 32119-2023海洋鋼制構(gòu)筑物復(fù)層礦脂包覆腐蝕控制技術(shù)
- 罩棚檐口標(biāo)識更換施工方案
- 英語演講比賽評分標(biāo)準(zhǔn)-評分表
- 爐壁溫度計算詳解
- 胃腸道生活質(zhì)量指數(shù)(GIQLI)
- 綠色建筑驗收自評報告全
- 小說中景物描寫的作用
- 第十二講 建設(shè)社會主義生態(tài)文明PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 工商管理實習(xí)周記十篇
- 幼兒園體育游戲活動評價表
評論
0/150
提交評論