LoadRunner性能測試培訓(xùn)課件_第1頁
LoadRunner性能測試培訓(xùn)課件_第2頁
LoadRunner性能測試培訓(xùn)課件_第3頁
LoadRunner性能測試培訓(xùn)課件_第4頁
LoadRunner性能測試培訓(xùn)課件_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

大家好1大家好1LoadRunner性能測試培訓(xùn)質(zhì)量管理部竇志剛2LoadRunner性能測試培訓(xùn)質(zhì)量管理部竇志剛2性能測試基礎(chǔ)知識性能測試常用術(shù)語LoadRunner組件-VirtualUserGeneratorLoadRunner組件-ControllerLoadRunner組件-Analysis基本調(diào)優(yōu)目標(biāo)3性能測試基礎(chǔ)知識目標(biāo)3什么是性能測試通過狹義的性能測試模擬生產(chǎn)運行的業(yè)務(wù)壓力或者用戶使用場景來測試系統(tǒng)的性能是否滿足生產(chǎn)性能的要求。廣義的性能測試指壓力測試、負(fù)載測試、強度測試、并發(fā)測試、大數(shù)據(jù)量測試、可靠性測試等和性能相關(guān)的測試統(tǒng)稱。性能測試基礎(chǔ)知識4什么是性能測試性能測試基礎(chǔ)知識4壓力測試對系統(tǒng)不斷施加壓力的測試,是通過確定一個系統(tǒng)的瓶頸或不能接收用戶請求的性能點,來獲得系統(tǒng)提供的最大服務(wù)級別的測試。目的:是發(fā)現(xiàn)在什么條件下系統(tǒng)的性能變得不可接受,并通過對應(yīng)用程序施加越來越多的負(fù)載,直到發(fā)現(xiàn)應(yīng)用程序性能下降的拐點。負(fù)載測試對系統(tǒng)不斷增加壓力或增加一定壓力下的持續(xù)時間,直到系統(tǒng)的一些性能指標(biāo)達(dá)到極限,例如響應(yīng)時間超過預(yù)定目標(biāo)或某種資源以及達(dá)到飽和。區(qū)別壓力測試側(cè)重壓力大小,負(fù)載測試往往強調(diào)壓力持續(xù)的時間。性能測試基礎(chǔ)知識5壓力測試性能測試基礎(chǔ)知識5強度測試強度測試主要是檢查程序?qū)Ξ惓G闆r的抵抗能力,如運行最大存儲空間,進行可能導(dǎo)致系統(tǒng)崩潰、磁盤數(shù)據(jù)抖動、網(wǎng)卡滿負(fù)荷等。主要是異常條件下驗證系統(tǒng)是否穩(wěn)定以及性能方面是否容易擴展。疲勞強度測試疲勞強度測試是一類特殊的強度測試,主要測試系統(tǒng)長時間運行后的性能表現(xiàn),如一般常見的7X24小時的壓力測試。性能測試基礎(chǔ)知識6強度測試性能測試基礎(chǔ)知識6并發(fā)測試主要指當(dāng)測試多用戶并發(fā)訪問同一個應(yīng)用、模塊、數(shù)據(jù)時是否產(chǎn)生隱藏的并發(fā)問題,如內(nèi)存泄漏、線程鎖、資源爭用問題,幾乎所有的性能測試都會涉及并發(fā)測試。通用說明:持續(xù)掛載一定數(shù)量用戶不斷開。LoadRunner進行并發(fā)測試相對較少,一般使用測試儀很普遍。大數(shù)據(jù)量測試一般是針對某些系統(tǒng)存儲、傳輸、統(tǒng)計查詢等業(yè)務(wù)進行大數(shù)據(jù)量的測試。如CA系統(tǒng)上千萬條的數(shù)據(jù)測試。性能測試基礎(chǔ)知識7并發(fā)測試性能測試基礎(chǔ)知識7可靠性測試在給系統(tǒng)加載一定業(yè)務(wù)壓力的情況下,使系統(tǒng)運行一段時間,檢測系統(tǒng)是否穩(wěn)定。如施加壓力讓CPU資源保持在90%以上的使用率,連續(xù)對系統(tǒng)加壓24個小時,分析系統(tǒng)是否穩(wěn)定。性能測試基礎(chǔ)知識8可靠性測試性能測試基礎(chǔ)知識8性能指標(biāo)9性能指標(biāo)9并發(fā)嚴(yán)格意義上的并發(fā):即所有的用戶在同一時刻做同一件事情或者操作,一般是同一類型的業(yè)務(wù)廣義的并發(fā):即所有的用戶對系統(tǒng)發(fā)出了請求或進行了操作,這些請求或者操作可以是相同的,也可以是不同的。LoadRunner壓測并發(fā)的弱點:

