Jmeter中文手冊(cè)完全版_第1頁(yè)
Jmeter中文手冊(cè)完全版_第2頁(yè)
Jmeter中文手冊(cè)完全版_第3頁(yè)
Jmeter中文手冊(cè)完全版_第4頁(yè)
Jmeter中文手冊(cè)完全版_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

安裝JDK:

JAVA的環(huán)境變量設(shè)置

運(yùn)用鼠標(biāo)右擊“我的電腦”。屬性。高級(jí)。環(huán)境變量

系統(tǒng)變量。新建->變量名:JAVA_HOME變量值:d:\jdk

系統(tǒng)變量->編輯->變量名:Path在變量值的最前面加

±:%JAVA_HOME%\bin;

系統(tǒng)變量。新建->變量名:CLASSPATH變量值:.;

安裝Tomcat

CATALINA_HOME=d:\tomcat

UserManual

用戶(hù)手冊(cè)

1介紹

ApacheJMeter是100%純JAVA桌面應(yīng)用程序,被設(shè)計(jì)為用于測(cè)試CS

結(jié)構(gòu)的軟件.

同時(shí)也可以用來(lái)測(cè)試靜態(tài)和動(dòng)態(tài)資源的性能,例如:靜態(tài)文件,Java

Servlets,CGIScripts,JavaObject,數(shù)據(jù)庫(kù)和FTP服務(wù)器等等.

JMeter可用于模擬大量負(fù)載來(lái)測(cè)試一臺(tái)服務(wù)器,網(wǎng)絡(luò)或者對(duì)象的健壯性或

者分析不同負(fù)載下的整體性能.

同時(shí),JMeter可以幫助你對(duì)你的應(yīng)用程序進(jìn)行網(wǎng)來(lái)測(cè)試.通過(guò)你創(chuàng)建的測(cè)

試腳本和assertions來(lái)驗(yàn)證你的程序返回了所期盼的值.為了更高的適

應(yīng)性,JMeter允許你運(yùn)用常規(guī)表達(dá)式來(lái)創(chuàng)建這些assertions.

2起先

2.1安裝

下載安裝最新的版本,將會(huì)包含全部你須要建立和運(yùn)行Web,FTP,JDBC

和JNDI測(cè)試的文件.

假如你想進(jìn)行JDBC測(cè)試,你須要運(yùn)用合適的JDBCdriver.JMeter中

不包含JDBCdrivers.

其他可能須要下載的軟件:

?BeanShell

?JavaActivationFramework-neededforJavaMail

?JavaMail-neededformailvisualiserandSOAPtest

?JMS-forJMSsamples

?GeneralJavaKit

接下來(lái)一步,就是閱讀”建立測(cè)試安排”一章來(lái)熟識(shí)JMeter的基本操作,

例如:添加和刪除元索.最終,閱讀適當(dāng)?shù)恼鹿?jié)來(lái)學(xué)習(xí)如何建立不同種類(lèi)的

測(cè)試安排.例如,假如你對(duì)Web應(yīng)用程序的測(cè)試比較感愛(ài)好,就閱讀”建

立一個(gè)Web測(cè)試安排”章節(jié).其他種類(lèi)的測(cè)試安排建立的章節(jié)包

括:JDBC,.

一旦你熟識(shí)了建立和運(yùn)行JMeter測(cè)試安排,就可以起先熟識(shí)各種配置參

數(shù),例如:timers,listeners,assertions和其他的參數(shù),來(lái)幫助你更好地

限制你地測(cè)試安排.

2.2系統(tǒng)要求

JMeter1.8以上的版本須要JDK1.4以上的版本支持運(yùn)行.

JMeter可以運(yùn)行在如下操作系統(tǒng)上:Unix,Windows和OpenVMS.

2.3可選項(xiàng)目

假如你準(zhǔn)備進(jìn)行JMeter開(kāi)發(fā)或者運(yùn)用Sun的Java標(biāo)準(zhǔn)擴(kuò)展包,你須要

如下所列的可選包:

2.3.1JavaCompiler

須要L4以上的JDK版本

2.3.2SAXXMLParser

JMeter默認(rèn)運(yùn)用Apache的XercesXMLparser.假如你想運(yùn)用一個(gè)不

同的XMLparser,將第三方的parser包放入JMeter的classpath中,

然后運(yùn)用設(shè)置的parser包的全名更新文件perties

2.3.3EmailSupport

JMeter擁有有限的郵件功能來(lái)發(fā)送測(cè)試結(jié)果到指定郵箱中.應(yīng)用郵箱功

能,須要將Sun的JavaMail包放入JMeter的classpath中并激活.

2.3.4SSLEncryption

為運(yùn)用S測(cè)試web服務(wù)器,JMeter須要設(shè)立SSL機(jī)制.將所須要的

SSL類(lèi)包放入JMeter的classpath中,更新perties來(lái)注冊(cè)

SSLProvider.

可以運(yùn)用SSLManager用來(lái)管理這些證書(shū).

留意:在JDK1.4以上版本,SSL已經(jīng)作為標(biāo)準(zhǔn)庫(kù)加入.

2.2.5JDBCDriver

你須要將你的數(shù)據(jù)庫(kù)供應(yīng)商供應(yīng)的JDBCdrivers添加到classpath中來(lái)

進(jìn)行JDBC測(cè)試.

2.2.6ApacheSOAP

ApacheSOAP測(cè)試須要mail,jar和activation.jar.只須要將下載的兩

個(gè)jar文件復(fù)制到JMeter下的lib書(shū)目中,JMeter會(huì)自動(dòng)的識(shí)別和運(yùn)用

它們.

2.3運(yùn)行

運(yùn)行JMeter,運(yùn)用jmeter.bat(windows)或jmeter(UNIX).

2.3.1JMeter的classpath

JMeter自動(dòng)在/lib和/lib/ext書(shū)目中的jar中的類(lèi).假如你想添加其他

JAR文件到JMeter的classpath中,你必需復(fù)制他們到lib書(shū)目中.假如

你開(kāi)發(fā)了一個(gè)JMeter特定組件,生成jar包后復(fù)制到lib書(shū)目下的ext書(shū)

目中.

而且,你也可以將有效的jar文件安裝到$JAVA_HOME/jre/lib/ext書(shū)目

