版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、論 文 摘 要 隨著當(dāng)下軟件開(kāi)發(fā)技術(shù)的發(fā)展與成熟,越來(lái)越多復(fù)雜的軟件系統(tǒng)應(yīng)用于人們生活的各個(gè)領(lǐng)域,軟件系統(tǒng)運(yùn)行時(shí)的性能表現(xiàn)已經(jīng)成為衡量軟件產(chǎn)品質(zhì)量的一個(gè)重要標(biāo)準(zhǔn)。本文研究了軟件系統(tǒng)性能測(cè)試的整體的流程,并結(jié)合自動(dòng)化測(cè)試工具LoadRunner,對(duì)軟件性能測(cè)試的相關(guān)信息進(jìn)行了撂討和分析。關(guān)鍵字:軟件測(cè)試 性能測(cè)試 LoadRunner目 錄論 文 摘 要1一、 引論3二、 軟件性能測(cè)試4三、 軟件性能測(cè)試流程5(一) 測(cè)試方案設(shè)計(jì)5(二) 測(cè)試環(huán)境搭建5(三) 測(cè)試場(chǎng)景開(kāi)發(fā)6(四) 測(cè)試執(zhí)行6(五)測(cè)試報(bào)告和分析6(六) 回歸測(cè)試6四、 軟件性能測(cè)試工具LoadRunner7五、 LoadRun
2、ner腳本編寫(xiě)實(shí)例9六、總結(jié)14致謝14參考文獻(xiàn)15軟件性能測(cè)試研究李悅(開(kāi)封大學(xué) 計(jì)算機(jī)應(yīng)用專業(yè))1、 引論軟件在性能方面的“亞健康”問(wèn)題一直伴隨著國(guó)內(nèi)很多企業(yè)的軟件產(chǎn)品而存在。早期由于多數(shù)軟件應(yīng)用系統(tǒng)在企業(yè)中得不到有效的推廣應(yīng)用,因此用戶往往會(huì)忽略自己在性能方面的需求。而現(xiàn)在軟件幾乎滲透到人們工作與生活的各個(gè)方面,因而軟件的性能開(kāi)始得到越來(lái)越多的重視。隨著軟件工程技術(shù)、軟件開(kāi)發(fā)方法和軟件開(kāi)發(fā)工具的發(fā)展,一方面使人們可以快速開(kāi)發(fā)更加復(fù)雜的應(yīng)用,另一方面也使開(kāi)發(fā)出的軟件規(guī)模越來(lái)越龐大,架構(gòu)越來(lái)越復(fù)雜。隨之而來(lái)的是軟件性能問(wèn)題也越來(lái)越多,最終導(dǎo)致很多軟件系統(tǒng)由于性能方面存在問(wèn)題而停止使用,給軟件
3、公司以及客戶都帶來(lái)了一定的損失。因此,解決軟件性能問(wèn)題是十分必要的一項(xiàng)工作中,對(duì)于企業(yè)自身以及客戶都具有重要的現(xiàn)實(shí)意義。性能測(cè)試,是軟件測(cè)試中的重中之重,它在軟件的質(zhì)量保證中起著重要的作用。性能測(cè)試并不僅僅是請(qǐng)求、點(diǎn)擊次數(shù)或是最快的系統(tǒng),它的主要目的是考查在大壓力和大數(shù)據(jù)量情況下,應(yīng)用服務(wù)器最大處理能力和系統(tǒng)響應(yīng)時(shí)間,從而分析出軟件或系統(tǒng)的瓶頸所在,使系統(tǒng)運(yùn)行在最佳的性能。使系統(tǒng)達(dá)到最佳性能,是性能測(cè)試根本目的。對(duì)于性能測(cè)試工作而言,不但需要好的性能測(cè)試?yán)碚撟鳛楣ぷ髦笇?dǎo),更需要掌握好的性能測(cè)試工具,因此本文中主要介紹性能測(cè)試的規(guī)劃和設(shè)計(jì)的相關(guān)內(nèi)容及目前國(guó)內(nèi)性能測(cè)試領(lǐng)域應(yīng)用最廣泛的工具之一Loa
4、dRunner。 LoadRunner是一種預(yù)測(cè)系統(tǒng)行為和性能的負(fù)載測(cè)試工具。通過(guò)以模擬上千萬(wàn)用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測(cè)的方式來(lái)確認(rèn)和查找問(wèn)題,LoadRunner能夠?qū)φ麄€(gè)企業(yè)架構(gòu)進(jìn)行測(cè)試。通過(guò)使用LoadRunner,企業(yè)能最大限度地縮短測(cè)試時(shí)間,優(yōu)化性能和加速應(yīng)用系統(tǒng)的發(fā)布周期。LoadRunner是一種適用于各種體系架構(gòu)的自動(dòng)負(fù)載測(cè)試工具,它能預(yù)測(cè)系統(tǒng)行為并優(yōu)化系統(tǒng)性能。LoadRunner的測(cè)試對(duì)象是整個(gè)企業(yè)的系統(tǒng),它通過(guò)模擬實(shí)際用戶的操作行為和實(shí)行實(shí)時(shí)性能監(jiān)測(cè),來(lái)幫助您更快的查找和發(fā)現(xiàn)問(wèn)題。此外,LoadRunner能支持廣泛的協(xié)議和技術(shù),為您的特殊環(huán)境提供特殊的解決方案。2、
5、 軟件性能測(cè)試 性能測(cè)試是通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。負(fù)載測(cè)試和壓力測(cè)試都屬于性能測(cè)試,兩者可以結(jié)合進(jìn)行。通過(guò)負(fù)載測(cè)試,確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。壓力測(cè)試是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。根據(jù)測(cè)試的目的和內(nèi)容的不同,性能測(cè)試主要包括以下方面:(1)負(fù)載測(cè)試:確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。(2)強(qiáng)度測(cè)試:確定在系統(tǒng)資源特別低的條件下軟件系統(tǒng)運(yùn)行情況。(3)容量測(cè)試:在用戶
6、可接受的響應(yīng)范圍內(nèi),確定系統(tǒng)可處理同時(shí)在線的最大用戶數(shù)。(4)壓力測(cè)試:通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者最大使用極限的測(cè)試。(5)疲勞強(qiáng)度測(cè)試:以系統(tǒng)穩(wěn)定運(yùn)行情況下能夠支持的最大并發(fā)用戶數(shù)或者日常運(yùn)行用戶數(shù),持續(xù)執(zhí)行一段時(shí)間業(yè)務(wù),通過(guò)綜合分析交易執(zhí)行指標(biāo)和資源監(jiān)控指標(biāo)來(lái)確定系統(tǒng)處理最大工作強(qiáng)度性能的過(guò)程。(6)大數(shù)據(jù)量測(cè)試:大數(shù)據(jù)量測(cè)試側(cè)重點(diǎn)在于數(shù)據(jù)的量上,包括獨(dú)立的數(shù)據(jù)量測(cè)試和綜合數(shù)據(jù)量測(cè)試。獨(dú)立的數(shù)據(jù)量測(cè)試針對(duì)某些系統(tǒng)存儲(chǔ),傳輸、統(tǒng)計(jì)、查詢等業(yè)務(wù)進(jìn)行大數(shù)據(jù)量測(cè)試,而綜合數(shù)據(jù)量測(cè)試一般和壓力性能測(cè)試、負(fù)載性能測(cè)試、疲勞性能測(cè)試相結(jié)合。3、 軟件性能測(cè)試流程(1) 測(cè)試方案設(shè)計(jì)在軟件性能測(cè)試的初始階
7、段,首先應(yīng)對(duì)業(yè)務(wù)模型和系統(tǒng)架構(gòu)進(jìn)行調(diào)研,收集測(cè)試需求。然后生成性能測(cè)試計(jì)劃。業(yè)務(wù)調(diào)研和系統(tǒng)調(diào)研,需要性能測(cè)試團(tuán)隊(duì)提前了解被測(cè)試項(xiàng)目的業(yè)務(wù)功能和系統(tǒng)架構(gòu)。其間。開(kāi)發(fā)部門(mén)應(yīng)協(xié)助提供被測(cè)系統(tǒng)相關(guān)的文檔和說(shuō)明,如系統(tǒng)總體介紹、系統(tǒng)規(guī)格書(shū)、用戶使用手冊(cè)、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖和系統(tǒng)配置說(shuō)明、關(guān)鍵服務(wù)器及應(yīng)用部署與配置等文檔。通過(guò)和業(yè)務(wù)部門(mén)協(xié)商明確本次測(cè)試針對(duì)哪些業(yè)務(wù)行為,制定此次測(cè)試的目標(biāo),細(xì)化測(cè)試的關(guān)注點(diǎn)和性能指標(biāo)要求。通過(guò)以上內(nèi)容制定詳細(xì)的測(cè)試方案,并制定詳細(xì)測(cè)試計(jì)劃和各階段目標(biāo)。測(cè)試方案設(shè)計(jì)測(cè)試環(huán)境搭建測(cè)試場(chǎng)景開(kāi)發(fā)測(cè)試執(zhí)行測(cè)試報(bào)告和分析回歸測(cè)試圖1(2) 測(cè)試環(huán)境搭建測(cè)試環(huán)境的搭建分為軟硬測(cè)試系統(tǒng)的環(huán)境搭
8、建和測(cè)試相關(guān)的數(shù)據(jù)準(zhǔn)備工作。環(huán)境搭建包括被測(cè)試系統(tǒng)的硬件環(huán)境建立和軟件應(yīng)用系統(tǒng)建立及基礎(chǔ)數(shù)據(jù)環(huán)境建立。保障被測(cè)試系統(tǒng)的業(yè)務(wù)可用性和功能的正確性,包括測(cè)試系統(tǒng)(如被測(cè)試項(xiàng)目的操作系統(tǒng)、中間件、數(shù)據(jù)庫(kù)、壓力測(cè)試控制臺(tái)、壓力測(cè)試發(fā)起工具等)的環(huán)境搭建、軟件的安裝;測(cè)試環(huán)境的網(wǎng)絡(luò)環(huán)境建立(如開(kāi)放防火墻和網(wǎng)關(guān)等);最后進(jìn)行測(cè)試環(huán)境可用性驗(yàn)證。測(cè)試數(shù)據(jù)準(zhǔn)備包括測(cè)試應(yīng)用系統(tǒng)基礎(chǔ)數(shù)據(jù)準(zhǔn)備,即需要按性能測(cè)試規(guī)模要求,準(zhǔn)備足夠的、一定規(guī)模的基礎(chǔ)數(shù)據(jù),通常采用全量恢復(fù)生產(chǎn)數(shù)據(jù)的方式以達(dá)到和生產(chǎn)環(huán)境數(shù)據(jù)一致性的要求。(3) 測(cè)試場(chǎng)景開(kāi)發(fā) 測(cè)試場(chǎng)景開(kāi)發(fā)指測(cè)試程序(腳本)的開(kāi)發(fā)。測(cè)試程序(腳本)的開(kāi)發(fā)是對(duì)被測(cè)系統(tǒng)的用戶業(yè)
9、務(wù)行為進(jìn)行模擬、錄制、編程、參數(shù)化、腳本定制和調(diào)式等一系列工作,以使測(cè)試程序(腳本)可以真實(shí)模擬實(shí)際生產(chǎn)中的業(yè)務(wù)交易行為,并通過(guò)對(duì)程序中參數(shù)的配置實(shí)現(xiàn)對(duì)并發(fā)數(shù)、思考時(shí)間等屬性的準(zhǔn)確控制。(4) 測(cè)試執(zhí)行 測(cè)試執(zhí)行是在測(cè)試方案的制定、測(cè)試環(huán)境準(zhǔn)備、測(cè)試場(chǎng)景開(kāi)發(fā)工作正確完成的基礎(chǔ)上進(jìn)行的。(五)測(cè)試報(bào)告和分析性能測(cè)試報(bào)告和結(jié)果分析是在測(cè)試執(zhí)行完成以后,對(duì)性能數(shù)據(jù)進(jìn)行采集結(jié)果收集工作和針對(duì)性能測(cè)試過(guò)程中暴露的問(wèn)題進(jìn)行分析的階段。性能測(cè)試報(bào)告是對(duì)性能測(cè)試過(guò)程中的監(jiān)控結(jié)果以及報(bào)表進(jìn)行匯總,按照一定的模板整理出的一份結(jié)論性文檔。開(kāi)發(fā)團(tuán)隊(duì)和性能測(cè)試團(tuán)隊(duì)?wèi)?yīng)依據(jù)對(duì)性能測(cè)試實(shí)施過(guò)程中監(jiān)控和記錄的數(shù)據(jù)和表格,分析系
10、統(tǒng)中存在的性能問(wèn)題和程序缺陷。并有針對(duì)性的在報(bào)告中闡述問(wèn)題、分析原因、提出解決或優(yōu)化方案。(6) 回歸測(cè)試回歸測(cè)試是開(kāi)發(fā)部門(mén)在性能測(cè)試報(bào)告的基礎(chǔ)上針對(duì)軟件的性能或者效率缺陷進(jìn)行優(yōu)化或者修復(fù),為了驗(yàn)證優(yōu)化的效果而進(jìn)行的再測(cè)試。4、 軟件性能測(cè)試工具LoadRunner作為軟件質(zhì)量控制中的重要一環(huán),性能測(cè)試已經(jīng)越來(lái)越受到軟件開(kāi)發(fā)商和用戶的重視,成為軟件測(cè)試的重中之重。性能測(cè)試通常在系統(tǒng)測(cè)試階段執(zhí)行,常常與強(qiáng)度測(cè)試結(jié)合起來(lái),一般需要使用測(cè)試工具。一個(gè)優(yōu)秀的軟件測(cè)試工具,不僅可以輔助測(cè)試工作,滿足科學(xué)測(cè)試的基本要求;而且可以自動(dòng)化測(cè)試過(guò)程,節(jié)約大量的時(shí)間、成本、人員和資源,提高軟件產(chǎn)品的質(zhì)量。目前市場(chǎng)
11、上主要使用的測(cè)試工具有微軟公司的WAS(Web Application Stress Tool)、Compuware公司的QALoad、RadView公司的WebRunner、HP(Mercury)公司的LoadRunner。下面以LoadRunner為例。介紹軟件測(cè)試工具的工作流程。LoadRunner是一種預(yù)測(cè)系統(tǒng)行為和性能的負(fù)載測(cè)試工具。通過(guò)模擬上千萬(wàn)用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能檢測(cè)來(lái)確認(rèn)和查找問(wèn)題,能夠?qū)φ麄€(gè)企業(yè)架構(gòu)進(jìn)行測(cè)試。通過(guò)使用LoadRunner,企業(yè)能夠最大限度的縮短測(cè)試時(shí)間,優(yōu)化性能和加速應(yīng)用系統(tǒng)的發(fā)布周期。LoadRunner能支持廣泛的協(xié)議和技術(shù),功能比較強(qiáng)大,可以為特殊
12、環(huán)境提供特殊的解決方案。LoadRunner由下面三部分組成:Virtual UserGenerator用來(lái)錄制腳本、編輯腳本;Controller用來(lái)布置測(cè)試場(chǎng)景、執(zhí)行測(cè)試場(chǎng)景;Analysis用來(lái)對(duì)測(cè)試結(jié)果進(jìn)行分析。用LoadRunner進(jìn)行負(fù)載測(cè)試的流程通常由五個(gè)階段組成:計(jì)劃、腳本創(chuàng)建、場(chǎng)景定義、場(chǎng)景執(zhí)行、監(jiān)視執(zhí)行和結(jié)果分析。(1) 計(jì)劃負(fù)載測(cè)試:定義性能測(cè)試要求,例如并發(fā)用戶的數(shù)量、典型業(yè)務(wù)流程和所響應(yīng)時(shí)間;根據(jù)軟件項(xiàng)目相關(guān)需求,定義相關(guān)測(cè)試的細(xì)節(jié),撰寫(xiě)性能測(cè)試報(bào)告。(2)創(chuàng)建Vuser腳本:將最終用戶活動(dòng)捕獲到自動(dòng)腳本中LoadRunner的腳本是C語(yǔ)言代碼,LoadRunner有
13、自己的一整套函數(shù)接口,可以供外部調(diào)用。腳本可分INIT、ACTION、END三部分,其中:INIT部分可以理解為初始部分。ACTION可以理解為事務(wù)部分,也是測(cè)試的主體,END是退出結(jié)束。當(dāng)錄制完一個(gè)基本的用戶腳本后,在正式使用前我們還需要完善測(cè)試腳本,增強(qiáng)腳本的靈活性。一般情況下,我們通過(guò)以下幾種方法來(lái)完善測(cè)試腳本。插人事務(wù)、插入結(jié)合點(diǎn)、插入注解、參數(shù)化輸入。(3)定義場(chǎng)景:使用LoadRunner Controller設(shè)置測(cè)試環(huán)境;錄制好腳本之后,就可以把腳本加入到場(chǎng)景里面去了,這里首先介紹一下LR的場(chǎng)景類型,LR有2種大的場(chǎng)景類型。Manual Scenario:該項(xiàng)要完全手動(dòng)的設(shè)置場(chǎng)景
14、,這項(xiàng)下面還可以設(shè)置為每一個(gè)腳本分配要運(yùn)行的虛擬用戶的百分比,可在Controller的Scenario菜單下設(shè)置。GoalOriented Scenario,如果你的測(cè)試計(jì)劃是要達(dá)到某個(gè)性能指標(biāo),比如:每秒多少點(diǎn)擊。每秒多少transae,tions,能到達(dá)多少VU,某個(gè)Transaction在某個(gè)范圍VU(5D。一1000)內(nèi)的反應(yīng)時(shí)間等等,那么就可以使用面向目標(biāo)的場(chǎng)景。(4)設(shè)置場(chǎng)景:Design:設(shè)計(jì)測(cè)試場(chǎng)景的靜態(tài)部分,設(shè)置模擬用戶生成器、模擬用戶數(shù)量、模擬用戶組等。Run:設(shè)計(jì)測(cè)試的動(dòng)態(tài)部分,主要指添加性能計(jì)數(shù)器,在腳本運(yùn)行的過(guò)程中可以通過(guò)這些計(jì)數(shù)器反饋的數(shù)據(jù)。建立了測(cè)試場(chǎng)景后,我們
15、可以對(duì)Edit_Schedule進(jìn)行設(shè)置,設(shè)置測(cè)試開(kāi)始執(zhí)行的時(shí)問(wèn),對(duì)于手動(dòng)設(shè)計(jì)的測(cè)試還可以設(shè)定它的持續(xù)時(shí)間,以及何時(shí)起用或禁止調(diào)用模擬用戶。(5)運(yùn)行場(chǎng)景:通過(guò)LoadRunner Controller驅(qū)動(dòng)、管理和監(jiān)控負(fù)載測(cè)試。設(shè)置完畢后,點(diǎn)擊“開(kāi)始方案”運(yùn)行場(chǎng)景。在運(yùn)行過(guò)程中,可以監(jiān)視各個(gè)服務(wù)器的運(yùn)行情況(DataBase Server、WebServer等)。監(jiān)視場(chǎng)景通過(guò)添加性能計(jì)數(shù)器來(lái)實(shí)現(xiàn),下列數(shù)據(jù)需要特別關(guān)注:Memory:Available Mbytes物理內(nèi)存的可用數(shù)(單位Mbytes)至少要有10的物理內(nèi)存值。Processor:Processor Time CPU使用率。這是查
16、看處理器飽和狀況的最佳計(jì)數(shù)器。顯示所有CPU的線程處理時(shí)間。如果一個(gè)或多個(gè)處理器的該數(shù)值持續(xù)超過(guò)90,則表示此測(cè)試的負(fù)載對(duì)于目前的硬件過(guò)于沉重。為多處理器服務(wù)器添加該計(jì)數(shù)器的O到x個(gè)實(shí)例。Processor Queue Length:是指處理列隊(duì)中的線程數(shù),小于2。處理器瓶頸時(shí)會(huì)導(dǎo)致該值持續(xù)大于2。Context Switches/sec;如果切換次數(shù)到5000*CPU個(gè)數(shù)和i0000*CPU個(gè)數(shù)中,說(shuō)明它忙于切換線程。Network Interface:Bytes Total/sec為發(fā)送和接收字節(jié)的速率,包括幀字符在內(nèi)。判斷網(wǎng)絡(luò)連接速度是否是瓶頸,可以用該計(jì)數(shù)器的值和目前網(wǎng)絡(luò)的帶寬比較。
17、(6)分析結(jié)果:使用LoadRunner Analysis創(chuàng)建圖和報(bào)告并評(píng)估性能。LR的報(bào)表分析功能也異常強(qiáng)大,有各種各樣的報(bào)表,甚至可以將單個(gè)報(bào)表組合,也可以導(dǎo)出到Excel文件和Html文件。 5、 LoadRunner腳本編寫(xiě)實(shí)例 用LoadRunner編寫(xiě)socket應(yīng)用的測(cè)試腳本 LoadRunner提供了很好的對(duì)socket應(yīng)用的支持,用戶可以通過(guò)錄制方法完全獲得客戶端發(fā)送和接收的數(shù)據(jù),然后在錄制的基礎(chǔ)上對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行參數(shù)化和關(guān)聯(lián)等處理。 但在有些情況下(例如,客戶端程序沒(méi)有windows上的版本),我們就很難通過(guò)錄制達(dá)成生成腳本的目標(biāo)了。但如果我們能夠完全知曉服務(wù)端和客戶端的交
18、互過(guò)程,完全手工編寫(xiě)一個(gè)測(cè)試腳本也并不是一件特別困難的事情。 在本文中,我們以一個(gè)實(shí)際的例子說(shuō)明如何根據(jù)服務(wù)端和客戶端交互的過(guò)程,用LoadRunner自行編寫(xiě)相應(yīng)的腳本。以下是服務(wù)端工作線程的代碼: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); /接收客戶請(qǐng)求 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、正確打開(kāi),打開(kāi)錯(cuò)誤則退出 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); /回復(fù)OK信息 i=recv(my.skt,str1,sizeof(str1),0); /接收文件長(zhǎng)度 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個(gè)字節(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"); /文件是否正確打開(kāi),打開(kāi)錯(cuò)誤則退出 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文件長(zhǎng)度 in.open(filename); if (!in) printf("cannot open file or file not exist.n"); /文件是否正確打開(kāi),打開(kāi)錯(cuò)誤則退出 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ā)送一個(gè)字符 in.close(); printf("over,One client quit!n"); /傳輸文件完畢 closesocket(my.skt); /解除此客戶連接 return 0; printf("Bad command!n"); closesocket(my.skt); return 0; 從這段代碼中可以看到,當(dāng)客戶端和服
25、務(wù)端建立連接后,客戶端會(huì)先向服務(wù)端發(fā)送一個(gè)請(qǐng)求,該請(qǐng)求的第一個(gè)字節(jié)是大寫(xiě)的“S”或是“R”,分別向服務(wù)端寫(xiě)文件或是從服務(wù)端讀取文件。從第三個(gè)字節(jié)開(kāi)始,后面的內(nèi)容是請(qǐng)求文件的文件名。 服務(wù)端在接收到客戶端的請(qǐng)求后,根據(jù)請(qǐng)求的類型,如果是“S”,則打開(kāi)指定的文件,并返回一個(gè)字符串“OK”;如果是“R”,則打開(kāi)指定的文件并向客戶端發(fā)送“OK”“文件長(zhǎng)度”。 隨后,如果是“S”,則由客戶端發(fā)送寫(xiě)入的文件長(zhǎng)度和文件內(nèi)容給服務(wù)端;如果是“R”,則向客戶端發(fā)送文件的內(nèi)容。 到此我們已經(jīng)完全明了了客戶端和服務(wù)端的交互過(guò)程,因此,我們可以嘗試在LR中建立一個(gè)腳本用戶模擬客戶端行為。下面我們以“S”的處理過(guò)程為例編寫(xiě)腳本。 1、打開(kāi)VUGen應(yīng)用; 2、新建腳本,選擇“windows sockets”協(xié)議,不需錄制; 3、在Action Section中增加以下內(nèi)容: /建立到服務(wù)端的連接 lrs_create_socket("socket1","TCP","RemoteHost=127.0.0.1:8000",LrsLastArg); /發(fā)送“S”和文件名 lrs_send("socket1", "buf0&q
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東外語(yǔ)外貿(mào)大學(xué)《辦公室事務(wù)管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東司法警官職業(yè)學(xué)院《自動(dòng)變速器》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東培正學(xué)院《海關(guān)報(bào)關(guān)實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級(jí)上冊(cè)《5.1.1 從算式到方程》課件與作業(yè)
- 七年級(jí)上冊(cè)《2.2.1 第1課時(shí) 有理數(shù)的乘法》課件與作業(yè)
- 廣東茂名幼兒師范??茖W(xué)?!栋l(fā)動(dòng)機(jī)構(gòu)造與原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東理工職業(yè)學(xué)院《三維動(dòng)畫(huà)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 一年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)1000題匯編
- 物流工作總結(jié)范文10篇
- 【北京特級(jí)教師】2020-2021學(xué)年人教版高中地理必修二輔導(dǎo)講義:工業(yè)區(qū)位選擇和工業(yè)地域
- 水利水電移民安置驗(yàn)收資料目錄、工作報(bào)告、驗(yàn)收?qǐng)?bào)告、有關(guān)表格
- 2024年人教版生物八年級(jí)上冊(cè)中考復(fù)習(xí)知識(shí)點(diǎn)綱要
- 機(jī)電樣板實(shí)施施工方法及工藝要求
- 人音版音樂(lè)七年級(jí)下冊(cè) 4.2.3凱皮拉的小火車(chē) 教案教案1000字
- 建設(shè)工程工程量清單計(jì)價(jià)規(guī)范有表格
- 2023版學(xué)前教育專業(yè)人才需求調(diào)研報(bào)告及人培方案(普招)
- 酒店客房部獎(jiǎng)懲制度
- DB43-T 2927-2024 中醫(yī)護(hù)理門(mén)診建設(shè)與管理規(guī)范
- 北師大版九下《直角三角形邊角關(guān)系》
- ba年會(huì)快閃開(kāi)場(chǎng)模板
- 2024年浙江杭州西湖文化旅游投資集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論