




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)酒杯(酒具)市場(chǎng)運(yùn)營(yíng)現(xiàn)狀及投資前景規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)西樂(lè)器制造市場(chǎng)發(fā)展?fàn)顩r及前景趨勢(shì)分析報(bào)告
- 岳西事業(yè)編招聘年考試真題及答案解析事業(yè)單位真題
- 長(zhǎng)江大學(xué)文理學(xué)院《區(qū)域分析方法計(jì)量地理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025甘肅省建筑安全員《A證》考試題庫(kù)及答案
- 常州工程職業(yè)技術(shù)學(xué)院《化工環(huán)保與安全概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊城市經(jīng)濟(jì)職業(yè)學(xué)院《第二語(yǔ)言教學(xué)法》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南安全技術(shù)職業(yè)學(xué)院《商業(yè)倫理與會(huì)計(jì)職業(yè)操守》2023-2024學(xué)年第二學(xué)期期末試卷
- 汕頭大學(xué)《財(cái)政與金融》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江師范大學(xué)行知學(xué)院《公共部門(mén)績(jī)效評(píng)估》2023-2024學(xué)年第二學(xué)期期末試卷
- 電腦維修合同三篇
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- 城市生物多樣性調(diào)查技術(shù)導(dǎo)則
- 高三數(shù)學(xué)試卷含答案
- 工資調(diào)級(jí)制度模版(3篇)
- 2023年新疆省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 2024年國(guó)網(wǎng)公司企業(yè)文化與職業(yè)道德試考試題庫(kù)(含答案)
- 牙周牙髓聯(lián)合病變治療
- 機(jī)場(chǎng)食品配送應(yīng)急處理方案
- 醫(yī)院培訓(xùn)課件:《黃帝內(nèi)針臨床運(yùn)用》
- 語(yǔ)文新課標(biāo)“整本書(shū)閱讀”深度解讀及案例
評(píng)論
0/150
提交評(píng)論