一個IP只能支持65535個連接(理論上),因此需要壓測百萬級別的并發(fā),必須很多IP地址支持才能實現(xiàn)。性能測試基礎(chǔ)知識10并發(fā)性能測試基礎(chǔ)知識10性能測試基礎(chǔ)知識防火墻并發(fā)測試標(biāo)準(zhǔn):ConcurrentconnectionsHost和DUT之間同時連接的總數(shù),并假設(shè)所有連接上都有數(shù)據(jù)傳輸。即同時可以掛載的用戶數(shù)量。11性能測試基礎(chǔ)知識防火墻并發(fā)測試標(biāo)準(zhǔn):Concurrentc請求響應(yīng)時間請求響應(yīng)時間是指從客戶端發(fā)出請求到得到響應(yīng)的整個過程的時間。從客戶端發(fā)送一個請求開始計時,到客戶端接到從服務(wù)器端返回的響應(yīng)接口計時結(jié)束。另外一些工具中,會被稱為“TTLB”,“Timetolastbyte”。從發(fā)送一個請求開始,到客戶端收到最好一個字節(jié)的響應(yīng)為止所耗費的時間。事務(wù)響應(yīng)時間(TransactionResponseTime)事務(wù)可能是一系列的請求組成,事務(wù)的響應(yīng)時間主要是針對用戶而言,是為了向用戶說明業(yè)務(wù)響應(yīng)時間而提出的。性能測試基礎(chǔ)知識12請求響應(yīng)時間性能測試基礎(chǔ)知識12CPS(ConnectionPerSecond)新建測試的主要目的是測試被測設(shè)備的處理能力。單位時間內(nèi)能夠建立的連接數(shù)越多,說明被測試設(shè)備的處理器能力越強。一般只關(guān)心建立TCP連接的速率,因此使用RST方式關(guān)閉連接。吞吐率(Throughput)單位時間內(nèi)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量,是衡量網(wǎng)絡(luò)性能的重要指標(biāo)。Loadrunner記錄的Throughput是接收到服務(wù)器返回的所有字節(jié)數(shù)之和,與本地發(fā)出的字節(jié)數(shù)無關(guān)!和網(wǎng)絡(luò)帶寬的關(guān)系:TPS*返回數(shù)據(jù)包的大小=Throughput<帶寬吞吐量網(wǎng)絡(luò)上傳輸?shù)臄?shù)量量的總和。吞吐量/傳輸時間,即吞吐率。性能測試基礎(chǔ)知識13CPS(ConnectionPerSecond)性能測試TPS(TransactionPerSecond)每秒鐘系統(tǒng)能夠處理的交易或者事務(wù)的數(shù)量。是衡量系統(tǒng)處理能力的重要指標(biāo)。一般而言,評價系統(tǒng)性能均以每秒完成的技術(shù)交易的數(shù)量來衡量系統(tǒng)整體處理能力取決于處理能力最低模塊的TPS值HPS點擊率每秒鐘用戶向Web服務(wù)器提交的HTTP請求數(shù)。是Web應(yīng)用特有的一個指標(biāo):Web應(yīng)用是“請求-響應(yīng)”模式,用戶發(fā)出一次申請,服務(wù)器就處理一次。HPS一般與TPS成正比關(guān)系,是B/S系統(tǒng)中非常重要的性能指標(biāo)之一性能測試基礎(chǔ)知識14TPS(TransactionPerSecond)性能測資源利用率監(jiān)控不同系統(tǒng)資源的使用程度,如服務(wù)器的CPU、磁盤利用率、內(nèi)存、網(wǎng)絡(luò)等。是測試和分析瓶頸的主要參數(shù)。性能測試基礎(chǔ)知識15資源利用率性能測試基礎(chǔ)知識15場景(Scenario)在LoadRunner中主要表現(xiàn)為Controller中設(shè)計與執(zhí)行測試用例中的用戶場景。如在controller中選擇虛擬用戶腳本,設(shè)置虛擬用戶數(shù)量,配置虛擬用戶運行時的行為,選擇負(fù)載發(fā)生器,設(shè)置執(zhí)行時間等。負(fù)載發(fā)生器(LoadGenerator)用于產(chǎn)生壓力的真實機器,受controller控制,可以使用戶腳本在不同的機器上執(zhí)行。性能測試中,通常由一個controller控制多個LoadGenerator對測試系統(tǒng)進行加壓。虛擬用戶(Vuser)模擬現(xiàn)實中的真實用戶,通過虛擬用戶腳本模擬真實用戶的行為。LoadRunner常用術(shù)語16場景(Scenario)LoadRunner常用術(shù)語16虛擬用戶腳本VuserScript通過VuserGenerator錄制或者開發(fā)的腳本,用來模擬用戶的行為。事務(wù)(Transaction)業(yè)務(wù)上通常是用戶的一個或者一系列操作,代表一定的功能;測試人員可以將一個或者多個操作步驟定義為一個事務(wù),來衡量這部分的用戶并發(fā)響應(yīng)時間。思考時間(ThinkTime)用戶思考時間,為了模擬更接近用戶的真實行為而引進的概念。LoadRunner常用術(shù)語17虛擬用戶腳本VuserScriptLoadRunner常用集合點(Rendezvous)LoadRunner通過集合點實現(xiàn)真正意義上的并發(fā)。添加在比較重要的操作動作之前;LoadRunner常用術(shù)語18集合點(Rendezvous)LoadRunner常用術(shù)語1LoadRunner工作原理19LoadRunner工作原理19錄制啟動應(yīng)用程序并將業(yè)務(wù)流程錄制到腳本中。VuGen為錄制的每個操作創(chuàng)建一個步驟。完成錄制后,VuGen生成腳本序列,從而形成Vuser腳本。驗證將腳本作為單獨的測試運行,以此驗證其功能并找出潛在的問題。增強向腳本中添加增強功能,使它能夠更準(zhǔn)確的模擬業(yè)務(wù)流程,并使能夠獲得重要數(shù)據(jù)。添加事務(wù),內(nèi)容檢查和參數(shù)。準(zhǔn)備進行負(fù)載測試LoadRunner-VuserGenerator20錄制LoadRunner-VuserGenerator20常用協(xié)議(Infosec常用協(xié)議)Web(HTTP/HTML)JavaVuserWebServicesWindowssocketsWeb協(xié)議(NSAE/CA/NetSign/NetPass/Bisafe)JavaVuser(NetSign/NetPass/CA)WebServices(RA)Windowssockets(NetSign/NSAESM2算法)VuserGenerator-錄制21常用協(xié)議(Infosec常用協(xié)議)VuserGeneratWeb協(xié)議錄制HTML-basedscript

基于瀏覽器的應(yīng)用程序和VBScriptURL-basedscript

不是基于瀏覽器的應(yīng)用程序

基于瀏覽器的應(yīng)用程序包含了javascript,并且該腳本向服務(wù)器發(fā)送了請求,如DataGrid分頁按鈕

基于瀏覽器的應(yīng)用程序使用了HTTPS安全協(xié)議如果使用HTML-basedscript模式錄制完成后,回放失敗。建議修改為URL-basedscript模式來錄制。VuserGenerator-錄制Web協(xié)議22Web協(xié)議錄制VuserGenerator-錄制Web協(xié)議HTML-basedscript和URL-basedscript區(qū)別HTML-basedscript產(chǎn)生的腳本描述和用戶的操作一致,能夠非常直觀的看到用戶的操作流程。直接創(chuàng)建的URL(web_url),表單提交(web_submit_form),鏈接(web_link)和圖像(web_image)等函數(shù)URL-basedscript產(chǎn)生的腳本,所有的鏈接、圖像請求和URL操作都被錄制為web_url函數(shù)中,表單提交被錄制為web_submit_data函數(shù)。VuserGenerator-錄制Web協(xié)議23HTML-basedscript和URL-basedscVuserGenerator-錄制Web協(xié)議24VuserGenerator-錄制Web協(xié)議24腳本錄制的基本原則充分考慮腳本的執(zhí)行效率性能測試腳本關(guān)注的是如何模擬用戶的真實行為,應(yīng)該接近用戶的真正操作。錄制完成后盡量不要增加過多的內(nèi)容,如檢查點、循環(huán)等操作錄制重要的用戶業(yè)務(wù)建議錄制常用的、使用頻率較高的業(yè)務(wù)進行錄制選擇需要的進行錄制如果一些操作對用戶關(guān)注的業(yè)務(wù)沒有影響,可以不進行錄制。VuserGenerator-錄制Web協(xié)議25腳本錄制的基本原則VuserGenerator-錄制WebInfosec腳本錄制應(yīng)用測試:完全模擬用戶的各個重要的操作進行系統(tǒng)測試;Infosec產(chǎn)品測試:避開用戶的各種繁瑣操作,假設(shè)用戶沒有思考時間,所有操作都是連續(xù)性的,這樣才能對被測服務(wù)器產(chǎn)生最大的性能壓力。如證書下載流程:產(chǎn)品測試的腳本盡可能融合到一個頁面中,避免頻繁錄入提交的操作;如證書下載流程:用戶注冊-申請證書-下載證書內(nèi)部測試中,建議將所有的流程放在一個JSP頁面中進行處理,這樣會對被測設(shè)備產(chǎn)生最大壓力,能夠最大化的發(fā)現(xiàn)產(chǎn)品存在的問題。VuserGenerator-錄制Web協(xié)議26Infosec腳本錄制VuserGenerator-錄制JavaVuser根據(jù)測試流程,直接進行Java接口的調(diào)用,編寫測試腳本LoadRunner對Java版本的支持,需要根據(jù)實際情況進行確認(rèn)。如果版本不正確,編譯過程會體現(xiàn)相關(guān)的錯誤信息。可以指定JVM堆棧大小從目前的使用情況來看,不是很適合進行穩(wěn)定性測試。適用產(chǎn)品:NetSign、NetPass、NetCert;有JavaAPI的都可以支持。VuserGenerator-錄制Java協(xié)議27JavaVuserVuserGenerator-錄制JaJavaVuser調(diào)用問題可以和腳本放在同一個目錄;但只有當(dāng)前的虛擬用戶腳本可以調(diào)用;放在LR調(diào)用的JDKlib目錄下,所有用戶腳本都可以調(diào)用;多臺agent同時調(diào)用javavuser時建議使用這種方式多臺計算機聯(lián)機測試,所有運行測試腳本的客戶機必須安裝JDK環(huán)境并正確設(shè)置路徑。VuserGenerator-錄制Java協(xié)議28JavaVuser調(diào)用問題VuserGeneratorVuserGenerator-錄制Java協(xié)議29VuserGenerator-錄制Java協(xié)議29VuserGenerator-錄制Java協(xié)議30VuserGenerator-錄制Java協(xié)議30Java腳本轉(zhuǎn)換web腳本使用Java協(xié)議腳本可以輕松轉(zhuǎn)變?yōu)閣eb協(xié)議腳本,將java腳本中的內(nèi)容按照J(rèn)ava語法變成JSP頁面,并部署在WAS中即可。VuserGenerator-錄制Java協(xié)議31Java腳本轉(zhuǎn)換web腳本VuserGenerator-錄WebServices基于WSDL文件的錄制(宏遠(yuǎn)證券項目測試)VuserGenerator-錄制WebServices32WebServicesVuserGenerator-錄制Windows