中?

值得留意的是設(shè)置CLASSPATH環(huán)境變量沒(méi)有任何作用.這是因?yàn)?/p>

JMeter運(yùn)用"java-jar”起先,java吩咐自動(dòng)忽視CLASSPATH值,同

時(shí)-jar選項(xiàng)的運(yùn)用將屏蔽掉-classpath和-cp選項(xiàng).

2.3.2運(yùn)用代理服務(wù)器

假如你在防火墻或者代理服務(wù)器后進(jìn)行測(cè)試,你須要給JMeter供應(yīng)防火

墻和代理服務(wù)器的hostname和port號(hào).在吩咐行運(yùn)行jmeter.bat或

jmeter吩附并運(yùn)用如下參數(shù):

-H代理服務(wù)器的hostname或者IP地址

-P代理服務(wù)器的port號(hào)

-u代理服務(wù)器驗(yàn)證運(yùn)用的用戶(hù)名

-a代理服務(wù)器驗(yàn)證運(yùn)用的用戶(hù)密碼

示例:

jmeter-Hyahoo-P8080-utest-apassword

2.3.3非GUI模式

對(duì)于那些非交互的測(cè)試,你可以運(yùn)用非GUI的模式運(yùn)行JMeter.運(yùn)用如

下吩咐:

-n指定的JMeter運(yùn)行在non-GUI模式下

-t包含測(cè)試安排的JMX文件的名稱(chēng)

-1用于記錄簡(jiǎn)潔結(jié)果的JTL文件名稱(chēng).

-r運(yùn)行全部的在perties中指定的遠(yuǎn)程主機(jī).(或在吩咐行中供

應(yīng)的覆蓋屬性供應(yīng)的遠(yuǎn)程主機(jī)名.

也可以同時(shí)供應(yīng)防火墻或者代理服務(wù)器的信息

-H服務(wù)器名或IP地址

-P端口號(hào)

示例:

jmeter-n-tmy.jmx-1log.jtl-Hyahoo-P8800

2.3.4服務(wù)器模式

為了對(duì)分布式測(cè)試,可以運(yùn)行在服務(wù)器模式下,然后通過(guò)GUI來(lái)限制每個(gè)

服務(wù)器.

運(yùn)行jmeter-server/jmeter-server.bat,附加下列可選項(xiàng):

-H代理服務(wù)器的hostname或IP地址

-P端口號(hào)

示例:jmeter-server-Hyahoo-P8000

2.3.5通過(guò)吩咐行來(lái)重載Properties

Javasystemproperties,JMeterproperties和loggingproperties能

夠干脆通過(guò)吩咐行來(lái)干脆重載而不用修改perties文件.運(yùn)用

以下參數(shù)項(xiàng):

-D[propname]=[value]定義一個(gè)javasystemproperty值

-J[propname]=[value|重載一個(gè)JMeterproperty

-L[category]=[priority)重載一個(gè)loggingsetting,設(shè)置一個(gè)指定的類(lèi)別

名給指定的優(yōu)先級(jí)別

-L標(biāo)記位可以不指定category,將其設(shè)為root級(jí)別

示例:

jmeter-Duser.dir=/home/mstover/jmeter_stuff\

-Jremote_hosts=

-Ljmeter.engine=DEBUG

jmeter-LDEBUG

留意:吩咐行輸入的properties在啟動(dòng)時(shí)先處理,但是晚于logging

system的建立.所以嘗試運(yùn)用-J標(biāo)記去更新logjevel或者lo〔將沒(méi)有

任何效果.

2.3.6Logging和error信息

假如JMeter檢查到一個(gè)錯(cuò)誤,一個(gè)信息就被寫(xiě)道log文件中.Log文件的

名字是在jmeter.properties文件中定義的.默認(rèn)值位jmeter.log,在

JMeter的起先書(shū)目中可以看到,例如bin書(shū)目中.

除了記錄錯(cuò)誤信息,jmeter.log文件中同時(shí)記錄了一些測(cè)試運(yùn)行的信息.

例如:

10/17/200312:19:20PMINFO-jmeter.JMeter:Version

1.9.20231002

10/17/200312:19:45PMINFO-jmeter.gui.action.Load:

Loadingfile:c:\mytestfiles\BSH.jmx

10/17/200312:19:52PMINFO

jmeter.engine.StandardJMeterEngine:Runningthetest!

10/17/200312:19:52PMINFO-

jmeter.engine.StandardJMeterEngine:Starting1threadsfor

groupBSH.Rampup=1.

10/17/200312:19:52PMINFO-

jmeter.engine.StandardJMeterEngine:Continueonerror

10/17/200312:19:52PMINFO-jmeter.threads.JMeterThread:

ThreadBSH1-1started

10/17/200312:19:52PMINFO-jmeter.threads.JMeterThread:

ThreadBSH1-1isdone

10/17/200312:19:52PMINFO-

jmeter.engine.StandardJMeterEngine:Testhasended

Log文件有助于定位錯(cuò)誤出現(xiàn)的緣由,因?yàn)樗⑽创驍鄿y(cè)試來(lái)顯示一個(gè)

error窗口.

2.4配置JMeter

假如你想修改JMeter運(yùn)行運(yùn)用的properties,你可以通過(guò)兩種方式:修改

bin書(shū)目中的文件perties或者創(chuàng)建你自己的properties文件

運(yùn)用吩咐行來(lái)指定該文件.

Parameters

AttributeDescriptionRequired

你可以指定一個(gè)類(lèi)支持SSL.假如你運(yùn)用sun

的JSSE,那么是:

viderNo

com.sun.net.ssl.internal.ssl.Provider.

JMeter默認(rèn)的s支持在JDK1.4中包含.

你可以指定一個(gè)你自己的XMLparser.默認(rèn)

xml.parser值為:No

org.apache.xerces.parsers.SAXParser

user.dirJMeter用于保存和裝載測(cè)試用例的書(shū)目.No

運(yùn)用逗號(hào)分割的遠(yuǎn)程JMeter主機(jī).假如你運(yùn)行

remote_hosts在分布式環(huán)境卜,列出你擁有的運(yùn)行的JMeterNo

遠(yuǎn)程主機(jī).允許你通過(guò)GUI去限制這些機(jī)器.

一個(gè)組件的列表,都是你不想在JMeter的菜單

中看到的.由于JMeter添加了越來(lái)越多的組建,

你可能希望自己定制你的JMeter來(lái)僅僅顯示

not_in_menuNo

那些你感愛(ài)好的組建.你可以列出他們類(lèi)名或者

類(lèi)的標(biāo)簽(在JMeter界面中顯示的字符串)在這

里,他們將不會(huì)被顯示.

3建立測(cè)試安排

一個(gè)測(cè)試安排描述了一系列JMeter在運(yùn)行中要執(zhí)行的步驟.一個(gè)完整的

測(cè)試安排包含一個(gè)或多個(gè)ThreadGroups,logiccontrollers,sample

generatingcontrollers,listeners,timers,assertions和

configurationelemenrs.

3.1添加刪除Elements

添加elements到測(cè)試安排河以通過(guò)在tree中element上點(diǎn)擊右鍵,然后

從add列表中選擇一個(gè)新的element.同樣,elements也可以通過(guò)open

選項(xiàng)從一個(gè)文件中載入.

刪除一個(gè)element,確定該element被選定,右擊選擇刪除選項(xiàng).

3.2載入和存儲(chǔ)elements

載入文件中的elements,在已有的tree中點(diǎn)擊右鍵,然后選擇open選項(xiàng).

選擇elements存儲(chǔ)的文件,JMeter將載入文件中的全部elements到

tree中.

存儲(chǔ)tree的elements,選擇一個(gè)element然后右擊,選擇save選

項(xiàng).JMeter會(huì)存儲(chǔ)選定的element,以和全部的子elements.這樣你就可

以存儲(chǔ)測(cè)試樹(shù)的一段,單獨(dú)的element或者整個(gè)測(cè)試安排.

3.3配置tree的elements

任何一個(gè)一個(gè)測(cè)試樹(shù)中的element都可以在JMeter的右邊框架顯示.這

樣允許你來(lái)配置該測(cè)試element的屬性.能夠配置什么屬性取決于你選定

的element的類(lèi)型.

3.4運(yùn)行測(cè)試安排

在run菜單中選擇起先來(lái)運(yùn)行測(cè)試安排.停止測(cè)試安排,從菜單中選擇停

止.JMeter不會(huì)自動(dòng)的在運(yùn)行測(cè)試安排時(shí)有任何表現(xiàn).一些listeners使

得JMeter運(yùn)行表現(xiàn)出來(lái).但是唯一的方法是檢查run菜單中的start選項(xiàng),

假如是disable的而且stop是enabled,那么JMeter就在運(yùn)行你的測(cè)試

安排,至少表面上看來(lái)如此.

3.5ScopingRules

JMeter測(cè)試樹(shù)中包含的elements是分級(jí)和有次序的.一些elements在

測(cè)試中有嚴(yán)格的等級(jí)要求(Listeners,ConfigElements,

Post-Processors,Pre-Processors,Assertions,Timers),而其他一些

有primarilyordered的要求(controllers,samplers).當(dāng)你創(chuàng)建測(cè)試安

排時(shí),你須要建立一個(gè)有次序的sample懇求(通過(guò)sampler),這些反映

了一組須要執(zhí)行的測(cè)試步驟.這些懇求常常在有序的controllers中組織.

例圖1

9&TestPlan

中BThreadGroup

「One

9■SimpleController

Two

Three

/Four

懇求的次序?qū)椋簅ne,two,three,four.

