李悅——軟件性能測試研究三_第1頁
李悅——軟件性能測試研究三_第2頁
李悅——軟件性能測試研究三_第3頁
李悅——軟件性能測試研究三_第4頁
李悅——軟件性能測試研究三_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、論 文 摘 要 隨著當下軟件開發(fā)技術(shù)的發(fā)展與成熟,越來越多復雜的軟件系統(tǒng)應用于人們生活的各個領(lǐng)域,軟件系統(tǒng)運行時的性能表現(xiàn)已經(jīng)成為衡量軟件產(chǎn)品質(zhì)量的一個重要標準。本文研究了軟件系統(tǒng)性能測試的整體的流程,并結(jié)合自動化測試工具LoadRunner,對軟件性能測試的相關(guān)信息進行了撂討和分析。關(guān)鍵字:軟件測試 性能測試 LoadRunner目 錄論 文 摘 要1一、 引論3二、 軟件性能測試4三、 軟件性能測試流程5(一) 測試方案設(shè)計5(二) 測試環(huán)境搭建5(三) 測試場景開發(fā)6(四) 測試執(zhí)行6(五)測試報告和分析6(六) 回歸測試6四、 軟件性能測試工具LoadRunner7五、 LoadRun

2、ner腳本編寫實例9六、總結(jié)14致謝14參考文獻15軟件性能測試研究李悅(開封大學 計算機應用專業(yè))1、 引論軟件在性能方面的“亞健康”問題一直伴隨著國內(nèi)很多企業(yè)的軟件產(chǎn)品而存在。早期由于多數(shù)軟件應用系統(tǒng)在企業(yè)中得不到有效的推廣應用,因此用戶往往會忽略自己在性能方面的需求。而現(xiàn)在軟件幾乎滲透到人們工作與生活的各個方面,因而軟件的性能開始得到越來越多的重視。隨著軟件工程技術(shù)、軟件開發(fā)方法和軟件開發(fā)工具的發(fā)展,一方面使人們可以快速開發(fā)更加復雜的應用,另一方面也使開發(fā)出的軟件規(guī)模越來越龐大,架構(gòu)越來越復雜。隨之而來的是軟件性能問題也越來越多,最終導致很多軟件系統(tǒng)由于性能方面存在問題而停止使用,給軟件

3、公司以及客戶都帶來了一定的損失。因此,解決軟件性能問題是十分必要的一項工作中,對于企業(yè)自身以及客戶都具有重要的現(xiàn)實意義。性能測試,是軟件測試中的重中之重,它在軟件的質(zhì)量保證中起著重要的作用。性能測試并不僅僅是請求、點擊次數(shù)或是最快的系統(tǒng),它的主要目的是考查在大壓力和大數(shù)據(jù)量情況下,應用服務器最大處理能力和系統(tǒng)響應時間,從而分析出軟件或系統(tǒng)的瓶頸所在,使系統(tǒng)運行在最佳的性能。使系統(tǒng)達到最佳性能,是性能測試根本目的。對于性能測試工作而言,不但需要好的性能測試理論作為工作指導,更需要掌握好的性能測試工具,因此本文中主要介紹性能測試的規(guī)劃和設(shè)計的相關(guān)內(nèi)容及目前國內(nèi)性能測試領(lǐng)域應用最廣泛的工具之一Loa

4、dRunner。 LoadRunner是一種預測系統(tǒng)行為和性能的負載測試工具。通過以模擬上千萬用戶實施并發(fā)負載及實時性能監(jiān)測的方式來確認和查找問題,LoadRunner能夠?qū)φ麄€企業(yè)架構(gòu)進行測試。通過使用LoadRunner,企業(yè)能最大限度地縮短測試時間,優(yōu)化性能和加速應用系統(tǒng)的發(fā)布周期。LoadRunner是一種適用于各種體系架構(gòu)的自動負載測試工具,它能預測系統(tǒng)行為并優(yōu)化系統(tǒng)性能。LoadRunner的測試對象是整個企業(yè)的系統(tǒng),它通過模擬實際用戶的操作行為和實行實時性能監(jiān)測,來幫助您更快的查找和發(fā)現(xiàn)問題。此外,LoadRunner能支持廣泛的協(xié)議和技術(shù),為您的特殊環(huán)境提供特殊的解決方案。2、