Sockets(直接發(fā)送數(shù)據(jù))對于windowssocket協(xié)議進行通信的C/S結(jié)構(gòu)的應(yīng)用程序,可以使用windowssockets類型的Vuser來錄制之間的通信。Windowssockets是非常底層的協(xié)議,適用于錄制一些低級通信會話。

lrs_create_socket(“socket1”,“TCP”,“RemoteHost=46:10001”,LrsLastArg);//建立連接lrs_send(“socket1”,“buf0”,LrsLastArg);//發(fā)送數(shù)據(jù)lrs_receive(“socket1”,“buf1”,LrsLastArg);//接收數(shù)據(jù)lrs_close_socket(“socket1”);//關(guān)閉連接;WSRData21

sendbuf010

"00100312303456"

recvbuf1128

VuserGenerator-錄制windowsSocket33WindowsSockets(直接發(fā)送數(shù)據(jù))VuserGWindowsSocket(調(diào)用DLL)適用范圍:一類是不適合錄制其功能點的業(yè)務(wù)系統(tǒng)的性能測試;另外一類是基于C++語言開發(fā)的業(yè)務(wù)系統(tǒng)的性能測試。特點是調(diào)用動態(tài)庫容易,難點是DLL中的動作開發(fā)實現(xiàn)。VuserGenerator-錄制windowsSocket34WindowsSocket(調(diào)用DLL)VuserGenVuserGenerator-錄制windowsSocket35VuserGenerator-錄制windowsSock腳本編寫Vuser_init:

初始化調(diào)用部分,一般為創(chuàng)建連接,加載DLL庫等;如: lrs_create_socket(“socke<socket>”,“TCP”,“RemoteHost=97:9000”,LrsLastArg);//建立連接 lr_load_dll("C:\\cert\\sm2v11\\dll\\libeay32.dll");//LoadDLL lr_load_dll("C:\\cert\\sm2v11\\dll\\ssleay32.dll");Action:發(fā)送接收數(shù)據(jù),對數(shù)據(jù)進行判斷等;調(diào)用DLL中的動作函數(shù),進行操作; lrs_send("socke<socket>","buf0",LrsLastArg); lrs_receive("socke<socket>","buf1",LrsLastArg); num=runconnect_doublecert(0,0,150000);//函數(shù)調(diào)用Vuser_end:關(guān)閉連接,是否DLL等VuserGenerator-錄制windowsSocket36腳本編寫VuserGenerator-錄制windowsVuserGenerator-腳本模式Web37VuserGenerator-腳本模式Web37VuserGenerator-腳本模式Java協(xié)議38VuserGenerator-腳本模式Java協(xié)議38VuserGenerator-腳本模式Socket39VuserGenerator-腳本模式Socket39參數(shù)化參數(shù)化是LR的一大特色,通過參數(shù)化功能實現(xiàn)了用戶行為的差異化。參數(shù)化實際是用參數(shù)替換一些常量。當(dāng)腳本運行時,Vuser將使用指定數(shù)據(jù)源中的值來替換參數(shù)。參數(shù)的數(shù)據(jù)源可以是一個文件,也可以是內(nèi)部生成的變量,可以是數(shù)據(jù)庫中的查詢結(jié)果。優(yōu)點:減少腳本的大小和數(shù)量虛擬用戶腳本更接近真實的用戶行為VuserGenerator-腳本增強-參數(shù)化40參數(shù)化VuserGenerator-腳本增強-參數(shù)化40參數(shù)類型Date/Time:時間類型的參數(shù)GroupName:使用虛擬用戶所在的組名稱代替參數(shù)LoadGeneratorName:使用虛擬用戶所在的LoadGenerator機器名來替換IterationNumber:使用該測試腳本當(dāng)前循環(huán)的次數(shù)來生成參數(shù)。RandomNumber:隨機數(shù)??梢栽O(shè)置產(chǎn)生隨機數(shù)的范圍。UniqueNumber:唯一的數(shù)。在屬性中可以設(shè)置第一個數(shù)以及遞增的數(shù)的大小。遞增含義:假如起始數(shù)為1,遞增為5,那么第一個用戶第一次循環(huán)取值為1,第二次循環(huán)取值為2;第二個用戶第一次循環(huán)取值為6,第二次為7;VuserGenerator-腳本增強-參數(shù)化41參數(shù)類型VuserGenerator-腳本增強-參數(shù)化41參數(shù)類型VuserID:使用虛擬用戶的ID來代替參數(shù)值,該ID是由Controller來控制的。Vuser中,VuserID為1。File:可以從屬性文件中設(shè)置編輯文件,添加內(nèi)容,也可以從數(shù)據(jù)庫中提取數(shù)據(jù)。UserDefinedFunction:從開發(fā)的dll中獲取數(shù)據(jù)。VuserGenerator-腳本增強-參數(shù)化42參數(shù)類型VuserGenerator-腳本增強-參數(shù)化42File類型VuserGenerator-腳本增強-參數(shù)化43File類型VuserGenerator-腳本增強-參數(shù)化File類型-如何獲取每行數(shù)據(jù)Sequential:按照順序一行行的讀取,每次當(dāng)Vuser訪問數(shù)據(jù)表時都返回到下一個可用的數(shù)據(jù)行。如果表中沒有足夠的值,返回到表的第一個值,一直循環(huán)到測試結(jié)束。強調(diào)虛擬用戶的一致性,每個虛擬用戶運行到該點時取值一致。Random:每次Vuser訪問數(shù)據(jù)表時都分配一個隨機值。Unique:唯一的值。為每個Vuser的參數(shù)分配一個唯一的值;Unique強調(diào)用戶的差異性,即每個用戶取到的參數(shù)值不一致。Samelineasxxxx:如果一個腳本中定義了多個參數(shù),其中某些參數(shù)應(yīng)該是對應(yīng)的,如Seed和SN;用戶名和密碼等;VuserGenerator-腳本增強-參數(shù)化44File類型-如何獲取每行數(shù)據(jù)VuserGeneratorFile類型-何時訪問數(shù)據(jù)表更新參數(shù)Updatevalueon定義了何時訪問數(shù)據(jù)表更新參數(shù)值。VuserGenerator-腳本增強-參數(shù)化45File類型-何時訪問數(shù)據(jù)表更新參數(shù)VuserGeneraFile類型-何時訪問數(shù)據(jù)表更新參數(shù)Eachiteration:每次迭代時訪問數(shù)據(jù)表獲得下一個值。在一次迭代中一個參數(shù)可能會出現(xiàn)多次。如用戶名、密碼出現(xiàn)兩次,如果希望這兩次的參數(shù)取一樣的值,就選擇此項。用戶名和密碼兩個參數(shù)只在不同的迭代之間進行參數(shù)的更新,在同一次迭代中取同一個值。Eachoccurrence:該參數(shù)的每次出現(xiàn)都需要更新值。即一次迭代中參數(shù)如果多次出現(xiàn)將會取不同的值。Once:在一個Vuser中同一個參數(shù)取同一個值。VuserGenerator-腳本增強-參數(shù)化46File類型-何時訪問數(shù)據(jù)表更新參數(shù)VuserGenera集合點(Rendezvous)集合點可以控制各個vuser以便在同一時刻執(zhí)行任務(wù)。借助集合點,可以在LoadRunner中實現(xiàn)真正意義上的完全一樣的并發(fā)。使用集合點,可以在系統(tǒng)上模擬較重的用戶負(fù)載。當(dāng)某個Vuser達(dá)到該集合點時,Controller會將其保留,直到參與該集合的全部Vuser都到達(dá)。當(dāng)滿足條件時,Controller將釋放Vuser,這樣可以產(chǎn)生非常密集的同一類用戶操作或請求。如下,在驗證口令時增加集合點,提供最密集的同時驗證操作。VuserGenerator-腳本增強-集合點47集合點(Rendezvous)VuserGenerator檢查點檢查Web服務(wù)器返回的網(wǎng)頁結(jié)果是否正確。VuGen支持在腳本中插入Text/Imag檢查點。Web_find:主要針對HTML頁面顯示的內(nèi)容進行搜索。有時候在頁面顯示正確的情況下也無法搜索到判斷信息。(屬于丟棄的方法)Web_reg_find