有些controllers會(huì)影響他們sub-elements,你可以在component

reference中查看這些.

一些其他的elements是有級(jí)別的.例如,Assertion在測(cè)試樹(shù)中是有級(jí)別

的.假如他的父親節(jié)點(diǎn)是一個(gè)request,那么它將僅僅影響該request.假

如父節(jié)點(diǎn)是一個(gè)controller,那么它將影響該controller的全部后代的懇

求.例如:

93TestPlan

9前ThreadGroup

卓/one

PlAssertion#1

9■SimpleController

「Two

/Three

PlAssertion#2

「Four

Assertion#1僅僅應(yīng)用到RequestOne上.而Assertion#2應(yīng)用到

RequestTwo和Three上.

另外一個(gè)關(guān)于Timers的示例:

9口TestPlan

9眩ThreadGroup

/one

9里SimpleController

/Two

?Timer#1

<?/Three

R|Assertion#1

§■SimpleController

「Four

,Five

Timer#2

在這個(gè)例子中,request的名字反映了他們?cè)跍y(cè)試中應(yīng)當(dāng)執(zhí)行的次序.

Timer#1將應(yīng)用到RequestTwo,Three和Four上(留意對(duì)于分等級(jí)的

elements如何排序毫不相關(guān)).Aserrtion#1將僅僅應(yīng)用到Request

Three±.Timer#2將影響全部的懇求.

假如你想想任何一個(gè)request通過(guò)樹(shù)的路徑被傳遞,釗它的父節(jié)點(diǎn),在到

它的父節(jié)點(diǎn)的父節(jié)點(diǎn),以此類(lèi)推,在每一級(jí)的父節(jié)點(diǎn)上集合全部的

configurationelemen:s,那么你就知道它是如何工作的了.

留意:

對(duì)于Configurationelements中的HeaderManager,Cookie

Manager和Authorizationmanager來(lái)i兌,與其他的Configuration

Defaultelements不同.ConfigurationDefaultelements被整合成―

個(gè)Sampler訪(fǎng)問(wèn)的集合.而Manager的設(shè)置不會(huì)被整合.假如超過(guò)一個(gè)的

Manger在Sampler的范圍中,只有一個(gè)Manager被運(yùn)用,但是目前還無(wú)

法推斷那個(gè)被運(yùn)用.

4測(cè)試安排的elements

測(cè)試安排對(duì)象現(xiàn)在擁有了一個(gè)新的checkbox選項(xiàng),叫做"功能測(cè)試”.

假如選擇,JMeter將記錄全部server為每個(gè)sample返回的值.假如你已

經(jīng)在測(cè)試listeners中選定了一個(gè)文件,那么這些數(shù)據(jù)將被寫(xiě)入到文件中.

