版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
安博測(cè)試空間技術(shù)中心/
地址:北京市海淀區(qū)學(xué)院路40號(hào)大唐電信測(cè)試空間樓
聯(lián)系電話:010-623032236230326062303230
LoadRunner壓力測(cè)試實(shí)例
摘要:本文通過(guò)實(shí)例講解介紹了LoadRunner工具的使用,介于公司的實(shí)際情況,文中主要
是對(duì)工具的基本使用做了詳細(xì)描述,高級(jí)運(yùn)用方面除性能計(jì)數(shù)器與參數(shù)設(shè)置外其它均未涉
及,待以后補(bǔ)充。目的是使公司人員根據(jù)該手冊(cè)便可以獨(dú)立運(yùn)用Loadrunner進(jìn)行壓力測(cè)試
1LoadRunner概要介紹
LoadRunner是一種預(yù)測(cè)系統(tǒng)行為和性能的工業(yè)標(biāo)準(zhǔn)級(jí)負(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ā)布周期。目前企業(yè)的網(wǎng)絡(luò)應(yīng)用環(huán)境都必須支持大量用戶,網(wǎng)絡(luò)體系架構(gòu)
中含各類應(yīng)用環(huán)境且由不同供應(yīng)商提供軟件和硬件產(chǎn)品。難以預(yù)知的用戶負(fù)載和愈來(lái)愈復(fù)雜
的應(yīng)用環(huán)境使公司時(shí)時(shí)擔(dān)心會(huì)發(fā)生用戶響應(yīng)速度過(guò)慢,系統(tǒng)崩潰等問(wèn)題。這些都不可避免
地導(dǎo)致公司收益的損失。MercuryInteractive的LoadRunner能讓企'也保護(hù)自己的收入來(lái)源,
無(wú)需購(gòu)置額外硬件而最大限度地利用現(xiàn)有的IT資源,并確保終端用戶在應(yīng)用系統(tǒng)的各個(gè)
環(huán)節(jié)中對(duì)其測(cè)試應(yīng)用的質(zhì)量,可靠性和可擴(kuò)展性都有良好的評(píng)價(jià)。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)
境提供特殊的解決方案。
1.1基本步驟
使用LoadRunner完成測(cè)試一般分為四個(gè)步驟:
1)VvitrualUserGenerator創(chuàng)建腳本
令創(chuàng)建腳本,選擇協(xié)議
令錄制腳本
令編輯腳本
令檢查修改腳本是否有誤
2)中央控制器(Controller)來(lái)調(diào)度虛擬用戶
令創(chuàng)建Scenario,選擇腳本
令設(shè)置機(jī)器虛擬用戶數(shù)
令設(shè)置Schedule
令如果模擬多機(jī)測(cè)試,設(shè)置IpSpoofer
3)運(yùn)行腳本
令分析scenario
4)分析測(cè)試結(jié)果
2安裝LoadRunner中文版
LoadRunner分為Windows版本和Unix版本。如果我們的所有測(cè)試環(huán)境基于Windows
平臺(tái),那么我們只要安裝Windows版本即可。本章講解的安裝過(guò)程就是LoadRunner7.8中
文的Windows版本的安裝。
2.1系統(tǒng)要求
目前部門(mén)的測(cè)試機(jī)和工作機(jī)器足可以滿足LoadRunner7.8的最低要求。不過(guò)要比較好
的運(yùn)行LoadRunner,內(nèi)存最好在512M以上,安裝LoadRunner的磁盤(pán)空間至少剩余
500M。操作系統(tǒng)最好為Windows2000。
2.2安裝過(guò)程
LoadRunner7.8中文版安裝基本分兩個(gè)步驟:首先安裝LoadRunner7.8英文原版,然后安
裝中文語(yǔ)言插件包
LoadRunner7.8英文原版存放位置:\\39\testtools\LR7.8nt.rar將壓縮文件拷貝
解壓到本機(jī)的安裝,過(guò)程比較簡(jiǎn)單要開(kāi)始安裝LoadRunner,以Administrator的身份登陸
Windows2000后,運(yùn)行LoadRunner安裝目錄下Setup.exe即可進(jìn)入安裝程序。
1.在"RegistrationInformation”界面中,輸入序列號(hào)(不用改動(dòng),就是n個(gè)8)
2.在安裝類型界面中,選擇一種安裝類型
卜面簡(jiǎn)單的對(duì)這三種安裝類型進(jìn)行介紹
?StandaloneInstallation將要安裝LoadRunner在一臺(tái)計(jì)算機(jī)上
?NetworkInstallation把LoadRunner安裝在一個(gè)網(wǎng)絡(luò)驅(qū)動(dòng)器匕這樣任何能連接到這個(gè)
網(wǎng)絡(luò)驅(qū)動(dòng)器的計(jì)算機(jī)都可以使用LoadRunner的部分或者全部組件。
?NetworkInstallationandshortcuts和NetworkInstallation類似,不同的只是這種類型將把
自己的計(jì)算機(jī)配置成Workstation來(lái)運(yùn)行LoadRunner。如果選擇了第二項(xiàng),我們還需要
進(jìn)行2.3的安裝來(lái)配置Workstation.。考慮到我們是自己學(xué)習(xí)研究學(xué)習(xí),選擇第一種安裝方
法。
3.在安裝方式界面中,需要選擇一種安裝方式。建議選擇“自定義安裝”,這樣所有的
組件都會(huì)一次安裝。
下面簡(jiǎn)單的對(duì)各個(gè)安裝方式進(jìn)行介紹
?TypicalInstallation安裝比較通用的組件,包括Controller、Vuser、在線幫助和腳
該選項(xiàng)適合于控制Vusers的機(jī)器。
?LoadGenerator只安裝運(yùn)行Vusers產(chǎn)生負(fù)載的組件。該選項(xiàng)適合于只產(chǎn)生負(fù)載,
而不控制Vusers的機(jī)器。
?MIListener安裝MIListener組件,用來(lái)透過(guò)防火墻來(lái)運(yùn)行Vusers并且監(jiān)視性能。
?CustomInstallation自定義安裝,我們將使用該選項(xiàng),安裝全部的組件。
4.在"LicenseInformation”中輸入LicenseKey后,Next,繼續(xù)
100個(gè)用戶(無(wú)時(shí)間限制):AEAMAUIK-YAFEKEKJJKEEA-BCJGI
10000個(gè)用戶(有時(shí)間限制):AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB
5.如果是網(wǎng)絡(luò)安裝,最好把網(wǎng)絡(luò)驅(qū)動(dòng)器映射成本機(jī)的一個(gè)盤(pán)符,安裝LoadRunner的各級(jí)
目錄不要包含中文字符。
6.Next后進(jìn)入拷貝文件的界面
7.拷貝文件完成后,進(jìn)入"UserLoginSettings”界面。
?Allowvirtualuserstorunonthismachinewithoutuserlogin需要在下面輸入域、用
戶名和密碼,這樣運(yùn)行LoadGenerator的機(jī)器會(huì)自動(dòng)登陸到網(wǎng)絡(luò),
?ManuallogintotheLoadGeneratormachine運(yùn)行Vusers時(shí),自動(dòng)登陸到網(wǎng)絡(luò),
無(wú)需登陸用戶名和密碼,這樣Vusers就會(huì)不用任何干預(yù)自動(dòng)的啟動(dòng)運(yùn)行。推薦
選擇該項(xiàng)。這里選擇第一項(xiàng)和第二項(xiàng)都可以。
8.重新啟動(dòng),安裝完成
LoadRunner7.8英文原版存放位置:\\39\lesttools\LoadRunner7.8中文版.rar
將壓縮文件拷貝解壓到本機(jī)的安裝過(guò)程比較簡(jiǎn)單要開(kāi)始安裝以Administrator的身份登陸
Windows2000后,(注意要退出已經(jīng)運(yùn)行的英文原版)運(yùn)行安裝目錄下Setup.exe即可進(jìn)入
安裝程序,安裝過(guò)程中?切人機(jī)交流窗口多選擇默認(rèn)“下一步”即可
注意:解壓文件存放的文件夾不可起中文名字,安裝目錄最好使用默認(rèn),如果更改則安裝目
錄不要使用中文名!
3.項(xiàng)目背景介紹
3.1背景概述
“LMS網(wǎng)??荚嚻脚_(tái)”是個(gè)典型的三層B/S架構(gòu)的MIS系統(tǒng)(客戶端/應(yīng)用服務(wù)器/數(shù)
據(jù)庫(kù)管),中間層是業(yè)務(wù)邏輯層,應(yīng)用服務(wù)器處理所有的業(yè)務(wù)邏輯,但應(yīng)用服務(wù)器本身不提
供負(fù)載均衡的能力,而是利用開(kāi)發(fā)工具提供的ORB(對(duì)象請(qǐng)求代理)軟件保證多個(gè)應(yīng)用服
務(wù)器間的負(fù)載均衡。本次測(cè)試的目的是:進(jìn)行應(yīng)用服務(wù)器的壓力測(cè)試,找出應(yīng)用服務(wù)器能夠
支持的最大客戶端數(shù)。方法是:按照正常業(yè)務(wù)壓力估算值的b10倍進(jìn)行測(cè)試,考察應(yīng)用服
務(wù)器的運(yùn)行情況。
3.2壓力測(cè)試用例
場(chǎng)景描述一:
1.用戶登錄的1mm模塊,總共登陸24個(gè)用戶,所有用戶都同時(shí)并發(fā)操作。
2.用戶點(diǎn)擊“登記的教程”
3.用戶點(diǎn)擊“啟動(dòng)”,進(jìn)行課程學(xué)習(xí),進(jìn)入DS模塊
4.在DS模塊中進(jìn)行學(xué)習(xí),過(guò)程包括:首先,點(diǎn)擊一次課程結(jié)構(gòu)樹(shù);然后,進(jìn)行課程
內(nèi)容的學(xué)習(xí)。
5.點(diǎn)擊“返回LMS”按鈕,返回到1mm模塊,點(diǎn)擊“退出”按鈕,退出系統(tǒng)
場(chǎng)景描述二:
I.用戶登陸1mm模塊,總共登錄48個(gè)用戶,每1秒登錄1個(gè)用戶
2.用戶點(diǎn)擊“已登記教程”
3.用戶點(diǎn)擊“啟動(dòng)”,進(jìn)行課程學(xué)習(xí),進(jìn)入DS模塊
4.在DS模塊中進(jìn)行學(xué)習(xí),過(guò)程包括:首先,點(diǎn)擊一次課程結(jié)構(gòu)樹(shù);然后,進(jìn)行課程
內(nèi)容的學(xué)習(xí);
5.點(diǎn)擊“返回LMS”按鈕,返回到1mm模塊,點(diǎn)擊“退出”按鈕,退出系統(tǒng)
場(chǎng)景描述三:
1.用戶登錄的1mm模塊,總共登陸48個(gè)用戶,所有用戶都同時(shí)并發(fā)操作。
2.用戶點(diǎn)擊“登記的教程”
3.用戶點(diǎn)擊“啟動(dòng)”,進(jìn)行課程學(xué)習(xí),進(jìn)入DS模塊
4.在DS模塊中進(jìn)行學(xué)習(xí),過(guò)程包括:首先,點(diǎn)擊一次課程結(jié)構(gòu)樹(shù);然后,進(jìn)行課程
內(nèi)容的學(xué)習(xí)。
5.點(diǎn)擊“返回LMS”按鈕,返回到1mm模塊
點(diǎn)擊“退出”按鈕,退出系統(tǒng)
場(chǎng)景描述四:
1.用戶登錄的1mm模塊,總共登陸48個(gè)用戶,每秒同時(shí)登錄10個(gè)用戶。
2.用戶點(diǎn)擊“登記的教程”
3.用戶點(diǎn)擊“啟動(dòng)”,進(jìn)行課程學(xué)習(xí),進(jìn)入DS模塊
4.在DS模塊中進(jìn)行學(xué)習(xí),過(guò)程包括:首先,點(diǎn)擊一次課程結(jié)構(gòu)樹(shù);然后,進(jìn)行課程
內(nèi)容的學(xué)習(xí)。
5.點(diǎn)擊“返回LMS”按鈕,返回到1mm模塊,點(diǎn)擊“退出”按鈕,退出系統(tǒng)
場(chǎng)景描述五:
1.用戶登錄的1mm模塊,總共登陸100個(gè)用戶,所有用戶同時(shí)并發(fā)操作。
2.用戶點(diǎn)擊“登記的教程”
3.用戶點(diǎn)擊“啟動(dòng)”,進(jìn)行課程學(xué)習(xí),進(jìn)入DS模塊
4.在DS模塊中進(jìn)行學(xué)習(xí),過(guò)程包括:首先,點(diǎn)擊一次課程結(jié)構(gòu)樹(shù);然后,進(jìn)行課程
內(nèi)容的學(xué)習(xí)。
5.點(diǎn)擊“返回LMS”按鈕,返回到1mm模塊
場(chǎng)景描述六:
1.用戶登錄的1mm模塊,總共登陸200個(gè)用戶,所有用戶同時(shí)并發(fā)操作
2.用戶點(diǎn)擊“登記的教程”
3.用戶點(diǎn)擊“啟動(dòng)”,進(jìn)行課程學(xué)習(xí),進(jìn)入DS模塊
4.在DS模塊中進(jìn)行學(xué)習(xí),過(guò)程包括:首先,點(diǎn)擊一次課程結(jié)構(gòu)樹(shù);然后,進(jìn)行課程
內(nèi)容的學(xué)習(xí)。
5.點(diǎn)擊“返回LMS”按鈕,返回到1mm模塊,點(diǎn)擊“退出”按鈕,退出系統(tǒng)
場(chǎng)景描述七:
1.戶登錄的1mm模塊,總共登陸24個(gè)用戶。所有用戶都同時(shí)并發(fā)操作
2.所有用戶都同時(shí)并發(fā)操作,戶點(diǎn)擊“登記的教程”中“test”課件
使用自發(fā)測(cè)試工具,目的測(cè)試24個(gè)用戶同時(shí)打開(kāi)課件時(shí)服務(wù)器性能
場(chǎng)景描述八:
1.登錄的1mm模塊,總共登陸60個(gè)用戶。所有用戶都同時(shí)并發(fā)操作
2.有用戶都同時(shí)并發(fā)操作,戶點(diǎn)擊“登記的教程”中“test”課件
使用自發(fā)測(cè)試工具,目的測(cè)試60個(gè)用戶同時(shí)打開(kāi)課件時(shí)服務(wù)器性能
4.使用LoadRunner進(jìn)行負(fù)載/壓力測(cè)試
4.1錄制基本的用戶腳本
創(chuàng)建用戶腳本需要用到VuGen。提示:運(yùn)行VuGen最好在1024*768的分辨率下,否
則有些工具欄會(huì)看不到。
啟動(dòng)VisualUserGenerator后,通過(guò)菜單新建一個(gè)用戶腳本,選擇系統(tǒng)通訊的協(xié)議。
這里我們需要測(cè)試的是Web應(yīng)用,同時(shí)考慮到后臺(tái)SQL數(shù)據(jù)庫(kù)所以我們需要選擇
Web(HTTP/HTML)協(xié)議+SQLSERVER協(xié)議,確定后,進(jìn)入主窗體。通過(guò)菜單來(lái)啟動(dòng)錄制
腳本的命令。
?在URL中添入要測(cè)試的Web站點(diǎn)地址
?測(cè)試/lms-lmm/loginForm.do選擇要把錄制的腳本放到哪一個(gè)部分,
默認(rèn)情況下是“Action”。
這里簡(jiǎn)單說(shuō)明一下:VuGen中的腳本分為三部分:vuser_init>vuser_end和Action。其
中vuser_init和vuser_end都只能存在?個(gè),不能再分割,而Action還可以分成無(wú)數(shù)多
個(gè)部分(通過(guò)點(diǎn)擊New按鈕,新建ActionXXX)。在錄制需要登陸的系統(tǒng)時(shí),我們把登
陸部分放到vusejinit中,把登陸后的操作部分放到Action中,把注銷關(guān)閉登陸部分放
到vuser_end中。(如果需要在登陸操作設(shè)集合點(diǎn),那么登陸操作也要放到Action中,因
為vusejinit中不能添加集合點(diǎn))在其他情況下,我們只要把操作部分放到Action中即
可。注意:在重復(fù)執(zhí)行測(cè)試腳本時(shí),vuser_init和vuser_end中的內(nèi)容只會(huì)執(zhí)行一次,重
復(fù)執(zhí)行的只是Action中的部分。
?點(diǎn)“選項(xiàng)”按鈕,進(jìn)入錄制的設(shè)置窗體,這里??般情況下不需要改動(dòng)。
?然后點(diǎn)“0K”后,VuGen開(kāi)始錄制腳本。在錄制過(guò)程中,不要使用瀏覽器的“后退”
功能,LoadRunner支持不太好!錄制過(guò)程中,在屏幕上會(huì)有?個(gè)工具條出現(xiàn)。錄制的過(guò)
程和WinRunner有些類似,不再多介紹。錄制完成后,按下“結(jié)束錄制”按鈕,VuGen
自動(dòng)生成用戶腳本,退出錄制過(guò)程。
4.2完善測(cè)試腳本
當(dāng)錄制完一個(gè)基本的用戶腳本后,在正式使用前我們還需要完善測(cè)試腳本,增強(qiáng)腳本的
靈活性。一般情況下,我們通過(guò)以下幾種方法來(lái)完善測(cè)試腳本。插入事務(wù)、插入結(jié)合點(diǎn)、
插入注解、參數(shù)化輸入。這里只舉例介紹參數(shù)化如何設(shè)置,其它只作簡(jiǎn)單介紹。
4.2.1插入事務(wù)
事務(wù)(Transaction):為了衡量服務(wù)器的性能,我們需要定義事務(wù)。比如:我們?cè)谀_本
中有一個(gè)數(shù)據(jù)查詢操作,為了衡量服務(wù)器執(zhí)行查詢操作的性能,我們把這個(gè)操作定義為一
個(gè)事務(wù),這樣在運(yùn)行測(cè)試腳本時(shí),LoadRunner運(yùn)行到該事務(wù)的開(kāi)始點(diǎn)時(shí),LoadRunner就
會(huì)開(kāi)始計(jì)時(shí),直到運(yùn)行到該事務(wù)的結(jié)束點(diǎn),計(jì)時(shí)結(jié)束。這個(gè)事務(wù)的運(yùn)行時(shí)間在結(jié)果中會(huì)有
反映。
插入事務(wù)操作可以在錄制過(guò)程中進(jìn)行,也可以在錄制結(jié)束后進(jìn)行。LoadRunner運(yùn)行在
腳本中插入不限數(shù)量的事務(wù)。
具體的操作方法如下:在需要定義事務(wù)的操作前面,通過(guò)菜單或者工具欄插入。輸入該
事務(wù)的名稱。注意:事務(wù)的名稱最好要有意義,能夠清楚的說(shuō)明該事務(wù)完成的動(dòng)作。插入
事務(wù)的開(kāi)始點(diǎn)后,下面需要在需要定義事務(wù)的操作后面插入事務(wù)的“結(jié)束點(diǎn)”。同樣可以
通過(guò)菜單或者工具欄插入。默認(rèn)情況下,事務(wù)的名稱列出最近的一個(gè)事務(wù)名稱。一般情況
下,事務(wù)名稱不用修改。事務(wù)的狀態(tài)默認(rèn)情況下是LR_AUTO。一般情況下,我們也不需
要修改,除非在手工編寫(xiě)代碼時(shí),有可能需要手動(dòng)設(shè)置事務(wù)的狀態(tài)。
4.2.2插入集合點(diǎn)
插入集合點(diǎn)是為了衡量在加重負(fù)載的情況下服務(wù)器的性能情況。在測(cè)試計(jì)劃中,可能會(huì)
要求系統(tǒng)能夠承受1000人同時(shí)提交數(shù)據(jù),在LoadRunner中可以通過(guò)在提交數(shù)據(jù)操作前面
加入集合點(diǎn),這樣當(dāng)虛擬用戶運(yùn)行到提交數(shù)據(jù)的集合點(diǎn)時(shí),LoadRunner就會(huì)檢查同時(shí)有多
少用戶運(yùn)行到集合點(diǎn),如果不到1000人,LoadRunner就會(huì)命令已經(jīng)到集合點(diǎn)的用戶在此
等待,當(dāng)在集合點(diǎn)等待的用戶達(dá)到1000人時(shí),LoadRunner命令1000人同時(shí)去提交數(shù)據(jù),
從而達(dá)到測(cè)試計(jì)劃中的需求。
注意:集合點(diǎn)經(jīng)常和事務(wù)結(jié)合起來(lái)使用。集合點(diǎn)只能插入到Action部分,vuser_init和
vuser_end中不能插入集合點(diǎn)。具體的操作方法如下:在需要插入集合點(diǎn)的前面,通過(guò)菜
單或者工具欄操作輸入該集合點(diǎn)的名稱。注意:集合點(diǎn)的名稱最好要有意義,能夠清楚的
說(shuō)明該集合點(diǎn)完
成的動(dòng)作。
4.2.3插入注釋
注釋的作用就不多說(shuō)了,不過(guò)插入注釋最好是在錄制過(guò)程中。具體的操作方法如下:在
需要插入注釋的前面,通過(guò)菜單或者工具欄操作
4.2.4參數(shù)化輸入
如果用戶在錄制腳本過(guò)程中,填寫(xiě)提交了一些數(shù)據(jù),比如要增加數(shù)據(jù)庫(kù)記錄。這些操作
都被記錄到了腳本中。當(dāng)多個(gè)虛擬用戶運(yùn)行腳本時(shí),都會(huì)提交相同的記錄,這樣不符合實(shí)
際的運(yùn)行情況,而且有可能引起沖突。為了更加真實(shí)的模擬實(shí)際環(huán)境,需要各種各樣的輸
入。參數(shù)化輸入是一種不錯(cuò)的方法。
用參數(shù)表示用戶的腳本有兩個(gè)優(yōu)點(diǎn):
①可以使腳本的長(zhǎng)度變短。
②可以使用不同的數(shù)值來(lái)測(cè)試你的腳本。例如,如果你企圖搜索不同名稱的圖書(shū),你
僅僅需要寫(xiě)提交函數(shù)一次。在回放的過(guò)程中,你可以使用不同的參數(shù)值,而不只搜索一
個(gè)特定名稱的值。
參數(shù)化包含以下兩項(xiàng)任務(wù):
①在腳本中用參數(shù)取代常量值。
②設(shè)置參數(shù)的屬性以及數(shù)據(jù)源。
參數(shù)化僅可以用于一個(gè)函數(shù)中的參量。你不能用參數(shù)表示非函數(shù)參數(shù)的字符串。
另外,不是所有的函數(shù)都可以參數(shù)化的。
參數(shù)化輸入的講解,我們采用一個(gè)例子的方式來(lái)進(jìn)行O
在本例中我們參數(shù)化用戶的登陸名:
先看如下腳本,通過(guò)腳本錄制找到用戶登陸部分,如圖
密度擬用戶生成春-[nonaMe2-Veb(HTTP/HTIL)]鼻叵區(qū)I
3文件(E)郅氟目視取Y)ffiA(l)vuser(y)⑷IA(I)?Q(W)
3,5-U-開(kāi)始錄制》中內(nèi)61曰31■>n美我9手?jǐn)?shù)順土運(yùn)行時(shí)設(shè)置
noname?-Web(HTTP/HTWL|
?VMSW.lXlit?.tlNUIItM.
"UrI=ima4es/bckPrinHeader,jpg".EhDITBI.
?AC“MI
?ws?r_?nd"Url=imaMes/btnPrimAction_RightBorder.gif",EhDITEM,
^vdfh1Jrl=imaies/btnPrimAction_BottoaBorder.?ifENDITEM.
^(lobklshLAST);
web_sixnit_data("jsecurity_check?,
.Actionp:/71ms.ah.sp.cora.cn/1msTmm/j_security_check",
lileihod=POST",
不ecContecitIype-text/html",
Teferer=http://lfns.ah.SP./lms-Ifwn/loginForwi.do",
"Snapshot=t2.inf",
14ode=HTML".
ITEMDATA,
^Name:\_usemaroe*."Value:SEJ-CCME,
1匕陳二ipassword"."Value:pas1
EXTRARtC”…、
JJri-:mages/i陀PrimNavleft_0N*剪歌工)Shft+Deiate./lms-lmm/firstPermitted.do'",E
UrI=?mases/bdJ?rimHavBorderR4X*K£)Ctrt+C//lm.cn/lms-lmm/firstPermitte
"ilrl:images/bckPrimMavBorderL*,,/lms-lmm/firstPemitted.
"UrI=?ntages/bckPrimHav.ON.gif'OM/lms-'mm/firstPenoitted.do";,EbClt
"Uri=i<na<es/bckPriaNavOFF.giCtrl+G.?cCom.oVIms-Iwn/firstPermitted.do,ENDI
"TJri^images/bci'Pririiav^orderR/\ms.ah./1ns-1wn/firstPermitted
"Uri=images/bckPri扁a屈rderL/Im.cn/Ims-liren/firstPermitted
TJrhimages/imgPrifflHavRifiht.O/lms-lmm/firstPenritted.do*,
■入⑴
LAST):
分切點(diǎn)B)F9
國(guó)執(zhí)行日專~圖錄翻日否~a知色由"""尊關(guān)聯(lián)結(jié)果?國(guó)生成日4
■rror:Failedtoor--'nc:Vd:-ojrer>t-andmgsV卜產(chǎn)381r4ZVdata¥ncnane2.ibf
掃"聚(在幡處)MAK+F8
******StartLogMessage*?*??
ifebRecorderversion:005
RecordingMode:HTML-basedscript
xjrrelationisenabledsystemwide
電trecordingheaders
Stexcludingcontenttwes
并始、::條命名-耒命名—?4tmdovsBE虛卻用戶生成
框選住登陸名,點(diǎn)鼠標(biāo)右鍵,彈出對(duì)話框,選擇“替換為新參數(shù)”彈出對(duì)話框
選擇或創(chuàng)建參數(shù)
參數(shù)名?:zJ
參數(shù)類型復(fù)):|File二J
初始值W):|xuhy
確定取消屬性也)...
參數(shù)名隨意取,建議取通俗易懂的名字,下面我們重點(diǎn)介紹一下參數(shù)的類型。
?DateTime:很簡(jiǎn)單,在需要輸入II期/時(shí)間的地方,可以用DateTime類型來(lái)替代。
其屬性設(shè)置也很簡(jiǎn)單,選擇一種格式即可。當(dāng)然也可以定制格式。
.?GroupName:暫時(shí)不知道何處能用到,但設(shè)置比較簡(jiǎn)單。在實(shí)際運(yùn)行中,LoadRunner
使用該虛擬用戶所在的VuserGroup來(lái)代替。但是在VuGen中運(yùn)行時(shí),GroupName
將會(huì)是None
.?LoadGeneratorName:在實(shí)際運(yùn)行中,LoadRunner使用該虛擬用戶所在LoadGenerator
的機(jī)器名來(lái)代替。
.?iterationNumber:在實(shí)際運(yùn)行中,LoadRunner使用該測(cè)試腳本當(dāng)前循環(huán)的次數(shù)來(lái)
代替?
.?RandomNumber:隨機(jī)數(shù)。很簡(jiǎn)單。在屬性設(shè)置中可以設(shè)置產(chǎn)生隨機(jī)數(shù)的范圍
,UniqueNumber:唯一的數(shù)。在屬性設(shè)置中可以設(shè)置第一個(gè)數(shù)以及遞增的數(shù)的大小。
注意:使用該參數(shù)類型必須注意可以接受的最大數(shù)。例如:某個(gè)文本框能接受的
最大數(shù)為99。當(dāng)使用該參數(shù)類型時(shí),設(shè)置第一個(gè)數(shù)為1,遞增的數(shù)為1,但100個(gè)
虛擬用戶同時(shí)運(yùn)行時(shí),第100個(gè)虛擬用戶輸入的將是100,這樣腳本運(yùn)行將會(huì)出錯(cuò)。
注意:這里說(shuō)的遞增意思是各個(gè)用戶取第一個(gè)值的遞增數(shù),每個(gè)用戶相鄰的兩次循
環(huán)之間的差值為1。舉例說(shuō)明:假如起始數(shù)為1,遞增為5,那么第一個(gè)用戶第一
次循環(huán)取值1,第二次循環(huán)取值2;第二個(gè)用戶第一次循環(huán)取值為6,第二次為7;
依次類推。
?VuserID:設(shè)置比較簡(jiǎn)單。在實(shí)際運(yùn)行中,LoadRunner使用該虛擬用戶的ID來(lái)代
替,該ID是由Controller來(lái)控制的。但是在VuGen中運(yùn)行時(shí),VuserID將會(huì)是-1。
File:需要在屬性設(shè)置中編輯文件,添加內(nèi)容,也可以從現(xiàn)成的數(shù)據(jù)庫(kù)中取數(shù)據(jù)(下
面我們將會(huì)介紹)
?UserDefinedFunction:從用戶開(kāi)發(fā)的dll文件提取數(shù)據(jù)。就目前我認(rèn)為,這種方式
沒(méi)有必要。VuGen支持C語(yǔ)言的語(yǔ)法,在VuGen中重新編寫(xiě)類似的函數(shù)應(yīng)該不難。
上面的例子中,我們?nèi)‰S機(jī)數(shù)即可。點(diǎn)"Properties…按鈕,進(jìn)行屬性設(shè)置窗口
添入隨機(jī)數(shù)的取值范圍為(1-50),選擇一種數(shù)據(jù)格式。在“屬性”中有以下幾
個(gè)選項(xiàng):
?EachOccurrence:在運(yùn)行時(shí),每遇到一次該參數(shù),便會(huì)取一個(gè)新的值
?Eachiteration:運(yùn)行時(shí),在每一?次循環(huán)中都取相同的值
?Once:運(yùn)行時(shí),在每次循環(huán)中,該參數(shù)只取一次值
這里我們用的是隨機(jī)數(shù),選擇EachOccurrence非常合適。
下面我們?cè)俳榻B用數(shù)據(jù)庫(kù)中的用戶名來(lái)參數(shù)化登陸用戶名。
框選住登陸名,點(diǎn)鼠標(biāo)右鍵,彈出對(duì)話框,選擇“替換為新參數(shù)”彈出對(duì)話框,此時(shí)參數(shù)名
輸入:name,參數(shù)類型選擇File,如圖
點(diǎn)“屬性”按鈕,出現(xiàn)以下窗口
注意:參數(shù)的文件名不要使用con.dat、pm.dat或者lpt*.dat等系統(tǒng)裝置名下面我們將會(huì)連
接數(shù)據(jù)庫(kù),從數(shù)據(jù)表中選擇用戶名。點(diǎn)“數(shù)據(jù)向?qū)А卑粹o,顯示如圖
使用第2項(xiàng),選擇“使用手動(dòng)指定SQL語(yǔ)句"點(diǎn)下一步,出現(xiàn)如圖窗口
添入連接字符串,點(diǎn)“創(chuàng)建”按鈕,選擇事先配置好的ODBC連接。在SQL語(yǔ)句里輸入
select查詢語(yǔ)句,出現(xiàn)如圖窗口
提醒:在參數(shù)數(shù)據(jù)顯示區(qū),最多只能看到100行,如果數(shù)據(jù)超過(guò)100行,只能點(diǎn)“編
輯”按鈕,進(jìn)入記事本看。
“選擇下一行”有以下幾種選擇:
?Sequential:按照順序一行行的讀取。每一個(gè)虛擬用戶都會(huì)按照相同的順序讀取
?Random:在每次循環(huán)里隨機(jī)的讀取一個(gè),但是在循環(huán)中一直保持不變
?Unique:唯一的數(shù)。注意:使用該類型必須注意數(shù)據(jù)表有足夠多的數(shù)。比如Controller
中設(shè)定20個(gè)虛擬用戶進(jìn)行5次循環(huán),那么編號(hào)為1的虛擬用戶取前5個(gè)數(shù),編號(hào)為2的
虛擬用戶取6-10的數(shù),依次類推,這樣數(shù)據(jù)表中至少要有100個(gè)數(shù)據(jù),否則Controller
運(yùn)行過(guò)程中會(huì)返回一個(gè)錯(cuò)誤。
“按編號(hào)”指選擇列表中的那一列數(shù)據(jù),從左到右分別是1、2、3依次
通常用在有關(guān)聯(lián)性的數(shù)據(jù)上面。我們這里取值Sequential即可。完成設(shè)置關(guān)閉即可
4.3單機(jī)運(yùn)行測(cè)試腳本
經(jīng)過(guò)以上的各個(gè)步驟后,腳本就可以運(yùn)行了。運(yùn)行腳本可以通過(guò)菜單或者工具欄來(lái)操作。
執(zhí)行“運(yùn)行”命令后,VuGen先編譯腳本,檢查是否有語(yǔ)法等錯(cuò)誤。如果有錯(cuò)誤,VuGen
將會(huì)提示錯(cuò)誤。雙擊錯(cuò)誤提示,VuGen能夠定位到出現(xiàn)錯(cuò)誤的那一行。為了驗(yàn)證腳本的正
確性,我們還可以調(diào)試腳本,比如在腳本中加斷點(diǎn)等,操作和在VC中完全一樣,相
信大家誰(shuí)都不會(huì)感到陌生。如果編譯通過(guò),就會(huì)開(kāi)始運(yùn)行。然后會(huì)出現(xiàn)運(yùn)行結(jié)果。
5實(shí)施測(cè)試
5.1選擇腳本,創(chuàng)建虛擬用戶
啟用“controller”彈出如圖窗口
新建方案
選擇方案類型
④手動(dòng)方案
通過(guò)指定要運(yùn)行的虛擬用戶數(shù)來(lái)管理負(fù)載測(cè)試
r使用百分比模式在腳本間分配Vuser
C面向目標(biāo)的方案
允許LoadRunnerController基于指定的目標(biāo)創(chuàng)建方案
選擇要在方案中使用的腳本
可用腳本方案中的腳本
取消幫助國(guó))
P啟動(dòng)時(shí)顯示確定I
選擇剛才錄制并保存好的腳本,添加到方案中,點(diǎn)''確定”出現(xiàn)如數(shù)量
知名鯽本能徑F裁生成器
A施
3_10C\ProgramFleiXMercurylntefac<iveM.od(fiunnef\$cnp<$\10|10
力生成
悔Vs
糕則
O運(yùn)行
區(qū)詳雄
311
JxfT
根據(jù)需要修改虛擬用戶數(shù)量,這里我們?nèi) ?00”根據(jù)實(shí)現(xiàn)場(chǎng)景設(shè)計(jì),取不同數(shù)字
點(diǎn)“編輯計(jì)劃”細(xì)化方案,計(jì)劃名里選擇計(jì)劃種類:加壓,緩慢加壓、默認(rèn)計(jì)劃或新建立
計(jì)劃。
令默認(rèn)計(jì)劃:同時(shí)加載所有vuser,直到完成
令加壓:每15秒啟動(dòng)2個(gè)vuser持續(xù)時(shí)間5分種
令緩慢加壓::每2分種啟動(dòng)2個(gè)vuser持續(xù)時(shí)間10分種
這里我們選擇“加壓”出現(xiàn)如圖
點(diǎn)“加壓”標(biāo)簽設(shè)置加壓方法,點(diǎn)“持續(xù)時(shí)間”標(biāo)簽選擇完成時(shí)間,點(diǎn)“加壓”標(biāo)簽選擇
退出方法,點(diǎn)”方案開(kāi)始時(shí)間”可以定義時(shí)間后自動(dòng)到點(diǎn)執(zhí)行,并在一個(gè)限定的時(shí)間范圍內(nèi)
結(jié)束,所有設(shè)置完畢后,點(diǎn)“ok”返回上一級(jí)窗口,點(diǎn)“開(kāi)始方案”啟動(dòng)運(yùn)行,出現(xiàn)如圖窗
口
|磬LoadKtmncrConfroller-Sccnaiioll運(yùn)行]L/x
文怦9視圖9方寞?/機(jī)號(hào)?)結(jié)票如工且0?幅財(cái)QP
國(guó)百。Q金加,**蹙21■...
可用里i&ffvuw■整個(gè)方案,務(wù)物應(yīng)時(shí)間.整個(gè)方案
用戶定義的U窗直
諸請(qǐng)我計(jì)信息
百倍誑的k“r
-事務(wù)的
?務(wù)啊理時(shí)間
字#數(shù)態(tài)健過(guò))打開(kāi)可用圖中目錄樹(shù),選擇
?為8敢/秒蜘,
事各總數(shù)/法記過(guò))
-vabffifflffi系統(tǒng)資源找到windows資源
每秒點(diǎn)擊次J1
有吐量
每杪HTTP啊應(yīng)JS
每秒下皺員激
每秒堇成次87
每秒連接數(shù)
?眇SSL
-系統(tǒng)出海西
Vindovt透通
g史博已《卻目畫(huà)分會(huì))
I比例I狀態(tài)i最大值I最4'@!平均值標(biāo)隹值|知
圖片咽取圖在10.138195空Lo?dRuazxerCwtir朱e名-初莖
5.2添加windows資源監(jiān)視窗口
loadruner默認(rèn)性能監(jiān)視窗口四個(gè),分別是“運(yùn)行vuser“、”事務(wù)響應(yīng)時(shí)間“、
“每秒點(diǎn)擊次數(shù)”最后一個(gè)可以根據(jù)用戶自己選擇現(xiàn)實(shí)什么窗口。打開(kāi)可用圖中目錄樹(shù),
選擇系統(tǒng)資源,找到windows資源雙擊,則windows資源監(jiān)視窗口便自動(dòng)替換原窗口如上
圖。當(dāng)然loadrunner也可以同時(shí)顯示1―16個(gè)窗口,方法是點(diǎn)右鍵,在彈出菜單中選擇“查
看圖”選擇顯示的圖數(shù),也可以自定義數(shù)字。
5.3添加windows性能計(jì)數(shù)器
鼠標(biāo)選擇windows資源監(jiān)視窗口,點(diǎn)擊右鍵彈出菜單中選擇"ADDMeasurements..“彈出
如圖窗口
點(diǎn)“添加”把監(jiān)視的服務(wù)器ip地址輸入,點(diǎn)確定,如圖
如果可以正常聯(lián)機(jī)到服務(wù)器,則在資源度量中會(huì)顯示全部計(jì)數(shù)器,此時(shí)如果點(diǎn)“確定”則
系統(tǒng)默認(rèn)全部選中,在監(jiān)視窗口中會(huì)顯示所有性能曲線,無(wú)法單獨(dú)過(guò)濾顯示某條曲線,如果
選中某個(gè)計(jì)數(shù)器后點(diǎn)“添加”則彈出該項(xiàng)目下的其它性能指標(biāo),選擇需要的計(jì)數(shù)器后點(diǎn)“添
加”如圖
此時(shí)要注意,你登陸客戶端(也就是你裝有l(wèi)oadrunner機(jī)器)的用戶應(yīng)該是管理員身份,
同時(shí)還要保證該用戶在被監(jiān)視的服務(wù)器上也是管理員身份。這樣選擇雖然監(jiān)視窗口中仍會(huì)顯
示所有性能曲線,但是可以通過(guò)鼠標(biāo)右鍵彈出菜單,選中你指定的某條曲線單獨(dú)顯示。方法
是雙擊監(jiān)視窗口放大顯示,然后右鍵選擇“僅顯示指定圖”監(jiān)視窗口還可以互相疊加等操作,
功能強(qiáng)大,通過(guò)右鍵菜單選擇可以進(jìn)行復(fù)雜顯示操作。常用的還有web程序服務(wù)器圖、數(shù)
據(jù)庫(kù)服務(wù)器資源圖等,添加方法雷同。計(jì)數(shù)器有那些,有什么含義,理想值是多少,可以參
見(jiàn)第六章節(jié)。
5.4執(zhí)行腳本
此時(shí)設(shè)置完畢后,那就簡(jiǎn)單了,點(diǎn)擊“開(kāi)始方案”注意觀察吧。
HTfflfflX]山行vs"?整個(gè)方案事務(wù)晌應(yīng)時(shí)間sr方及
二'1行時(shí)國(guó)不
運(yùn)行Vuitr£
用戶定義的數(shù)露點(diǎn)
幡調(diào)代計(jì)值?運(yùn)
ft」t
百情譯的V?.r。a
?S
-事務(wù)由W
事務(wù)啊應(yīng)時(shí)間i
?鳥(niǎo)玄/杪61過(guò))
事務(wù)勺數(shù)/若佚電,停止)
已用時(shí)間已用時(shí)間(時(shí)分的)
事務(wù),數(shù)/秒680)
-*eb責(zé)凝EQ籌於金市次數(shù).整個(gè)方案
年勤點(diǎn)擊次費(fèi)
吞吐量
?即JffTP陽(yáng)應(yīng)蒙0
務(wù)抄下我員家
?批重試次數(shù)幅
連接相
?拈連接船Mr
毋秒SSL
-半皎皆稔的
findovs318v已用卻次時(shí)分心)
5.4.1分析結(jié)果
腳本執(zhí)行完畢后,loadrunner會(huì)自動(dòng)分析結(jié)果,生成分析結(jié)果圖或表,方法是點(diǎn)導(dǎo)航欄“結(jié)
果”選現(xiàn),在彈出窗口中選擇“分析結(jié)果”
正在創(chuàng)建數(shù)據(jù)庫(kù)
正在處理數(shù)據(jù)庫(kù)中的結(jié)果
88%
取消
xiiLoadRunncrAnalysisSession!.IraL/x
文件(nWQ)?S(V)ffittOL)XMff)用韻Q)
06。昌口£巾▽R
-購(gòu)$”31摘要界告運(yùn)行v??.r點(diǎn)擊次衲吞吐fit:事第1?夏|平均事務(wù)響攻盯周I
■i.qw田〉
百nrJiX'X分析摘要解期15-10-200410:54:50-15-10-200410:57:17
S運(yùn)行Vus”
3傳心點(diǎn)擊次數(shù)
3時(shí)魯方案名;Scen?riol
3事務(wù)摘要合H的紿果文件:C:\DocumentsandSettm9sXheadfreeXLocalSettingsXTempVesVes.Irr
3平均事務(wù)蝸應(yīng)時(shí)正2姍,2電.
輯H6I。■要
O
O星大運(yùn)行Vu.erQ:1
Q18吞吐■(字零):1,527420
010,320
0勺點(diǎn)出上沿310
3均每0點(diǎn)擊次豪:2.0953看HTTP啊創(chuàng)模
0通過(guò)總0:30央被總JR:o停止總數(shù):0平均36即0
vus”endTransaction00
vuserinrtTransaction0.01904)20.0220.0010.021000
??EB耳細(xì)信息,用戶注蜂|的數(shù)籌原翔冽S|
£在10.138,195勇Lotd&o&atrCoatr%L?*<lKa=zierJAalysis未0名-亞固c=B?A?tfc1020
6分析以及監(jiān)視場(chǎng)景
在運(yùn)行過(guò)程中,可以監(jiān)視各個(gè)服務(wù)器的運(yùn)行情況(DataBaseServer、WebServer等)。
監(jiān)視場(chǎng)景通過(guò)添加性能計(jì)數(shù)器來(lái)實(shí)現(xiàn)。這一章非常的重要,確定系統(tǒng)瓶頸全靠它了。
下面重點(diǎn)講講需要添加那些計(jì)數(shù)器,以及那些計(jì)數(shù)器代表什么意思。由于Win2000
Professional、Server以及AdvancedServer提供的計(jì)數(shù)器不完全相同,這里我們討論將以
Server為基準(zhǔn)。監(jiān)視場(chǎng)景需要在Run視圖中設(shè)置然后,出現(xiàn)添加計(jì)數(shù)器的對(duì)話框其他的操
作就和控制面板“性能”中添加性能計(jì)數(shù)器的操作一樣,這里不再詳細(xì)說(shuō)明。本章主要
說(shuō)明一下各個(gè)系統(tǒng)計(jì)數(shù)器的含義(數(shù)據(jù)庫(kù)的計(jì)數(shù)器不做重點(diǎn),只是拿SQLServer2000作
為例子進(jìn)行說(shuō)明。因?yàn)閿?shù)據(jù)庫(kù)各個(gè)版本之間差異比較大,請(qǐng)參考您使用的數(shù)據(jù)庫(kù)系統(tǒng)的幫
助)。
6.1Memory相關(guān)
內(nèi)存是第一個(gè)監(jiān)視對(duì)象,確定系統(tǒng)瓶頸的第??個(gè)步驟就是排除內(nèi)存問(wèn)題。內(nèi)存短缺的問(wèn)題
可能會(huì)引起各種各樣的問(wèn)題。
Object(對(duì)象)CountersDescription(描述)參考值
MemoryAvailableMBytes物理內(nèi)存的可用數(shù)(單位至少要有10%
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 考古遺址橋梁保護(hù)協(xié)議
- 債權(quán)轉(zhuǎn)為股權(quán)投資協(xié)議
- 2025版電子商務(wù)供應(yīng)鏈金融合作協(xié)議3篇
- 高鐵建設(shè)機(jī)械費(fèi)施工合同
- 聯(lián)營(yíng)合作項(xiàng)目管理誤區(qū)
- 運(yùn)輸企業(yè)社會(huì)責(zé)任與可持續(xù)發(fā)展
- 臨時(shí)娛樂(lè)市場(chǎng)建設(shè)合同
- 雕塑藝術(shù)任課教師聘用合同
- 寵物行業(yè)經(jīng)紀(jì)人招聘協(xié)議
- 招投標(biāo)項(xiàng)目環(huán)境保護(hù)要求
- 穿越河流工程定向鉆專項(xiàng)施工方案
- 地球物理學(xué)進(jìn)展投稿須知
- 機(jī)床精度檢驗(yàn)標(biāo)準(zhǔn) VDI3441 a ISO230-2
- 社會(huì)主義新農(nóng)村建設(shè)建筑廢料利用探究
- 解析電力施工項(xiàng)目的信息化管理
- 火炬介紹 音速火炬等
- 制劑申請(qǐng)書(shū)(共16頁(yè))
- 《質(zhì)量守恒定律》評(píng)課稿
- 人教版七年級(jí)上冊(cè)地理《第4章居民與聚落 第3節(jié)人類的聚居地——聚落》課件
- 對(duì)縣委常委班子及成員批評(píng)意見(jiàn)范文
- 數(shù)據(jù)中心IDC項(xiàng)目建議書(shū)
評(píng)論
0/150
提交評(píng)論