5、 軟件性能測試 性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統(tǒng)的各項性能指標進行測試。負載測試和壓力測試都屬于性能測試,兩者可以結(jié)合進行。通過負載測試,確定在各種工作負載下系統(tǒng)的性能,目標是測試當負載逐漸增加時,系統(tǒng)各項性能指標的變化情況。壓力測試是通過確定一個系統(tǒng)的瓶頸或者不能接收的性能點,來獲得系統(tǒng)能提供的最大服務級別的測試。根據(jù)測試的目的和內(nèi)容的不同,性能測試主要包括以下方面:(1)負載測試:確定在各種工作負載下系統(tǒng)的性能,目標是測試當負載逐漸增加時,系統(tǒng)各項性能指標的變化情況。(2)強度測試:確定在系統(tǒng)資源特別低的條件下軟件系統(tǒng)運行情況。(3)容量測試:在用戶

6、可接受的響應范圍內(nèi),確定系統(tǒng)可處理同時在線的最大用戶數(shù)。(4)壓力測試:通過確定一個系統(tǒng)的瓶頸或者最大使用極限的測試。(5)疲勞強度測試:以系統(tǒng)穩(wěn)定運行情況下能夠支持的最大并發(fā)用戶數(shù)或者日常運行用戶數(shù),持續(xù)執(zhí)行一段時間業(yè)務,通過綜合分析交易執(zhí)行指標和資源監(jiān)控指標來確定系統(tǒng)處理最大工作強度性能的過程。(6)大數(shù)據(jù)量測試:大數(shù)據(jù)量測試側(cè)重點在于數(shù)據(jù)的量上,包括獨立的數(shù)據(jù)量測試和綜合數(shù)據(jù)量測試。獨立的數(shù)據(jù)量測試針對某些系統(tǒng)存儲,傳輸、統(tǒng)計、查詢等業(yè)務進行大數(shù)據(jù)量測試,而綜合數(shù)據(jù)量測試一般和壓力性能測試、負載性能測試、疲勞性能測試相結(jié)合。3、 軟件性能測試流程(1) 測試方案設(shè)計在軟件性能測試的初始階

7、段,首先應對業(yè)務模型和系統(tǒng)架構(gòu)進行調(diào)研,收集測試需求。然后生成性能測試計劃。業(yè)務調(diào)研和系統(tǒng)調(diào)研,需要性能測試團隊提前了解被測試項目的業(yè)務功能和系統(tǒng)架構(gòu)。其間。開發(fā)部門應協(xié)助提供被測系統(tǒng)相關(guān)的文檔和說明,如系統(tǒng)總體介紹、系統(tǒng)規(guī)格書、用戶使用手冊、網(wǎng)絡拓撲結(jié)構(gòu)圖和系統(tǒng)配置說明、關(guān)鍵服務器及應用部署與配置等文檔。通過和業(yè)務部門協(xié)商明確本次測試針對哪些業(yè)務行為,制定此次測試的目標,細化測試的關(guān)注點和性能指標要求。通過以上內(nèi)容制定詳細的測試方案,并制定詳細測試計劃和各階段目標。測試方案設(shè)計測試環(huán)境搭建測試場景開發(fā)測試執(zhí)行測試報告和分析回歸測試圖1(2) 測試環(huán)境搭建測試環(huán)境的搭建分為軟硬測試系統(tǒng)的環(huán)境搭

8、建和測試相關(guān)的數(shù)據(jù)準備工作。環(huán)境搭建包括被測試系統(tǒng)的硬件環(huán)境建立和軟件應用系統(tǒng)建立及基礎(chǔ)數(shù)據(jù)環(huán)境建立。保障被測試系統(tǒng)的業(yè)務可用性和功能的正確性,包括測試系統(tǒng)(如被測試項目的操作系統(tǒng)、中間件、數(shù)據(jù)庫、壓力測試控制臺、壓力測試發(fā)起工具等)的環(huán)境搭建、軟件的安裝;測試環(huán)境的網(wǎng)絡環(huán)境建立(如開放防火墻和網(wǎng)關(guān)等);最后進行測試環(huán)境可用性驗證。測試數(shù)據(jù)準備包括測試應用系統(tǒng)基礎(chǔ)數(shù)據(jù)準備,即需要按性能測試規(guī)模要求,準備足夠的、一定規(guī)模的基礎(chǔ)數(shù)據(jù),通常采用全量恢復生產(chǎn)數(shù)據(jù)的方式以達到和生產(chǎn)環(huán)境數(shù)據(jù)一致性的要求。(3) 測試場景開發(fā) 測試場景開發(fā)指測試程序(腳本)的開發(fā)。測試程序(腳本)的開發(fā)是對被測系統(tǒng)的用戶業(yè)