這個(gè)有助于你通過(guò)一個(gè)小型的測(cè)試來(lái)檢驗(yàn)JMeter是否配置正確,而你的

服務(wù)器返回正確的結(jié)果.值得留意的是這個(gè)文件的大小將增長(zhǎng)的很快使得

JMeter的性能降低.這個(gè)選項(xiàng)在做壓力測(cè)試時(shí)須要關(guān)閉掉(默認(rèn)為關(guān)閉).

假如你不將數(shù)據(jù)寫(xiě)入文件中,那么這個(gè)選項(xiàng)沒(méi)有任何不同.

4.1ThreadGroup

ThreadGroupelements是任何一個(gè)測(cè)試安排的起先點(diǎn).全部的測(cè)試安

排中的elements都要在一個(gè)ThreadGroup中.如名字顯示那樣,

threadgroupelement限制了一組線(xiàn)程,JMeter運(yùn)用這些線(xiàn)程來(lái)執(zhí)行你

的測(cè)試.你可以做如下操作來(lái)限制threadgroup:

?設(shè)置線(xiàn)程的數(shù)量

?設(shè)置ramp-up周期

?設(shè)置測(cè)試執(zhí)行的次數(shù)

每一個(gè)線(xiàn)程都會(huì)完全和獨(dú)立的執(zhí)行測(cè)試安排而不影響其他線(xiàn)程.多線(xiàn)程可

以用于模擬到你的服務(wù)器程序的并發(fā)連接.

Ramp-upperiod告知JMeter須要多長(zhǎng)時(shí)間來(lái)"ramp-up”去裝載全

部的線(xiàn)程.假如10個(gè)線(xiàn)程被運(yùn)用,而ramp-upperiod為1。。秒,那么

JMeter會(huì)花100秒來(lái)使得全部的10個(gè)線(xiàn)程運(yùn)行.每個(gè)線(xiàn)程將在上個(gè)線(xiàn)

程起先后10秒起先.又如,假如有30個(gè)線(xiàn)程而ramp-up為120秒.那

么每個(gè)線(xiàn)程在延遲4秒后啟動(dòng).延遲時(shí)間=ramp-upperiod時(shí)間數(shù)/線(xiàn)程

數(shù)

默認(rèn)的,一個(gè)threadgroup被設(shè)置為不限定的循環(huán).你可以設(shè)置thread

group循環(huán)的次數(shù).假如設(shè)置為一次,那么JMeter將執(zhí)行測(cè)試一次然后停

止.

Version1.9將允許你預(yù)定時(shí)間去運(yùn)行測(cè)試.選定Scheduler的

checkbox,你就可以設(shè)定時(shí)間.

4.2Controllers

JMeter有兩種controller:Samplers和LogicalControllers

Samplers告知JMeter發(fā)送懇求到服務(wù)器.例如,假如你想JMeter發(fā)送

一個(gè)懇求,就添加一個(gè)RequestSampler.當(dāng)然你也可以定制

一個(gè)懇求,在Sampler中添力口一個(gè)或多個(gè)ConfigurationElements.

LogicalControllers使你可以定制JMeter發(fā)送懇求的邏輯.例如,你可

以添加一個(gè)InterleaveLogicController來(lái)限制交替運(yùn)用兩個(gè)

RequestSamplers.同樣,一個(gè)特定的Logiccontroller,作為

ModificationManager,可以讓你修改懇求的結(jié)果.

4.2.1Samplers

Sampler告知JMeter發(fā)送懇求到server端.JMeter現(xiàn)在有如卜的

samplers:

?Request

?JDBCRequest

?JavaObjectRequest

?LDAPRequest

?SOAP/XML-RPCRequest

?WebService(SOAP)Request(AlphaCode)

每個(gè)sampler都有一些可以設(shè)置的properties.你也可以在一個(gè)

sampler中添加ConfigurationElements來(lái)做更多的設(shè)置.當(dāng)然,值得

留意的是JMeter根據(jù)request在tree中添加的次序來(lái)發(fā)送懇求.

假如你想同時(shí)發(fā)送多個(gè)并發(fā)的同一種類(lèi)的request,例如request,

到同樣一臺(tái)服務(wù)器.可以考慮運(yùn)用一個(gè)DefaultsConfiguration

Element.每個(gè)Controller擁有一個(gè)或多個(gè)默認(rèn)元素.

當(dāng)然不要遺忘添加一個(gè)Listener到你的ThreadGroup中來(lái)察看和存儲(chǔ)

你的測(cè)試結(jié)果.

假如你對(duì)JMeter對(duì)你的request返回的response進(jìn)行簡(jiǎn)潔的校驗(yàn)很感

愛(ài)好,你可以在RequestController中添加一個(gè)Assertion.例如,在一

個(gè)web程序的壓力測(cè)試中,服務(wù)器可能會(huì)返回多個(gè)勝利的”

Response,,,但是頁(yè)面或許包含了一些錯(cuò)誤或者丟失的部分.你可以添

加assertions來(lái)檢查特定的HTML標(biāo)簽,常見(jiàn)的錯(cuò)誤字符串,等等諸如此

類(lèi)的數(shù)據(jù).JMeter允許你運(yùn)用常規(guī)表達(dá)式來(lái)創(chuàng)建這些assertions.

4.2.2LogicControllers

LogicController使得用戶(hù)可以定制JMeter發(fā)送懇求的時(shí)機(jī).

LogicControllers可以擁有如下的任何一個(gè)作為子elements:

Samplers(requests),ConfigurationElement和其他的Logic

Controllers.LogicControllers可以變更子elements的懇求次序.他們

可以自己修改requests,使得JMeter可以重復(fù)發(fā)送懇求等等.

為了便于理解LogicControllers在測(cè)試安排中所起的作用,舉例如下:

?TestPlan

■ThreadGroup

?OnceOnlyController

?LogicRequest(anrequest)

?LoadSearchPage(sampler)

?InterleaveController

?Search"A"(Sampler)

?Search"B”(Sampler)

?defaultrequest(ConfigurationElement)

?defaultrequest(ConfigurationElement)

?CookieManager(ConfigurationElement)

首先表明白login懇求只會(huì)在第一次運(yùn)行時(shí)執(zhí)行.其余的懇求將自動(dòng)跳過(guò)