針對HTML源文件進行搜索。VuserGenerator-腳本增強-檢查點48檢查點VuserGenerator-腳本增強-檢查點48Web_reg_find用法web_reg_find("Text=ABC","SaveCount=abc_count",LAST);web_url("Step","URL=...",LAST);if(strcmp(lr_eval_string("{abc_count}"),"0")==0)ActionAelseActionB特點:該函數(shù)必須寫在要查找的內(nèi)容請求之前,一般情況下都會寫在如下六個函數(shù)之前:Web_custom_request(),web_image(),web_link(),web_submit_data(),web_submit_form(),web_url().VuserGenerator-腳本增強-檢查點49Web_reg_find用法VuserGenerator-web_find()和web_reg_find()的區(qū)別:這兩個函數(shù)函數(shù)類型不同,web_find()是普通函數(shù),web_reg_find()是注冊函數(shù);2.VUruntime設(shè)置中的“enableimageandtextcheck”對web_find有效,而對web_reg_find無效。

3.web_find()只能只用在基于HTML模式錄制的腳本中,而web_reg_find()沒有此限制;4.web_find()是在返回的頁面中進行內(nèi)容查找,web_reg_find()是在緩存中進行查找、web_find()在執(zhí)行效率上不如web_reg_find(),web_reg_find先注冊的優(yōu)勢是腳本能夠一邊接收Server的數(shù)據(jù)緩沖,一邊進行查找,提高了查找的效率5.web_reg_find的參數(shù)與web_find并不完全一樣,其中有個參數(shù)叫做SaveCount,它能夠記錄查找匹配的次數(shù)。而web_find的機制是一旦查找匹配成功,就立即返回,并不繼續(xù)查找和記錄匹配次數(shù)。

6.用web_reg_find的優(yōu)先級要遠(yuǎn)遠(yuǎn)高于web_find(),所以web_find()已經(jīng)屬于向后兼容的功能,不再推薦使用;Web_find和Web_reg_find區(qū)別50web_find()和web_reg_find()的區(qū)別:W關(guān)聯(lián)將一條語句的結(jié)果當(dāng)作另一條語句的輸入來鏈接語句;把腳本中某些寫死的數(shù)據(jù),轉(zhuǎn)變成是擷取自服務(wù)器所送的、動態(tài)的、每次都不一樣的數(shù)據(jù)。通常使用web_reg_save_para函數(shù)進行關(guān)聯(lián),也是從頁面源文件查找需要的字符串。VuserGenerator-腳本增強-關(guān)聯(lián)51關(guān)聯(lián)VuserGenerator-腳本增強-關(guān)聯(lián)51如頁面源碼部分:<trbgcolor=#66cccc><th>Flight<th>Departuretime<th>Cost<trbgcolor=#66CCff><tdalign=center><inputtype=radioname=outboundFlightvalue=230;378;11/20/2003checked>BlueSkyAir230<tdalign=center>8am<tdalign=center>$378<trbgcolor=#eeeeee><tdalign=center><inputtype=radioname=outboundFlightvalue=231;337;11/20/2003>BlueSkyAir231<tdalign=center>1pm<tdalign=center>$337VuserGenerator-腳本增強-關(guān)聯(lián)52如頁面源碼部分:VuserGenerator-腳本增強-關(guān)VuserGenerator-腳本增強-關(guān)聯(lián)/*Thisweb_reg_save_paramcallappliestothefollowingactionfunction:web_submit_form.*/

web_reg_save_param("outFlightVal",

"LB=outboundFlightvalue=","RB=checked>",LAST);

web_submit_form("reservations.pl",

"Snapshot=t4.inf",

ITEMDATA,

…….

LAST);//NowusethesavedoutFlightVal