9、務行為進行模擬、錄制、編程、參數(shù)化、腳本定制和調(diào)式等一系列工作,以使測試程序(腳本)可以真實模擬實際生產(chǎn)中的業(yè)務交易行為,并通過對程序中參數(shù)的配置實現(xiàn)對并發(fā)數(shù)、思考時間等屬性的準確控制。(4) 測試執(zhí)行 測試執(zhí)行是在測試方案的制定、測試環(huán)境準備、測試場景開發(fā)工作正確完成的基礎(chǔ)上進行的。(五)測試報告和分析性能測試報告和結(jié)果分析是在測試執(zhí)行完成以后,對性能數(shù)據(jù)進行采集結(jié)果收集工作和針對性能測試過程中暴露的問題進行分析的階段。性能測試報告是對性能測試過程中的監(jiān)控結(jié)果以及報表進行匯總,按照一定的模板整理出的一份結(jié)論性文檔。開發(fā)團隊和性能測試團隊應依據(jù)對性能測試實施過程中監(jiān)控和記錄的數(shù)據(jù)和表格,分析系

10、統(tǒng)中存在的性能問題和程序缺陷。并有針對性的在報告中闡述問題、分析原因、提出解決或優(yōu)化方案。(6) 回歸測試回歸測試是開發(fā)部門在性能測試報告的基礎(chǔ)上針對軟件的性能或者效率缺陷進行優(yōu)化或者修復,為了驗證優(yōu)化的效果而進行的再測試。4、 軟件性能測試工具LoadRunner作為軟件質(zhì)量控制中的重要一環(huán),性能測試已經(jīng)越來越受到軟件開發(fā)商和用戶的重視,成為軟件測試的重中之重。性能測試通常在系統(tǒng)測試階段執(zhí)行,常常與強度測試結(jié)合起來,一般需要使用測試工具。一個優(yōu)秀的軟件測試工具,不僅可以輔助測試工作,滿足科學測試的基本要求;而且可以自動化測試過程,節(jié)約大量的時間、成本、人員和資源,提高軟件產(chǎn)品的質(zhì)量。目前市場

11、上主要使用的測試工具有微軟公司的WAS(Web Application Stress Tool)、Compuware公司的QALoad、RadView公司的WebRunner、HP(Mercury)公司的LoadRunner。下面以LoadRunner為例。介紹軟件測試工具的工作流程。LoadRunner是一種預測系統(tǒng)行為和性能的負載測試工具。通過模擬上千萬用戶實施并發(fā)負載及實時性能檢測來確認和查找問題,能夠?qū)φ麄€企業(yè)架構(gòu)進行測試。通過使用LoadRunner,企業(yè)能夠最大限度的縮短測試時間,優(yōu)化性能和加速應用系統(tǒng)的發(fā)布周期。LoadRunner能支持廣泛的協(xié)議和技術(shù),功能比較強大,可以為特殊

12、環(huán)境提供特殊的解決方案。LoadRunner由下面三部分組成:Virtual UserGenerator用來錄制腳本、編輯腳本;Controller用來布置測試場景、執(zhí)行測試場景;Analysis用來對測試結(jié)果進行分析。用LoadRunner進行負載測試的流程通常由五個階段組成:計劃、腳本創(chuàng)建、場景定義、場景執(zhí)行、監(jiān)視執(zhí)行和結(jié)果分析。(1) 計劃負載測試:定義性能測試要求,例如并發(fā)用戶的數(shù)量、典型業(yè)務流程和所響應時間;根據(jù)軟件項目相關(guān)需求,定義相關(guān)測試的細節(jié),撰寫性能測試報告。(2)創(chuàng)建Vuser腳本:將最終用戶活動捕獲到自動腳本中LoadRunner的腳本是C語言代碼,LoadRunner有