它.達(dá)到這個(gè)效果的緣由就是因?yàn)镺nceOnlyController的影響左右.

在login之后,下一個(gè)Sampler加載了searchpage(想象一下,一個(gè)在

用戶(hù)登錄后就轉(zhuǎn)入search頁(yè)面來(lái)做搜尋的web程序).這個(gè)僅僅是一個(gè)簡(jiǎn)

潔的懇求,并未通過(guò)任何LogicController的篩選過(guò)程.

在search頁(yè)面加載后,我們想做一些搜尋.事實(shí)上,我們要做兩個(gè)不同

的搜尋.然而,我們想在每個(gè)獨(dú)立的搜尋中重新加載search頁(yè)面.我們

可以用四個(gè)簡(jiǎn)潔的requestelements來(lái)達(dá)到目的(載入search頁(yè)面,

搜尋“A",載入search頁(yè)面,搜尋"B").而事實(shí)上,我們運(yùn)用了另一個(gè)

方法,我們運(yùn)用InterleaveController,它將每次運(yùn)行一個(gè)完整的測(cè)試只

運(yùn)用一個(gè)子element的request.而且能夠保持這些子elements的次序

來(lái)運(yùn)行.

留意:

RequestDefaults是屬于InterleaveController的.想象一

下”searchA"和“SearchB”共享同一個(gè)“PATH”信息(一個(gè)指定的

懇求包括domain,port,method,protocol,path和arguments等,還

有其他額外的信息).這導(dǎo)致:兩者都是search的懇求,點(diǎn)擊同一個(gè)后臺(tái)

搜尋引擎.與其給兩者配置相同PATH信息,不如將信息抽象出來(lái)給一個(gè)

ConfigurationElement.

當(dāng)InterleaveController傳遞”SearchA”和“SearchB”的懇求時(shí),

將自動(dòng)運(yùn)用DefaultRequestConfigurationElement的值來(lái)取代

空白的PATH域.所以,我們將這些懇求的PATH域空置,然后將這些信

息放入到ConfigurationElement中.

樹(shù)中接下來(lái)的element是另外一個(gè)DefaultRequest,這次是給

ThreadGroup自己運(yùn)用的.ThreadGroup擁有一個(gè)內(nèi)置的Logic

Controller,因此,它象上面的介紹的那樣一樣,來(lái)運(yùn)用這個(gè)

ConfigurationElement.它將填入到任何一個(gè)通過(guò)的Request的空白

中.當(dāng)你做web測(cè)試時(shí),這是特別有用的.你可以將全部的

Samplerelements的DOMAIN域空白,然后運(yùn)用ThreadGroup中添

加的DefaultRequest的信息補(bǔ)充這些空白域.這樣,你可以?xún)H僅

變更一個(gè)域就能將整個(gè)測(cè)試安排應(yīng)用到另外的server上.否則你須要一

個(gè)一個(gè)更改Sampler.

最終一個(gè)element是CookieManager.全部的web測(cè)試中都應(yīng)當(dāng)

添加該element,否貝i]JMeter將忽視全部的cookie.在ThreadGroup

級(jí)添加這個(gè)元素,可以保證全部request將共享同樣的一個(gè)cookie.

LogicController可以被組合起來(lái)從而獲得多種不同的結(jié)果.

4.3Listeners

Listeners供應(yīng)了獲得在JMeter運(yùn)行過(guò)程中搜集到的信息的訪(fǎng)問(wèn)方式.

最簡(jiǎn)潔的Listener,GraphResultsListener圖示出了響應(yīng)時(shí)間.

Listeners供應(yīng)了一種圖型化的方式來(lái)查看JMeter運(yùn)行過(guò)程中產(chǎn)生的數(shù)

據(jù).

另外,Listeners能夠干脆將搜集的到數(shù)據(jù)存入到文件中以備后用.任何

一個(gè)listener都擁有一個(gè)設(shè)置該文件存儲(chǔ)地址的域.

Listener能夠加到測(cè)試中的任何位置.他們將僅僅收集同級(jí)別和全部低級(jí)

別的elements產(chǎn)生的數(shù)據(jù).

4.4Timers

默認(rèn)的,JMeter線(xiàn)程發(fā)送requests時(shí)之間沒(méi)有任何停頓.我們建議你指

定一個(gè)延遲時(shí)間.這可以通過(guò)添加一個(gè)有效的Timer到你的Thread

Group中實(shí)現(xiàn).假如你沒(méi)有添加一個(gè)延遲時(shí)間,JMeter可能會(huì)在極短時(shí)

間內(nèi)發(fā)送大量的懇求而引起server崩潰.

Timer可以使得JMeter在線(xiàn)程發(fā)送每個(gè)懇求時(shí)有一個(gè)延遲.假如你添加

了多個(gè)timer到一個(gè)ThreadGroup中時(shí),JMeter將運(yùn)用累計(jì)的延遲時(shí)

間.

4.5Assertions

Assertions允許你對(duì)在測(cè)試中從server端返回的回復(fù)中驗(yàn)證某些數(shù)據(jù).

運(yùn)用assertion,你可以實(shí)際地測(cè)試你的程序返回的值是否是期望值.

例如,你可以檢驗(yàn)回復(fù)字符串中包含一些特殊的文本.你指定的文本可以

是一個(gè)Perl-style的常規(guī)表達(dá)式,然后指定回復(fù)中是否包含該文本,或者

整個(gè)回復(fù)都應(yīng)當(dāng)相符合.

你可以給任何一個(gè)Sampler添加一個(gè)assertion.例如,你可以添加一個(gè)

assertion到一個(gè)Request來(lái)檢查文本"yahoo”.JMeter就會(huì)在

返回的回復(fù)中察看該文本.假如JMeter不能發(fā)覺(jué)該文本,那么將標(biāo)記該懇

求是個(gè)失敗的懇求.

為了查看assertion的結(jié)果,你須要添加一個(gè)AssertionListener到

ThreadGroup中.

4.6ConfigurationElements

ConfigurationElement與Sampler緊密聯(lián)系在一起工作.盡管它不能

發(fā)送懇求,但是它可以被添加到或者去修改懇求(除了ProxyServer)

之外.

ConfigurationElement只能被所在的treebranch訪(fǎng)問(wèn).例如,你在一