web_submit_form("reservations.pl_2",

"Snapshot=t5.inf",

ITEMDATA,

"Name=outboundFlight","Value={outFlightVal}",ENDITEM,

"Name=reserveFlights.x","Value=92",ENDITEM,

"Name=reserveFlights.y","Value=10",ENDITEM,

LAST);ParameterSubstitution:parameter"outFlightVal"="230;378;11/20/2003"*/53VuserGenerator-腳本增強-關(guān)聯(lián)/*ThisLr_save_string

將非空的字符串保存到指定的參數(shù)中。如將字符串“777”保存到emp_id變量中。VuserGenerator-常用函數(shù)54Lr_save_stringVuserGenerator-lr_eval_string返回參數(shù)中的實際字符串值VuserGenerator-常用函數(shù)55lr_eval_stringVuserGenerator-Controller56Controller56Analysis57Analysis57LoadRunner負(fù)載測試流程規(guī)劃負(fù)載測試創(chuàng)建Vuser腳本定義場景運行場景分析結(jié)果規(guī)劃負(fù)載測試:定義性能測試要求,例如并發(fā)用戶數(shù)量、典型業(yè)務(wù)流程和要求的響應(yīng)時間等創(chuàng)建Vuser腳本:在自動化腳本中錄制最終用戶的行為,或者根據(jù)用戶行為編寫測試腳本;定義場景:使用LoadRunnerController設(shè)置負(fù)載測試環(huán)境;運行場景:使用LoadRunnerController驅(qū)動、管理并監(jiān)控負(fù)載測試;分析結(jié)果:使用LoadRunnerAnalysis創(chuàng)建圖和報告并評估性能;58LoadRunner負(fù)載測試流程規(guī)劃負(fù)載測試創(chuàng)建Vuser腳規(guī)劃階段(測試目標(biāo)、測試范圍、測試組織、測試時間)準(zhǔn)備階段(測試環(huán)境、測試數(shù)據(jù)、測試腳本、測試程序)執(zhí)行階段(響應(yīng)時間基準(zhǔn)測試、負(fù)載測試、壓力測試、容量測試、穩(wěn)定性測試)調(diào)試階段(收集/分析測試結(jié)果、定位瓶頸、性能調(diào)優(yōu))報告階段(測試結(jié)果確認(rèn)、測試目標(biāo)完成確認(rèn)、測試報告編制)LoadRunner負(fù)載測試流程59規(guī)劃階段(測試目標(biāo)、測試范圍、測試組織、測試時間)LoadRLR測試過程-測試目標(biāo)測試目標(biāo)一般包含應(yīng)用系統(tǒng)要達(dá)到的性能指標(biāo)系統(tǒng)處理的最大并發(fā)用戶數(shù)系統(tǒng)運行高峰時期,響應(yīng)時間小于X秒TPS不低于多少服務(wù)器資源利用率不超過XX運行7*24小時,無明顯內(nèi)存泄漏現(xiàn)象60LR測試過程-測試目標(biāo)測試目標(biāo)一般包含應(yīng)用系統(tǒng)要達(dá)到的性能指操作系統(tǒng)監(jiān)控CPU(top、vmstat)內(nèi)存IO:(iostat、iotop)文件系統(tǒng)空間監(jiān)控網(wǎng)絡(luò)監(jiān)控(iptraf)LR測試過程-測試監(jiān)控61操作系統(tǒng)監(jiān)控LR測試過程-測試監(jiān)控61Linux系統(tǒng)監(jiān)控Iostatvmstatmore/proc/cpuinfomore/proc/meminfofreempstatnmonps/pstreesarnetstattcpdumpLR測試過程-測試監(jiān)控62Linux系統(tǒng)監(jiān)控LR測試過程-測試監(jiān)控62中間件監(jiān)控CPU執(zhí)行線程數(shù)數(shù)據(jù)庫連接數(shù)隊列狀態(tài)WAS、Weblogic啟動內(nèi)存大小,jvm大小以及輸出日志輸出LR測試過程-測試監(jiān)控63中間件監(jiān)控LR測試過程-測試監(jiān)控63調(diào)優(yōu)基本原則某個部分不是性能瓶頸,不用嘗試優(yōu)化優(yōu)化是為系統(tǒng)提供足夠的資源并且充分利用資源,不是無節(jié)制的擴充資源LR測試過程-調(diào)優(yōu)64調(diào)優(yōu)基本原則LR測試過程-調(diào)優(yōu)64LoadRunner測試過程中性能沒有達(dá)到預(yù)期值?

查看服務(wù)器的配置、CPU利用率等

看網(wǎng)絡(luò)帶寬是否滿負(fù)荷(雙向通道)

不能忽視壓力機的配置

單獨驗證應(yīng)用服務(wù)器的性能

單獨驗證數(shù)據(jù)庫的性能

注意數(shù)據(jù)庫的驅(qū)動版本中間件系統(tǒng)文件句柄LR測試過程-問題定位65LoadRunner測試過程中性能沒有達(dá)到預(yù)期值?LR測試過大家好66大家好1LoadRunner性能測試培訓(xùn)質(zhì)量管理部竇志剛67LoadRunner性能測試培訓(xùn)質(zhì)量管理部竇志剛2性能測試基礎(chǔ)知識性能測試常用術(shù)語LoadRunner組件-VirtualUserGeneratorLoadRunner組件-ControllerLoadRunner組件-Analysis基本調(diào)優(yōu)目標(biāo)68性能測試基礎(chǔ)知識目標(biāo)3什么是性能測試通過狹義的性能測試模擬生產(chǎn)運行的業(yè)務(wù)壓力或者用戶使用場景來測試系統(tǒng)的性能是否滿足生產(chǎn)性能的要求。廣義的性能測試指壓力測試、負(fù)載測試、強度測試、并發(fā)測試、大數(shù)據(jù)量測試、可靠性測試等和性能相關(guān)的測試統(tǒng)稱。性能測試基礎(chǔ)知識69什么是性能測試性能測試基礎(chǔ)知識4壓力測試對系統(tǒng)不斷施加壓力的測試,是通過確定一個系統(tǒng)的瓶頸或不能接收用戶請求的性能點,來獲得系統(tǒng)提供的最大服務(wù)級別的測試。目的:是發(fā)現(xiàn)在什么條件下系統(tǒng)的性能變得不可接受,并通過對應(yīng)用程序施加越來越多的負(fù)載,直到發(fā)現(xiàn)應(yīng)用程序性能下降的拐點。負(fù)載測試對系統(tǒng)不斷增加壓力或增加一定壓力下的持續(xù)時間,直到系統(tǒng)的一些性能指標(biāo)達(dá)到極限,例如響應(yīng)時間超過預(yù)定目標(biāo)或某種資源以及達(dá)到飽和。區(qū)別壓力測試側(cè)重壓力大小,負(fù)載測試往往強調(diào)壓力持續(xù)的時間。性能測試基礎(chǔ)知識70壓力測試性能測試基礎(chǔ)知識5強度測試強度測試主要是檢查程序?qū)Ξ惓G闆r的抵抗能力,如運行最大存儲空間,進行可能導(dǎo)致系統(tǒng)崩潰、磁盤數(shù)據(jù)抖動、網(wǎng)卡滿負(fù)荷等。主要是異常條件下驗證系統(tǒng)是否穩(wěn)定以及性能方面是否容易擴展。疲勞強度測試疲勞強度測試是一類特殊的強度測試,主要測試系統(tǒng)長時間運行后的性能表現(xiàn),如一般常見的7X24小時的壓力測試。性能測試基礎(chǔ)知識71強度測試性能測試基礎(chǔ)知識6并發(fā)測試主要指當(dāng)測試多用戶并發(fā)訪問同一個應(yīng)用、模塊、數(shù)據(jù)時是否產(chǎn)生隱藏的并發(fā)問題,如內(nèi)存泄漏、線程鎖、資源爭用問題,幾乎所有的性能測試都會涉及并發(fā)測試。通用說明:持續(xù)掛載一定數(shù)量用戶不斷開。LoadRunner進行并發(fā)測試相對較少,一般使用測試儀很普遍。大數(shù)據(jù)量測試一般是針對某些系統(tǒng)存儲、傳輸、統(tǒng)計查詢等業(yè)務(wù)進行大數(shù)據(jù)量的測試。如CA系統(tǒng)上千萬條的數(shù)據(jù)測試。性能測試基礎(chǔ)知識72并發(fā)測試性能測試基礎(chǔ)知識7可靠性測試在給系統(tǒng)加載一定業(yè)務(wù)壓力的情況下,使系統(tǒng)運行一段時間,檢測系統(tǒng)是否穩(wěn)定。如施加壓力讓CPU資源保持在90%以上的使用率,連續(xù)對系統(tǒng)加壓24個小時,分析系統(tǒng)是否穩(wěn)定。性能測試基礎(chǔ)知識73可靠性測試性能測試基礎(chǔ)知識8性能指標(biāo)74性能指標(biāo)9并發(fā)嚴(yán)格意義上的并發(fā):即所有的用戶在同一時刻做同一件事情或者操作,一般是同一類型的業(yè)務(wù)廣義的并發(fā):即所有的用戶對系統(tǒng)發(fā)出了請求或進行了操作,這些請求或者操作可以是相同的,也可以是不同的。LoadRunner壓測并發(fā)的弱點:

一個IP只能支持65535個連接(理論上),因此需要壓測百萬級別的并發(fā),必須很多IP地址支持才能實現(xiàn)。性能測試基礎(chǔ)知識75并發(fā)性能測試基礎(chǔ)知識10性能測試基礎(chǔ)知識防火墻并發(fā)測試標(biāo)準(zhǔn):ConcurrentconnectionsHost和DUT之間同時連接的總數(shù),并假設(shè)所有連接上都有數(shù)據(jù)傳輸。即同時可以掛載的用戶數(shù)量。76性能測試基礎(chǔ)知識防火墻并發(fā)測試標(biāo)準(zhǔn):Concurrentc請求響應(yīng)時間請求響應(yīng)時間是指從客戶端發(fā)出請求到得到響應(yīng)的整個過程的時間。從客戶端發(fā)送一個請求開始計時,到客戶端接到從服務(wù)器端返回的響應(yīng)接口計時結(jié)束。另外一些工具中,會被稱為“TTLB”,“Timetolastbyte”。從發(fā)送一個請求開始,到客戶端收到最好一個字節(jié)的響應(yīng)為止所耗費的時間。事務(wù)響應(yīng)時間(TransactionResponseTime)事務(wù)可能是一系列的請求組成,事務(wù)的響應(yīng)時間主要是針對用戶而言,是為了向用戶說明業(yè)務(wù)響應(yīng)時間而提出的。性能測試基礎(chǔ)知識77請求響應(yīng)時間性能測試基礎(chǔ)知識12CPS(ConnectionPerSecond)新建測試的主要目的是測試被測設(shè)備的處理能力。單位時間內(nèi)能夠建立的連接數(shù)越多,說明被測試設(shè)備的處理器能力越強。一般只關(guān)心建立TCP連接的速率,因此使用RST方式關(guān)閉連接。吞吐率(Throughput)單位時間內(nèi)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量,是衡量網(wǎng)絡(luò)性能的重要指標(biāo)。Loadrunner記錄的Throughput是接收到服務(wù)器返回的所有字節(jié)數(shù)之和,與本地發(fā)出的字節(jié)數(shù)無關(guān)!和網(wǎng)絡(luò)帶寬的關(guān)系:TPS*返回數(shù)據(jù)包的大小=Throughput<帶寬吞吐量網(wǎng)絡(luò)上傳輸?shù)臄?shù)量量的總和。吞吐量/傳輸時間,即吞吐率。性能測試基礎(chǔ)知識78CPS(ConnectionPerSecond)性能測試TPS(TransactionPerSecond)每秒鐘系統(tǒng)能夠處理的交易或者事務(wù)的數(shù)量。是衡量系統(tǒng)處理能力的重要指標(biāo)。一般而言,評價系統(tǒng)性能均以每秒完成的技術(shù)交易的數(shù)量來衡量系統(tǒng)整體處理能力取決于處理能力最低模塊的TPS值HPS點擊率每秒鐘用戶向Web服務(wù)器提交的HTTP請求數(shù)。是Web應(yīng)用特有的一個指標(biāo):Web應(yīng)用是“請求-響應(yīng)”模式,用戶發(fā)出一次申請,服務(wù)器就處理一次。HPS一般與TPS成正比關(guān)系,是B/S系統(tǒng)中非常重要的性能指標(biāo)之一性能測試基礎(chǔ)知識79TPS(TransactionPerSecond)性能測資源利用率監(jiān)控不同系統(tǒng)資源的使用程度,如服務(wù)器的CPU、磁盤利用率、內(nèi)存、網(wǎng)絡(luò)等。是測試和分析瓶頸的主要參數(shù)。性能測試基礎(chǔ)知識80資源利用率性能測試基礎(chǔ)知識15場景(Scenario)在LoadRunner中主要表現(xiàn)為Controller中設(shè)計與執(zhí)行測試用例中的用戶場景。如在controller中選擇虛擬用戶腳本,設(shè)置虛擬用戶數(shù)量,配置虛擬用戶運行時的行為,選擇負(fù)載發(fā)生器,設(shè)置執(zhí)行時間等。負(fù)載發(fā)生器(LoadGenerator)用于產(chǎn)生壓力的真實機器,受controller控制,可以使用戶腳本在不同的機器上執(zhí)行。性能測試中,通常由一個controller控制多個LoadGenerator對測試系統(tǒng)進行加壓。虛擬用戶(Vuser)模擬現(xiàn)實中的真實用戶,通過虛擬用戶腳本模擬真實用戶的行為。LoadRunner常用術(shù)語81場景(Scenario)LoadRunner常用術(shù)語16虛擬用戶腳本VuserScript通過VuserGenerator錄制或者開發(fā)的腳本,用來模擬用戶的行為。事務(wù)(Transaction)業(yè)務(wù)上通常是用戶的一個或者一系列操作,代表一定的功能;測試人員可以將一個或者多個操作步驟定義為一個事務(wù),來衡量這部分的用戶并發(fā)響應(yīng)時間。思考時間(ThinkTime)用戶思考時間,為了模擬更接近用戶的真實行為而引進的概念。LoadRunner常用術(shù)語82虛擬用戶腳本VuserScriptLoadRunner常用集合點(Rendezvous)LoadRunner通過集合點實現(xiàn)真正意義上的并發(fā)。添加在比較重要的操作動作之前;LoadRunner常用術(shù)語83集合點(Rendezvous)LoadRunner常用術(shù)語1LoadRunner工作原理84LoadRunner工作原理19錄制啟動應(yīng)用程序并將業(yè)務(wù)流程錄制到腳本中。VuGen為錄制的每個操作創(chuàng)建一個步驟。完成錄制后,VuGen生成腳本序列,從而形成Vuser腳本。驗證將腳本作為單獨的測試運行,以此驗證其功能并找出潛在的問題。增強向腳本中添加增強功能,使它能夠更準(zhǔn)確的模擬業(yè)務(wù)流程,并使能夠獲得重要數(shù)據(jù)。添加事務(wù),內(nèi)容檢查和參數(shù)。準(zhǔn)備進行負(fù)載測試LoadRunner-VuserGenerator85錄制LoadRunner-VuserGenerator20常用協(xié)議(Infosec常用協(xié)議)Web(HTTP/HTML)JavaVuserWebServicesWindowssocketsWeb協(xié)議(NSAE/CA/NetSign/NetPass/Bisafe)JavaVuser(NetSign/NetPass/CA)WebServices(RA)Windowssockets(NetSign/NSAESM2算法)VuserGenerator-錄制86常用協(xié)議(Infosec常用協(xié)議)VuserGeneratWeb協(xié)議錄制HTML-basedscript

基于瀏覽器的應(yīng)用程序和VBScriptURL-basedscript

不是基于瀏覽器的應(yīng)用程序

基于瀏覽器的應(yīng)用程序包含了javascript,并且該腳本向服務(wù)器發(fā)送了請求,如DataGrid分頁按鈕

基于瀏覽器的應(yīng)用程序使用了HTTPS安全協(xié)議如果使用HTML-basedscript模式錄制完成后,回放失敗。建議修改為URL-basedscript模式來錄制。VuserGenerator-錄制Web協(xié)議87Web協(xié)議錄制VuserGenerator-錄制Web協(xié)議HTML-basedscript和URL-basedscript區(qū)別HTML-basedscript產(chǎn)生的腳本描述和用戶的操作一致,能夠非常直觀的看到用戶的操作流程。直接創(chuàng)建的URL(web_url),表單提交(web_submit_form),鏈接(web_link)和圖像(web_image)等函數(shù)URL-basedscript產(chǎn)生的腳本,所有的鏈接、圖像請求和URL操作都被錄制為web_url函數(shù)中,表單提交被錄制為web_submit_data函數(shù)。VuserGenerator-錄制Web協(xié)議88HTML-basedscript和URL-basedscVuserGenerator-錄制Web協(xié)議89VuserGenerator-錄制Web協(xié)議24腳本錄制的基本原則充分考慮腳本的執(zhí)行效率性能測試腳本關(guān)注的是如何模擬用戶的真實行為,應(yīng)該接近用戶的真正操作。錄制完成后盡量不要增加過多的內(nèi)容,如檢查點、循環(huán)等操作錄制重要的用戶業(yè)務(wù)建議錄制常用的、使用頻率較高的業(yè)務(wù)進行錄制選擇需要的進行錄制如果一些操作對用戶關(guān)注的業(yè)務(wù)沒有影響,可以不進行錄制。VuserGenerator-錄制Web協(xié)議90腳本錄制的基本原則VuserGenerator-錄制WebInfosec腳本錄制應(yīng)用測試:完全模擬用戶的各個重要的操作進行系統(tǒng)測試;Infosec產(chǎn)品測試:避開用戶的各種繁瑣操作,假設(shè)用戶沒有思考時間,所有操作都是連續(xù)性的,這樣才能對被測服務(wù)器產(chǎn)生最大的性能壓力。如證書下載流程:產(chǎn)品測試的腳本盡可能融合到一個頁面中,避免頻繁錄入提交的操作;如證書下載流程:用戶注冊-申請證書-下載證書內(nèi)部測試中,建議將所有的流程放在一個JSP頁面中進行處理,這樣會對被測設(shè)備產(chǎn)生最大壓力,能夠最大化的發(fā)現(xiàn)產(chǎn)品存在的問題。VuserGenerator-錄制Web協(xié)議91Infosec腳本錄制VuserGenerator-錄制JavaVuser根據(jù)測試流程,直接進行Java接口的調(diào)用,編寫測試腳本LoadRunner對Java版本的支持,需要根據(jù)實際情況進行確認(rèn)。如果版本不正確,編譯過程會體現(xiàn)相關(guān)的錯誤信息??梢灾付↗VM堆棧大小從目前的使用情況來看,不是很適合進行穩(wěn)定性測試。適用產(chǎn)品:NetSign、NetPass、NetCert;有JavaAPI的都可以支持。VuserGenerator-錄制Java協(xié)議92JavaVuserVuserGenerator-錄制JaJavaVuser調(diào)用問題可以和腳本放在同一個目錄;但只有當(dāng)前的虛擬用戶腳本可以調(diào)用;放在LR調(diào)用的JDKlib目錄下,所有用戶腳本都可以調(diào)用;多臺agent同時調(diào)用javavuser時建議使用這種方式多臺計算機聯(lián)機測試,所有運行測試腳本的客戶機必須安裝JDK環(huán)境并正確設(shè)置路徑。VuserGenerator-錄制Java協(xié)議93JavaVuser調(diào)用問題VuserGeneratorVuserGenerator-錄制Java協(xié)議94VuserGenerator-錄制Java協(xié)議29VuserGenerator-錄制Java協(xié)議95VuserGenerator-錄制Java協(xié)議30Java腳本轉(zhuǎn)換web腳本使用Java協(xié)議腳本可以輕松轉(zhuǎn)變?yōu)閣eb協(xié)議腳本,將java腳本中的內(nèi)容按照J(rèn)ava語法變成JSP頁面,并部署在WAS中即可。VuserGenerator-錄制Java協(xié)議96Java腳本轉(zhuǎn)換web腳本VuserGenerator-錄WebServices基于WSDL文件的錄制(宏遠(yuǎn)證券項目測試)VuserGenerator-錄制WebServices97WebServicesVuserGenerator-錄制Windows

Sockets(直接發(fā)送數(shù)據(jù))對于windowssocket協(xié)議進行通信的C/S結(jié)構(gòu)的應(yīng)用程序,可以使用windowssockets類型的Vuser來錄制之間的通信。Windowssockets是非常底層的協(xié)議,適用于錄制一些低級通信會話。

lrs_create_socket(“socket1”,“TCP”,“RemoteHost=46:10001”,LrsLastArg);//建立連接lrs_send(“socket1”,“buf0”,LrsLastArg);//發(fā)送數(shù)據(jù)lrs_receive(“socket1”,“buf1”,LrsLastArg);//接收數(shù)據(jù)lrs_close_socket(“socket1”);//關(guān)閉連接;WSRData21

sendbuf010

"00100312303456"

recvbuf1128

VuserGenerator-錄制windowsSocket98WindowsSockets(直接發(fā)送數(shù)據(jù))VuserGWindowsSocket(調(diào)用DLL)適用范圍:一類是不適合錄制其功能點的業(yè)務(wù)系統(tǒng)的性能測試;另外一類是基于C++語言開發(fā)的業(yè)務(wù)系統(tǒng)的性能測試。特點是調(diào)用動態(tài)庫容易,難點是DLL中的動作開發(fā)實現(xiàn)。VuserGenerator-錄制windowsSocket99WindowsSocket(調(diào)用DLL)VuserGenVuserGenerator-錄制windowsSocket100VuserGenerator-錄制windowsSock腳本編寫Vuser_init:

初始化調(diào)用部分,一般為創(chuàng)建連接,加載DLL庫等;如: lrs_create_socket(“socke<socket>”,“TCP”,“RemoteHost=97:9000”,LrsLastArg);//建立連接 lr_load_dll("C:\\cert\\sm2v11\\dll\\libeay32.dll");//LoadDLL lr_load_dll("C:\\cert\\sm2v11\\dll\\ssleay32.dll");Action:發(fā)送接收數(shù)據(jù),對數(shù)據(jù)進行判斷等;調(diào)用DLL中的動作函數(shù),進行操作; lrs_send("socke<socket>","buf0",LrsLastArg); lrs_receive("socke<socket>","buf1",LrsLastArg); num=runconnect_doublecert(0,0,150000);//函數(shù)調(diào)用Vuser_end:關(guān)閉連接,是否DLL等VuserGenerator-錄制windowsSocket101腳本編寫VuserGenerator-錄制windowsVuserGenerator-腳本模式Web102VuserGenerator-腳本模式Web37VuserGenerator-腳本模式Java協(xié)議103VuserGenerator-腳本模式Java協(xié)議38VuserGenerator-腳本模式Socket104VuserGenerator-腳本模式Socket39參數(shù)化參數(shù)化是LR的一大特色,通過參數(shù)化功能實現(xiàn)了用戶行為的差異化。參數(shù)化實際是用參數(shù)替換一些常量。當(dāng)腳本運行時,Vuser將使用指定數(shù)據(jù)源中的值來替換參數(shù)。參數(shù)的數(shù)據(jù)源可以是一個文件,也可以是內(nèi)部生成的變量,可以是數(shù)據(jù)庫中的查詢結(jié)果。優(yōu)點:減少腳本的大小和數(shù)量虛擬用戶腳本更接近真實的用戶行為VuserGenerator-腳本增強-參數(shù)化105參數(shù)化VuserGenerator-腳本增強-參數(shù)化40參數(shù)類型Date/Time:時間類型的參數(shù)GroupName:使用虛擬用戶所在的組名稱代替參數(shù)LoadGeneratorName:使用虛擬用戶所在的LoadGenerator機器名來替換IterationNumber:使用該測試腳本當(dāng)前循環(huán)的次數(shù)來生成參數(shù)。RandomNumber:隨機數(shù)。可以設(shè)置產(chǎn)生隨機數(shù)的范圍。UniqueNumber:唯一的數(shù)。在屬性中可以設(shè)置第一個數(shù)以及遞增的數(shù)的大小。遞增含義:假如起始數(shù)為1,遞增為5,那么第一個用戶第一次循環(huán)取值為1,第二次循環(huán)取值為2;第二個用戶第一次循環(huán)取值為6,第二次為7;VuserGenerator-腳本增強-參數(shù)化106參數(shù)類型VuserGenerator-腳本增強-參數(shù)化41參數(shù)類型VuserID:使用虛擬用戶的ID來代替參數(shù)值,該ID是由Controller來控制的。Vuser中,VuserID為1。File:可以從屬性文件中設(shè)置編輯文件,添加內(nèi)容,也可以從數(shù)據(jù)庫中提取數(shù)據(jù)。UserDefinedFunction:從開發(fā)的dll中獲取數(shù)據(jù)。VuserGenerator-腳本增強-參數(shù)化107參數(shù)類型VuserGenerator-腳本增強-參數(shù)化42File類型VuserGenerator-腳本增強-參數(shù)化108File類型VuserGenerator-腳本增強-參數(shù)化File類型-如何獲取每行數(shù)據(jù)Sequential:按照順序一行行的讀取,每次當(dāng)Vuser訪問數(shù)據(jù)表時都返回到下一個可用的數(shù)據(jù)行。如果表中沒有足夠的值,返回到表的第一個值,一直循環(huán)到測試結(jié)束。強調(diào)虛擬用戶的一致性,每個虛擬用戶運行到該點時取值一致。Random:每次Vuser訪問數(shù)據(jù)表時都分配一個隨機值。Unique:唯一的值。為每個Vuser的參數(shù)分配一個唯一的值;Unique強調(diào)用戶的差異性,即每個用戶取到的參數(shù)值不一致。Samelineasxxxx:如果一個腳本中定義了多個參數(shù),其中某些參數(shù)應(yīng)該是對應(yīng)的,如Seed和SN;用戶名和密碼等;VuserGenerator-腳本增強-參數(shù)化109File類型-如何獲取每行數(shù)據(jù)VuserGeneratorFile類型-何時訪問數(shù)據(jù)表更新參數(shù)Updatevalueon定義了何時訪問數(shù)據(jù)表更新參數(shù)值。VuserGenerator-腳本增強-參數(shù)化110File類型-何時訪問數(shù)據(jù)表更新參數(shù)VuserGeneraFile類型-何時訪問數(shù)據(jù)表更新參數(shù)Eachiteration:每次迭代時訪問數(shù)據(jù)表獲得下一個值。在一次迭代中一個參數(shù)可能會出現(xiàn)多次。如用戶名、密碼出現(xiàn)兩次,如果希望這兩次的參數(shù)取一樣的值,就選擇此項。用戶名和密碼兩個參數(shù)只在不同的迭代之間進行參數(shù)的更新,在同一次迭代中取同一個值。Eachoccurrence:該參數(shù)的每次出現(xiàn)都需要更新值。即一次迭代中參數(shù)如果多次出現(xiàn)將會取不同的值。Once:在一個Vuser中同一個參數(shù)取同一個值。VuserGenerator-腳本增強-參數(shù)化111File類型-何時訪問數(shù)據(jù)表更新參數(shù)VuserGenera集合點(Rendezvous)集合點可以控制各個vuser以便在同一時刻執(zhí)行任務(wù)。借助集合點,可以在LoadRunner中實現(xiàn)真正意義上的完全一樣的并發(fā)。使用集合點,可以在系統(tǒng)上模擬較重的用戶負(fù)載。當(dāng)某個Vuser達(dá)到該集合點時,Controller會將其保留,直到參與該集合的全部Vuser都到達(dá)。當(dāng)滿足條件時,Controller將釋放Vuser,這樣可以產(chǎn)生非常密集的同一類用戶操作或請求。如下,在驗證口令時增加集合點,提供最密集的同時驗證操作。VuserGenerator-腳本增強-集合點112集合點(Rendezvous)VuserGenerator檢查點檢查Web服務(wù)器返回的網(wǎng)頁結(jié)果是否正確。VuGen支持在腳本中插入Text/Imag檢查點。Web_find:主要針對HTML頁面顯示的內(nèi)容進行搜索。有時候在頁面顯示正確的情況下也無法搜索到判斷信息。(屬于丟棄的方法)Web_reg_find

針對HTML源文件進行搜索。VuserGenerator-腳本增強-檢查點113檢查點VuserGenerator-腳本增強-檢查點48Web_reg_find用法web_reg_find("Text=ABC","SaveCount=abc_count",LAST);web_url("Step","URL=...",LAST);if(strcmp(lr_eval_string("{abc_count}"),"0")==0)ActionAelseActionB特點:該函數(shù)必須寫在要查找的內(nèi)容請求之前,一般情況下都會寫在如下六個函數(shù)之前:Web_custom_request(),web_image(),web_link(),web_submit_data(),web_submit_form(),web_url().VuserGenerator-腳本增強-檢查點114Web_reg_find用法VuserGenerator-web_find()和web_reg_find()的區(qū)別:這兩個函數(shù)函數(shù)類型不同,web_find()是普通函數(shù),web_reg_find()是注冊函數(shù);2.VUruntime設(shè)置中的“enableimageandtextcheck”對web_find有效,而對web_reg_find無效。

3.web_find()只能只用在基于HTML模式錄制的腳本中,而web_reg_find()沒有此限制;4.web_find()是在返回的頁面中進行內(nèi)容查找,web_reg_find()是在緩存中進行查找、web_find()在執(zhí)行效率上不如web_reg_find(),web_reg_find先注冊的優(yōu)勢是腳本能夠一邊接收Server的數(shù)據(jù)緩沖,一邊進行查找,提高了查找的效率5.web_reg_find的參數(shù)與web_find并不完全一樣,其中有個參數(shù)叫做SaveCount,它能夠記錄查找匹配的次數(shù)。而web_find的機制是一旦查找匹配成功,就立即返回,并不繼續(xù)查找和記錄匹配次數(shù)。

6.用web_reg_find的優(yōu)先級要遠(yuǎn)遠(yuǎn)高于web_find(),所以web_find()已經(jīng)屬于向后兼容的功能,不再推薦使用;Web_find和Web_reg_find區(qū)別115web_find()和web_reg_find()的區(qū)別:W關(guān)聯(lián)將一條語句的結(jié)果當(dāng)作另一條語句的輸入來鏈接語句;把腳本中某些寫死的數(shù)據(jù),轉(zhuǎn)變成是擷取自服務(wù)器所送的、動態(tài)的、每次都不一樣的數(shù)據(jù)。通常使用web_reg_save_para函數(shù)進行關(guān)聯(lián),也是從頁面源文件查找需要的字符串。VuserGenerator-腳本增強-關(guān)聯(lián)116關(guān)聯(lián)VuserGenerator-腳本增強-關(guān)聯(lián)51如頁面源碼部分:<trbgcolor=#66cccc><th>Flight<th>Departuretime<th>Cost<trbgcolor=#66CCff><tdalign=center><inputtype=radionam

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論