13、自己的一整套函數(shù)接口,可以供外部調(diào)用。腳本可分INIT、ACTION、END三部分,其中:INIT部分可以理解為初始部分。ACTION可以理解為事務部分,也是測試的主體,END是退出結(jié)束。當錄制完一個基本的用戶腳本后,在正式使用前我們還需要完善測試腳本,增強腳本的靈活性。一般情況下,我們通過以下幾種方法來完善測試腳本。插人事務、插入結(jié)合點、插入注解、參數(shù)化輸入。(3)定義場景:使用LoadRunner Controller設(shè)置測試環(huán)境;錄制好腳本之后,就可以把腳本加入到場景里面去了,這里首先介紹一下LR的場景類型,LR有2種大的場景類型。Manual Scenario:該項要完全手動的設(shè)置場景

14、,這項下面還可以設(shè)置為每一個腳本分配要運行的虛擬用戶的百分比,可在Controller的Scenario菜單下設(shè)置。GoalOriented Scenario,如果你的測試計劃是要達到某個性能指標,比如:每秒多少點擊。每秒多少transae,tions,能到達多少VU,某個Transaction在某個范圍VU(5D。一1000)內(nèi)的反應時間等等,那么就可以使用面向目標的場景。(4)設(shè)置場景:Design:設(shè)計測試場景的靜態(tài)部分,設(shè)置模擬用戶生成器、模擬用戶數(shù)量、模擬用戶組等。Run:設(shè)計測試的動態(tài)部分,主要指添加性能計數(shù)器,在腳本運行的過程中可以通過這些計數(shù)器反饋的數(shù)據(jù)。建立了測試場景后,我們

15、可以對Edit_Schedule進行設(shè)置,設(shè)置測試開始執(zhí)行的時問,對于手動設(shè)計的測試還可以設(shè)定它的持續(xù)時間,以及何時起用或禁止調(diào)用模擬用戶。(5)運行場景:通過LoadRunner Controller驅(qū)動、管理和監(jiān)控負載測試。設(shè)置完畢后,點擊“開始方案”運行場景。在運行過程中,可以監(jiān)視各個服務器的運行情況(DataBase Server、WebServer等)。監(jiān)視場景通過添加性能計數(shù)器來實現(xiàn),下列數(shù)據(jù)需要特別關(guān)注:Memory:Available Mbytes物理內(nèi)存的可用數(shù)(單位Mbytes)至少要有10的物理內(nèi)存值。Processor:Processor Time CPU使用率。這是查

16、看處理器飽和狀況的最佳計數(shù)器。顯示所有CPU的線程處理時間。如果一個或多個處理器的該數(shù)值持續(xù)超過90,則表示此測試的負載對于目前的硬件過于沉重。為多處理器服務器添加該計數(shù)器的O到x個實例。Processor Queue Length:是指處理列隊中的線程數(shù),小于2。處理器瓶頸時會導致該值持續(xù)大于2。Context Switches/sec;如果切換次數(shù)到5000*CPU個數(shù)和i0000*CPU個數(shù)中,說明它忙于切換線程。Network Interface:Bytes Total/sec為發(fā)送和接收字節(jié)的速率,包括幀字符在內(nèi)。判斷網(wǎng)絡連接速度是否是瓶頸,可以用該計數(shù)器的值和目前網(wǎng)絡的帶寬比較。

17、(6)分析結(jié)果:使用LoadRunner Analysis創(chuàng)建圖和報告并評估性能。LR的報表分析功能也異常強大,有各種各樣的報表,甚至可以將單個報表組合,也可以導出到Excel文件和Html文件。 5、 LoadRunner腳本編寫實例 用LoadRunner編寫socket應用的測試腳本 LoadRunner提供了很好的對socket應用的支持,用戶可以通過錄制方法完全獲得客戶端發(fā)送和接收的數(shù)據(jù),然后在錄制的基礎(chǔ)上對相應的數(shù)據(jù)進行參數(shù)化和關(guān)聯(lián)等處理。 但在有些情況下(例如,客戶端程序沒有windows上的版本),我們就很難通過錄制達成生成腳本的目標了。但如果我們能夠完全知曉服務端和客戶端的交