個(gè)SimpleLogicController中設(shè)置了一個(gè)CookieManager,那么

這個(gè)CookieManager將只能被設(shè)置在SimpleLogicController中的

RequestControllers訪(fǎng)問(wèn).如下圖中所示,CookieManager能夠被

request“WebPagel"和"WebPage2M訪(fǎng)問(wèn),但是不能被“Web

Page3”訪(fǎng)問(wèn).

并且,一個(gè)treebranch中的configurationelement將擁有更高的優(yōu)先

級(jí),與同一個(gè)parentbranch中的同樣的元索相比.例如,我們定義了

兩個(gè)RequestDefaultselements,uWebDefaultsln和"Web

Defaults2".因?yàn)槲覀儗ⅰ癢ebDefaults1”放入到一個(gè)Loop

Controller中,所以只有"WebPage2”能訪(fǎng)問(wèn)它.而其他的

requests只能運(yùn)用我們?cè)凇癟hreadGroup”(全部其他branch

的“parent”)中設(shè)置的“WebDefaults2”.

9TestPlan

9J*ThreadGroup

9T;SimpleController

掰HTTPCookieManager

WebPage1

9LoopController

WebPage2

絹^WebDefaults1

/..WtebPage3

蔑WebDefaults2

Workbench

4.7Pre-ProcessorElements

Pre-Processor在SamplerRequest被創(chuàng)建前執(zhí)行一些操作.假如一個(gè)

Pre-Processor被附加到一個(gè)Samplerelement上,那么它將先于

SamplerElement運(yùn)行.Pre-Processor最主要用于在Sampler運(yùn)行前

修改一些設(shè)置,或者更新一些無(wú)法從response文本中獲得的變量.

4.8Post-ProcessorElements

Post-Processor在SamplerRequest被創(chuàng)建后執(zhí)行一些操作.假如一個(gè)

Post-Processor被附加到一個(gè)Samplerelement上,那么將緊接著

samplerelement運(yùn)行后運(yùn)行.Post-Processor主要用于處理[II復(fù)數(shù)據(jù),

常常用來(lái)從其中獲得某些值.

5建立一個(gè)web測(cè)試安排

在本章中,你將學(xué)習(xí)到如何創(chuàng)建一個(gè)基本的測(cè)試安排用來(lái)測(cè)試一個(gè)web

站點(diǎn).你創(chuàng)立5個(gè)用戶(hù)向Jakarta網(wǎng)站的兩個(gè)頁(yè)面發(fā)送懇求.同時(shí),你將設(shè)

置這些用戶(hù)運(yùn)行他們的測(cè)試兩遍.所以,總共的request數(shù)

M-5(user)*2(request)*2(repeat2times)=20Requests.為建立

測(cè)試安排,你將運(yùn)用如下elements:ThreadGroup,Request,

RequestDefaults和GraphResults.

5.1AddingUsers添加用戶(hù)

每個(gè)JMeter測(cè)試安排的第一步都是要添加一個(gè)ThreadGroupelement.

ThreadGroup將告知JMeter你要設(shè)置的用戶(hù)的數(shù)目,發(fā)送懇求的頻率

和懇求的次數(shù).

選擇測(cè)試安排,點(diǎn)擊右鍵,選擇添加ThreadGroup.這時(shí)你就應(yīng)當(dāng)在

TestPlan下看至ijThreadGroupelement了.假如你沒(méi)有看到,那就點(diǎn)

擊TestPlan綻開(kāi)樹(shù).

然后,你須要修改那些默認(rèn)的properties.選擇樹(shù)中的ThreadGroup

element,在JMeter左側(cè)的窗口中應(yīng)當(dāng)顯示出ThreadGroup的

ControlPanel.

9&TestPlan

ThreadGroup

yThreadGroup

iiWorkBenchName:threadGroup

第一步,給我們的ThreadGroup添加一個(gè)更具體的名稱(chēng).在名字域中,

輸入JakartaUsers.

然后增加用戶(hù)的數(shù)目到5(調(diào)用的線(xiàn)程數(shù)).

在下一個(gè)域中,Ramp-UpPeriod,運(yùn)用默認(rèn)值。秒.這個(gè)prop6rties告

知JMeter兩個(gè)User起先發(fā)送懇求之間的延遲時(shí)間.例如,你輸入5秒,

JMeter將在5秒后啟動(dòng)全部的用戶(hù).所以,我們有五個(gè)用戶(hù)和5秒的

Ramp-upperiod,那么兩個(gè)用戶(hù)之間起先時(shí)間的延遲時(shí)1秒.(5

user/5=l).

假如值為0,那么JMeter將立即起先你全部的用戶(hù)操作.

最終,清除"Forever”的checkbox,輸入2在LoopCount域中.這個(gè)

property告知JMeter要重復(fù)運(yùn)行你的測(cè)試幾次.假如你輸入的循環(huán)值為

1,那么JMeter將只運(yùn)行一次你的測(cè)試.假如要JMeter不停運(yùn)行你的測(cè)

試,選擇Forever.

JTR7Plan

曹ThreadGroupThreadGroup

度WorkBenchName:ThreadGroup

ThreadDelayProperties

NumberofThreads:5

Ramp-UpPeriod(inseconds):0

LoopCount:2□Forever

□Scheduler

在大部分程序中,你不得不手工方式來(lái)更新你在限制面板中的更改.然而,

在JMeter中,限制面板將自動(dòng)的接受你的更改.例如,你變更了一個(gè)

element的名稱(chēng),樹(shù)將自動(dòng)更新為最新的文本在你離開(kāi)限制面板后(例如,

選擇了另一個(gè)element).

5.2添加DefaultRequestProperties

現(xiàn)在我們已經(jīng)定義了我們的用戶(hù),是時(shí)間來(lái)定義他們要執(zhí)行的任務(wù)了.在

這節(jié),你將指定你的懇求的默認(rèn)設(shè)置.然后,在5.3中,你將添加

Requestelements來(lái)運(yùn)用你制定的默認(rèn)值.

選擇你的JakartaUserelement.右擊選擇添加ConfigElement中的

RequestDefaults.然后選擇這個(gè)新的元素查看他的限制面板.

象大多數(shù)的JMeter元素一樣,RequestDefault的限制面板擁有一

個(gè)可修改的名稱(chēng)域.在本例中,運(yùn)用默認(rèn)值.

跳到下個(gè)域,WebServer'sName/IP.在本例中,全部的測(cè)試用例將發(fā)

送到同一個(gè)web服務(wù)器上去:J.將這個(gè)域名輸入至ij

該字段中.這是我們唯一指定的默認(rèn)值,全部留下其他的域?yàn)榭瞻字?