18、互過程,完全手工編寫一個測試腳本也并不是一件特別困難的事情。 在本文中,我們以一個實際的例子說明如何根據(jù)服務端和客戶端交互的過程,用LoadRunner自行編寫相應的腳本。以下是服務端工作線程的代碼:DWORD WINAPI mythread( LPVOID lpParameter) /客戶線程 struct My my; memcpy(&my,lpParameter,sizeof(My); printf("One client connect!n"); char str11024; /接收字符串 char str21024; int i; i=recv(my.sk

19、t,str1,sizeof(str1),0); /接收客戶請求 str1=0; char *filename; filename=new char255; for(int j=2;j<i;j+) /獲得文件名 filenamej-2=str1j; filenamei-2=0; if (str10='S') printf("The file name : %sn",filename); ofstream out(filename); /創(chuàng)文件流 if (!out) printf("cannot open file.n"); /文件是否

20、正確打開,打開錯誤則退出 send(my.skt,"q",1,0); /向客戶發(fā)送退出信息 closesocket(my.skt); /解除客戶連接; return 0; str20='O' str21='K' str22=0; send(my.skt,str2,strlen(str2),0); /回復OK信息 i=recv(my.skt,str1,sizeof(str1),0); /接收文件長度 str14=0; int len; len=str10*1000+str11*100+str12*10+str13; printf("T

21、he File lenght is: %d Byten",len); for(int j=0;j<len;j+) char str1; i=recv(my.skt,str,sizeof(str),0);/接收文件,按字節(jié)接收,接收字符串為2個字節(jié) str=0; out.put(str0); out.close(); /關(guān)閉文件 printf("over!One client quit!n"); /接收文件完畢 closesocket(my.skt); /解除此客戶連接 return 0; if (str10='R') ifstream in(

22、filename); if (!in) printf("cannot open file or file not exist.n"); /文件是否正確打開,打開錯誤則退出 send(my.skt,"q",1,0); /向客戶發(fā)送退出信息 closesocket(my.skt); /解除客戶連接; return 0; char ch; int len=0; while(in.get(ch) len+; /get file lenght in.close(); str20='O' str21='K' str22=len/100

23、0; str23=(len%1000)/100; str24=(len%100)/10; str25=len%10; printf("%s",str2); send(my.skt,str2,6,0); /發(fā)OK文件長度 in.open(filename); if (!in) printf("cannot open file or file not exist.n"); /文件是否正確打開,打開錯誤則退出 send(my.skt,"q",1,0); /向客戶發(fā)送退出信息 closesocket(my.skt); /解除客戶連接; ret

24、urn 0; while(in.get(ch) /發(fā)文件 char str1; strcpy(str,""); str0=ch; str1=0; send(my.skt,str,1,0); /發(fā)送一個字符 in.close(); printf("over,One client quit!n"); /傳輸文件完畢 closesocket(my.skt); /解除此客戶連接 return 0; printf("Bad command!n"); closesocket(my.skt); return 0; 從這段代碼中可以看到,當客戶端和服

25、務端建立連接后,客戶端會先向服務端發(fā)送一個請求,該請求的第一個字節(jié)是大寫的“S”或是“R”,分別向服務端寫文件或是從服務端讀取文件。從第三個字節(jié)開始,后面的內(nèi)容是請求文件的文件名。 服務端在接收到客戶端的請求后,根據(jù)請求的類型,如果是“S”,則打開指定的文件,并返回一個字符串“OK”;如果是“R”,則打開指定的文件并向客戶端發(fā)送“OK”“文件長度”。 隨后,如果是“S”,則由客戶端發(fā)送寫入的文件長度和文件內(nèi)容給服務端;如果是“R”,則向客戶端發(fā)送文件的內(nèi)容。 到此我們已經(jīng)完全明了了客戶端和服務端的交互過程,因此,我們可以嘗試在LR中建立一個腳本用戶模擬客戶端行為。下面我們以“S”的處理過程為例編寫腳本。 1、打開VUGen應用; 2、新建腳本,選擇“windows sockets”協(xié)議,不需錄制; 3、在Action Section中增加以下內(nèi)容: /建立到服務端的連接 lrs_create_socket("socket1","TCP","RemoteHost=127.0.0.1:8000",LrsLastArg); /發(fā)送“S”和文件名 lrs_send("socket1", "buf0&q

溫馨提示

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

評論

0/150

提交評論