留意:RequestDefaultselements不會(huì)告知JMeter去發(fā)送懇

求.它只是簡(jiǎn)潔的定義了requestelements會(huì)運(yùn)用到的默認(rèn)值.

5.3添加Cookie支持

幾乎全部的web測(cè)試要求運(yùn)用cookie,除非你的程序特殊指明不運(yùn)用

cookie.添加cookie支持,最簡(jiǎn)潔的是添加CookieManager到每

一個(gè)ThreadGroup中.這會(huì)保證每個(gè)線(xiàn)程都獲得自己的cookie,但是交

叉共享全部的Request對(duì)象.

添加CookieManager,點(diǎn)擊ThreadGroup,然后選擇添加

CookieManager.

5.4添加Request

在我們的測(cè)試安排中,我們須要?jiǎng)?chuàng)建兩個(gè)Requests.第一個(gè)是訪(fǎng)問(wèn)

Jakarta的主頁(yè),().其次個(gè)是訪(fǎng)問(wèn).

右擊添加笫一個(gè)Request.然后修改該元素的properties

1.將名字改為HOMEPage

2.設(shè)置路徑為.留意的是你不須要設(shè)置server的名稱(chēng),因?yàn)槟阍?/p>

RequestDefaultselement中已經(jīng)設(shè)置了.

鹿ApacheOMeter

FHeEditRunOptionsHelp

9&TestPlan

9JekartaUsersHTTPRequest

#HTTPRgRstDefouRsName:HomePage

/HomePa9e

WcrtBench

OptionalTasks

EiRetrieveANImagesandJavaApplets(HTMLfilesonly)

緊接著添加其次個(gè)request.

5.5添加一個(gè)Listener來(lái)查看和存儲(chǔ)測(cè)試結(jié)果

最終一個(gè)要在測(cè)試安排中添加的元索是Listener.這個(gè)元素用來(lái)存儲(chǔ)全部

的測(cè)試結(jié)果到一個(gè)文件和供應(yīng)一個(gè)數(shù)據(jù)的視圖模式.

添加GraphResultslistener至ijThreadGroup中.然后指定一個(gè)路徑

和文件名用于存儲(chǔ)測(cè)試結(jié)果.你可以輸入,也可以通過(guò)browse按鍵來(lái)選

擇?

GraphResults

Name:GraphVisualizer

WrrteAllDatatoaFile

FilenameBrowse...□LogErrorsOnly

Deviation278Throughput137.96985/minuteMedian360

5.6保存測(cè)試安排

經(jīng)管這不是一個(gè)必需的步驟,但是我們建議你將測(cè)試安排在運(yùn)行前存入一

個(gè)文件.

5.7運(yùn)行測(cè)試安排

在Run菜單中,選擇運(yùn)行.

一旦JMeter完成了你的測(cè)試安排,選擇停止.

假如你選擇將listener中的測(cè)試結(jié)果存儲(chǔ)到一個(gè)文件中,那么你將擁有這

個(gè)可以被任何閱讀器查看的文件.不同的閱讀器顯示不同的風(fēng)格.

6建立一個(gè)高級(jí)的web測(cè)試安排

本節(jié)中,你將學(xué)習(xí)如何建立一個(gè)更高級(jí)的測(cè)試安排來(lái)測(cè)試web站點(diǎn)

6.1運(yùn)用URL重寫(xiě)技術(shù)處理用戶(hù)的session

假如你的web程序運(yùn)用URL重寫(xiě)而不是cookie來(lái)保存session的信息,

那么你須要做一些額外的工作來(lái)測(cè)試你的站點(diǎn).

為了正確的進(jìn)行URL回寫(xiě),JMeter須要過(guò)濾從server端獲的HTML來(lái)

獲得唯一的sessionID.運(yùn)用合適URLRe-WritingModifier來(lái)達(dá)到

此目的.將你的SessionID作為參數(shù)寫(xiě)入到modifier中,它將自動(dòng)添加

session到每一個(gè)request中.假如request中已經(jīng)有了該值,將干脆覆

蓋.

示例:

9:TestPlan

勺■'ThreadGroup

IndexPage

9■SimpleController

PlHTTPURLRe-writingModifier

/Login

/DoSomething

AnotherRequest

上圖中顯示了一個(gè)運(yùn)用了URLRe-writing的測(cè)試安排.留意modifier被

附加在ThreadGroup上,這樣就保證了全部線(xiàn)程組的懇求都會(huì)被應(yīng)用

到.

HTTPURL-RewritingModifier

Name:〔HTTPURL-RewritingModifier|

SessionArgumentName〔SESSION」。|

□PathExtension(useasseparator)

在上圖中,我們看到的是URLRe-Writingmodifier的GUL僅僅只有一

個(gè)域給用戶(hù)用于設(shè)置sessionID參數(shù)的名字.

6.2運(yùn)用HeaderManager

HeaderManager可以使你定制JMeter發(fā)送的懇求的報(bào)頭.象

cookieManager-?樣,應(yīng)當(dāng)添加到合適的級(jí)別上.除非出于某種緣由你

希望你測(cè)試不同的request發(fā)送不同的報(bào)頭.

7建立一個(gè)database測(cè)試安排

本節(jié)中,你將學(xué)習(xí)假如建立一個(gè)測(cè)試數(shù)據(jù)庫(kù)的基本測(cè)試安排.你將創(chuàng)建一

個(gè)有1。個(gè)用戶(hù)發(fā)送2個(gè)SQL懇求到數(shù)據(jù)庫(kù)server的測(cè)試.同時(shí),你將

告知用戶(hù)運(yùn)行他們的測(cè)試三遍.所以,總共的懇求次數(shù)是:1。users*2

requests*3times=60JDBCrequests.為了創(chuàng)建測(cè)試安排,你將運(yùn)

用元素:ThreadGroup,JDBCRequest和GraphResults.

7.1添加用戶(hù)

每個(gè)JMeter測(cè)試安排創(chuàng)建的第一步都是添加ThreadGroup元素.

ThreadGroup用于設(shè)置發(fā)送懇求的用戶(hù)數(shù),頻率和懇求總數(shù).

如下圖,設(shè)置10個(gè)線(xiàn)程代表10個(gè)用戶(hù),用戶(hù)的延遲時(shí)間為。,一共循環(huán)3

次.

7.2添加JDBC懇求

盡管有JDBCDATABASEConnectionPoolDefaults,JDBC

DatabaseLoginDefaults和JDBCSQLQueryDefaults組件可用,

但是本例中并未涉和.

我們要添加兩個(gè)JDBCRequest.下圖為懇求一.

留意:須要將須要的JDBC的drive放入Classpath中.

卜.圖為懇求二.

23ApacheJMeter-la|x|

FileEdrtRunOptionsHelp

9QTestRan

9JDBCUsersJDBCRequest

/KodakName:[fflzerj

/Pfizer

ilWorkBenchDatabaseURLandJDBCDriver

JDBCURL:Ijdbcpostgresqtmydb|

DriverOass:|org.postgre$ql.Driver-j

LoginCcEguralion

Username|mart)n

PasswordTWTT

DatabaseConnectionPool

NumberofConnectionsinPool:|l|

MaxggeForEachConnection:

SQLQueryString:select,fromStockswhereStockSymbol三p⑻|

7.3添加Listener元素來(lái)監(jiān)視和存儲(chǔ)測(cè)試結(jié)果

如卜圖所示,添加了一個(gè)GraphResultListener.

7.4保存測(cè)試安排

7.5運(yùn)行測(cè)試安排

8建立一個(gè)FTP測(cè)試安排

1添加用戶(hù)

通過(guò)添加一個(gè)ThreadGroup來(lái)添加用戶(hù)

53ApacheJMeter兇

FileEditRunOptionsHelp

?gTestPlsn

ThreadGroup

前O'ReillyUsers

[J||WorkBenchName:|o'ReillyUsers

ThreadDelayProperties

NunberofThreads:4|

Ramp-UpPeriod(inseconds):|o|

LoopCount:|Forever

2添加DefaultProperties

添加一個(gè)configelement中的Default用于全部的.

3添加

在我們示例中,耍添加兩個(gè)FTP懇求.

懇求一:

懇求二:

8.4添加一個(gè)Listener來(lái)查看和存儲(chǔ)測(cè)試結(jié)果

最終,我們添加了一個(gè)SplineVisualizerlistener用于視察和存儲(chǔ)測(cè)試

結(jié)果.

8.5保存測(cè)試安排

8.6運(yùn)行測(cè)試安排

9建立一個(gè)LDAP測(cè)試安排

9.1添加用戶(hù)

創(chuàng)建一個(gè)ThreadGroup用于添加用戶(hù)和設(shè)置懇求次數(shù)和頻率.

9.2添加一個(gè)登錄限制元素

可以添加一個(gè)ConfigElement的LoginConfigElement用于用戶(hù)登錄

限制.

9.3添加一個(gè)LDAPRequestDefaults

可以添加一個(gè)configelement中的LDAPRequestDefaults用于限制一

些共享默認(rèn)值.

ApacheJMeterB

9.4添加LDAPRequest

添加的LDAPRequest通過(guò)選擇不同的測(cè)試配置來(lái)完成四種操作:添加,

刪除,修改和查詢(xún).

例如,修改:

ApacheJMeterBX

FileEditRunOptionsHelp

9.5添加一個(gè)Listener來(lái)查看和保存測(cè)試結(jié)果

添加了一個(gè)ViewResultsinTable的listener

ApacheJMeter

FileEditRunOptionsHelp

r

9.6保存測(cè)試用例

9.7運(yùn)行測(cè)試用例

10創(chuàng)建一個(gè)WebService測(cè)試安排

對(duì)于WebServiceSampler,當(dāng)前是運(yùn)用ApacheSoapdriver.須要

activation.jar和mail.jar.

由于license的限制,JMeter中并未包含這些jar文件.

假如sampler顯示從webservice獲得一個(gè)error.須要同時(shí)檢查SOAP

的信息來(lái)確認(rèn)格式是正確的.特殊的要確認(rèn)xmlns的attributes要和

WSDL完全一樣.假如xml的namespace不同,那么webservice將很

可能返回一個(gè)錯(cuò)誤.Xmethods中包括了一個(gè)公共service的列表.

10.1添加用戶(hù)

10.2添力口webservice懇求

10.3添加listener用于查看和存儲(chǔ)測(cè)試結(jié)果.

10.4保存測(cè)試安排

10.5運(yùn)行測(cè)試安排

11創(chuàng)建JMSPoint-to-Point測(cè)試安排

須要如Fjar文件的支持

activation.jar

activeio-1.O-SNAPSHOT.jar

activemq-3.0.jar

activemq-core-3.0.jar

commons-logging-1.0.3.jar

concurrent-1.3.4.jar

geronimo-spec-j2ee-jacc-1.0-rc4.jar

geronimo-spec-j2ee-management-l.0-rc4,jar

geronimo-spec-jms-1.1-rc4.jar

geronimo-spec-jta-1.0.lB-rc4.jar

jms.jar

jndi.jar

log4j-1.2.8.jar

spring-1.1.jar

11.1添加用戶(hù)

11.2添加JMS懇求

11.3添加listener用于查看和存儲(chǔ)測(cè)試結(jié)果.

11.4保存測(cè)試安排

11.5運(yùn)行測(cè)試安排

NameValueDescription

JMSResources

QueueuConnectionFactConnectionFacThisisthedefaultJNDI

orytoryentryfortheconnection

factorywithinactivemq.

JNDINameRequestQ.REQQThisisequaltotheJNDI

QueuenamedefinedintheJNDI

properties.

JNDINameReplyQ.RPLThisisequaltotheJNDI

QueuenamedefinedintheJNDI

properties.

MessageProperties

CommunicationRequestResponseThismeansthatyouneed

Styleatleastaservicethat

respondstothere

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論