版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、性能測試基本概念1、性能測試: 模擬真實(shí)的生產(chǎn)環(huán)境,以各種不同的壓力(模擬大量用戶)去測試被測系統(tǒng)、去"攻擊 "測試系統(tǒng)。同時(shí)記錄下被測系統(tǒng)中 各臺 服務(wù)器的各種重要資源情況,包括 cpu 、存、磁盤和網(wǎng)絡(luò)等資 源。2、性能測試的目的? 識別系統(tǒng)中的弱點(diǎn)、評估系統(tǒng)能力、進(jìn)行系統(tǒng)調(diào)優(yōu),提高系統(tǒng)的可靠性、穩(wěn)定性。3、在具備什么條件下可以開展性能測試工作。 答:功能測試通過;一般需要進(jìn)行性能測試的系統(tǒng),大多是用戶量比較大、業(yè)務(wù)使用比較頻繁、對響 應(yīng)時(shí)間要求較高、比較重要的功能模塊。 ( 注意: 性能測試之前要做好系統(tǒng)備份)4、性能測試時(shí)首先看性能需求,如果沒有需求,這時(shí)要根據(jù)與客
2、戶交流、被測系統(tǒng)的相關(guān)資料、以及性 能測試工程師的經(jīng)驗(yàn),去編寫測試計(jì)劃,進(jìn)行性能測試。5、被測系統(tǒng)SUT ( System Under Test )AUT ( Application Under Test )EUT ( Environment Under Test )6、LoadRunner 工作原理:(錄制- 回放的工作方式)和 QTP 類似1 ) 錄制時(shí), LoadRunner 記錄下 客戶端和服務(wù)器 二者之間的對話。2) 回放時(shí), LoadRunner 模擬 真實(shí)的客戶端 向服務(wù)器發(fā)起請求,并按照腳本去驗(yàn)證服務(wù)器的應(yīng)答7、LoadRunner 的三大組件及功能: (三個(gè)火槍手) OALo
3、ad 工具類似(觸類旁通)1 ) 虛擬用戶腳本生成器( Virtual User Generator )VuGen VUG功能:錄制、編輯、調(diào)試測試腳本2) 壓力調(diào)度控制臺 ( Controller ) 功能:創(chuàng)建場景、運(yùn)行場景、監(jiān)控場景、收集測試數(shù)據(jù)(場景:就是一個(gè)大型的配置文件)3) 壓力結(jié)果分析器 ( Analysis )功能:把收集到的測試數(shù)據(jù)以圖表的形式展示出來,生成測試報(bào)告8、LoadRunner 基本測試流程:1) 指定性能測試計(jì)劃 (部分)Word2) 創(chuàng)建測試腳本3) 編輯、運(yùn)行測試腳本4) 創(chuàng)建場景5) 運(yùn)行、監(jiān)控場景,收集數(shù)據(jù)6) 生成測試報(bào)告,分析測試結(jié)果9、什么是事務(wù)
4、,為何要?jiǎng)?chuàng)建事務(wù)?答: 事務(wù)分為事務(wù)的開始、結(jié)束和之間的業(yè)務(wù)操作,事務(wù)用于度量服務(wù)器性能的。 (事務(wù)響應(yīng)時(shí)間) 我們可以對比較關(guān)心的某個(gè)或某些業(yè)務(wù)操作,設(shè)定為一個(gè)事務(wù),LR 會記錄不同事務(wù)的響應(yīng)時(shí)間。10、請求響應(yīng)時(shí)間 =客戶端時(shí)間 + 網(wǎng)絡(luò)時(shí)間 +服務(wù)器時(shí)間11 、 負(fù)載測試和壓力測試的區(qū)別: (國混用,國外有差別,筆試時(shí)需要注意)1) 共同點(diǎn)都是在測試過程中逐步加壓2 ) 負(fù)載測試:強(qiáng)調(diào)系統(tǒng)正常工作情況下的性能指標(biāo);Load Testing (見好就收)壓力測試:目的是發(fā)現(xiàn)在什么條件下系統(tǒng)的性能變得不可接受,發(fā)現(xiàn)應(yīng)用程序性能下降的拐點(diǎn);Stress Testing (使勁折騰)舉例:一座大
5、橋,橋上寫最大載重量的車輛,不超過 60 噸 但是在橋梁部建筑資料,最大載重量,不超過 70 噸12 、 吞吐量和點(diǎn)擊率的概念、區(qū)別?1) 吞吐量( Throughput ) :用戶從服務(wù)器端獲得全部數(shù)據(jù)量,單位是字節(jié)(Byte)。吞吐量 /傳輸時(shí)間,就是吞吐率,是服務(wù)器每秒處理的數(shù)據(jù)量。2 ) 點(diǎn)擊率( Hits per Second ):客戶端每秒向服務(wù)器提交 Http 請求數(shù)。(鼠標(biāo)的一次點(diǎn)擊,請求數(shù)可能 為 n 個(gè))說明:吞吐量是總量,是累計(jì)時(shí)間全部數(shù)據(jù)量。吞吐率反映服務(wù)器的處理速度和性能,也是衡量網(wǎng)絡(luò)性能的重要指標(biāo)。點(diǎn)擊率越大,對服務(wù)器的壓力也越大。13 、 并發(fā)測試和在線測試的區(qū)別
6、?1)并發(fā)和在線的區(qū)別:并發(fā)的壓力是一種瞬時(shí)壓力,在線的壓力是一段時(shí)間的壓力。2)20 用戶并發(fā)的壓力相當(dāng)于 200 用戶在線的壓力。 ( 1:10比例)在寫測試計(jì)劃時(shí)作為參考依據(jù)。 2000 用戶在線,設(shè)計(jì)為 200 用戶并發(fā)。(并發(fā)操作:查詢、登錄、 刪除、添加)14 、 QTP 和 LoadRunner 的區(qū)別:1) QTP: 功能測試工具 (自動化)LR: 性能測試工具 可以測多用戶2) QTP關(guān)心的是界面(UI),關(guān)心的是對象(對象庫的概念);LR 只關(guān)心客戶端和服務(wù)器之間的數(shù)據(jù)包(請求包、應(yīng)答包) ,不關(guān)心對象,更不需要比對對象的屬 性值,只關(guān)心抓包(捕捉數(shù)據(jù)包) 。如果用戶界面變
7、了,但是業(yè)務(wù)邏輯不變: QTP 腳本需要變化, LR 腳本不需改變。3)LR 關(guān)心的是客戶端和服務(wù)器之間的對話,前提是選擇正確的網(wǎng)絡(luò)協(xié)議(相當(dāng)于網(wǎng)絡(luò)的語言)。4)LR 不能補(bǔ)錄。錄制失敗,從頭再來。注意:錄制過程中出現(xiàn)失誤,該次錄制作廢,從 New 開始重新錄制; 錄制時(shí)要慢,等待頁面資源下載完畢后再進(jìn)行下一步操作。、 性能測試的策略重要的:基準(zhǔn)測試、并發(fā)測試、綜合場景測試 (前 3 個(gè)項(xiàng)目必備)極限測試、遞增測試次要的:疲勞強(qiáng)度測試(大型系統(tǒng)中) 、存泄露測試、數(shù)據(jù)容量測試。共同點(diǎn):向被測系統(tǒng)發(fā)起攻擊1、基準(zhǔn)測試: 就是單用戶測試(重點(diǎn))注意: 還是需要使用控制臺,運(yùn)行場景,自動搜集數(shù)據(jù),通
8、過 Analysis 進(jìn)行結(jié)果分析。2、遞增測試:每隔一定的時(shí)間(1s,5s,10s)逐步加載虛擬用戶,逐步加壓。用途: 登錄測試時(shí),可以遞增測試3、并發(fā)測試: 多用戶并發(fā)執(zhí)行某一操作(同一時(shí)刻, LR 精確到毫秒級別) 。注意: 并發(fā)測試是一種嚴(yán)格的測試,主要考察系統(tǒng)對瞬時(shí)較大壓力的承受能力。4、綜合場景測試:概念: 號稱“能夠最真實(shí)的模擬 實(shí)際生產(chǎn)環(huán)境”。綜合場景的幾個(gè)要素: 多用戶、多個(gè)腳本(至少 3 個(gè))、在線執(zhí)行一段時(shí)間( 1 個(gè)小時(shí)、 50 分鐘等)注意: 一般不需要設(shè)置并發(fā)點(diǎn)。多用戶一起運(yùn)行,一定會有并發(fā)。比如: 100 用戶在線綜合場景:100 用戶 共同對被測系統(tǒng)執(zhí)行操作,其
9、中 30 用戶執(zhí)行瀏覽首頁操作, 50 用戶執(zhí)行查詢訂單操作, 20 用戶執(zhí)行提交訂單操作。 (要真實(shí)模擬人數(shù)比例)問題:為什么不模擬大量的登錄操作?因?yàn)橛脩舨豢赡芤恢痹诘卿?,模擬真實(shí)情況。以上操作,用戶在循環(huán)執(zhí)行。5、響應(yīng)時(shí)間: 業(yè)一般有“ 358原則”,系統(tǒng)響應(yīng)時(shí)間在 3 秒以,則用戶能夠接受;響應(yīng)時(shí)間在 5 秒以,用 戶能夠忍受;響應(yīng)時(shí)間超過 8 秒,用戶不能忍受。比如:一般需求指標(biāo),不超過 3 秒6、疲勞強(qiáng)度測試: 在一定的強(qiáng)度(壓力)下,對系統(tǒng)進(jìn)行長時(shí)間的性能測試,一般為 7*24 小時(shí)、或 24 小時(shí)、 12 小時(shí)等。比如:銀行系統(tǒng), 7*24*365 全天候不間斷運(yùn)行 考察疲勞強(qiáng)
10、度測試時(shí),要考察其平均響應(yīng)時(shí)間,以及各臺服務(wù)器的各項(xiàng)資源情況。比如:集群 負(fù)載均衡、降低成本7、存泄露檢查: 通過正常的性能測試,如果被測系統(tǒng)的存曲線走勢不正常,則關(guān)注其相應(yīng)的各項(xiàng)重要的 存指標(biāo),通過對應(yīng)走勢來確定是否發(fā)生存泄露。8、數(shù)據(jù)容量測試: 使用大容量的數(shù)據(jù)添加到數(shù)據(jù)庫中,觀察被測系統(tǒng)是否能夠正常運(yùn)行。比如:向數(shù)據(jù)庫中添加 200G數(shù)據(jù)量,再進(jìn)行測試,甚至幾個(gè)T大數(shù)據(jù),一般是 T級、P級的數(shù)據(jù)量1024Byte = 1KB1024K = 1M1024M = 1G1024G = 1T1024T = 1P9、極限測試: 使用并發(fā)測試、在線測試等方法,測試出系統(tǒng)能夠承受的極限壓力(如最大用戶
11、數(shù)),或系統(tǒng)能夠達(dá)到的最大處理能力(如最大吞吐量) 。測試方法可以采用遞增測試,比如對系統(tǒng)進(jìn)行100用戶、 500 用戶、 1000 用戶等測試。 (也稱為:摸高測試)三、三大基本測試(基準(zhǔn)測試,并發(fā)測試和綜合場景測試)的具體方法及配置1、歸納基準(zhǔn)測試:方法 1:單用戶循環(huán) 5 次1) 調(diào)試好腳本(加檢查點(diǎn),在 VuGen 中運(yùn)行成功)2 ) 打開控制臺,設(shè)置 Run-time Settings3) 迭代次數(shù): 54) Pacing 值:隨機(jī) 23 (每次迭代之間的時(shí)間間隔)5 ) Think time: 忽略 (請求之間的時(shí)間間隔) 忽略的原因:單用戶對系統(tǒng)壓力較小,忽略與否對結(jié)果影響不大。
12、方法 2:單用戶持續(xù)運(yùn)行 1 分鐘1) 調(diào)試好腳本(加檢查點(diǎn),在 VuGen 中運(yùn)行成功)2 ) 打開控制臺,設(shè)置 Run-time Settings3) Pacing 值:隨機(jī) 234) Think time: 忽略5 ) Duration: 1 分鐘提示:配置好后,觀察圖表狀態(tài),有所變動,才修改成功。注意: 當(dāng) Run-time Settings 中迭代和 VU 部署設(shè)置 (Duration) 有沖突時(shí), Duration 的優(yōu)先級較高。 比如: Duration 選擇第二項(xiàng),就以此為準(zhǔn)Run for _ days and _ (HH:MM:SS)如果選擇第一項(xiàng): Run until co
13、mpletion 還是聽 Duration ,只是它放權(quán)了。Duration 是一把手,讓二把手看著辦,此時(shí) Run-time Settings 說的算。 測試報(bào)告中的結(jié)果,應(yīng)該測試三次,取中間值。比如: 0.1 秒 0.3 秒 0.4 秒 結(jié)果取 0.3 秒2、并發(fā)測試a、并發(fā)測試兩個(gè)條件1)腳本中要有集合點(diǎn)(并發(fā)點(diǎn))2)控制臺中要設(shè)置并發(fā)策略(選擇第一項(xiàng),所有虛擬用戶到達(dá)集合點(diǎn)后釋放)集合點(diǎn):5個(gè)線程,代表5個(gè)VU并發(fā)執(zhí)行一次購票O(jiān)-*QT|0->o-* -|o-*QT _|Q» 0 T ” - | 07 r 等所有線程到達(dá)集合點(diǎn)時(shí),才一起釋放,此時(shí)的壓力最大(瞬時(shí)壓力)注
14、意:要在事務(wù)開始之前,設(shè)置并發(fā)點(diǎn)b、并發(fā)點(diǎn)只有在并發(fā)測試中使用。案例:在腳本中添加并發(fā)點(diǎn),執(zhí)行并發(fā)測試需求:并發(fā)購票注意:在事務(wù)腳本之前添加lr_start_tra nscti on ("buy");在事務(wù)開始之前-> 點(diǎn)擊Insert -> Rendezvous-> 輸入集合點(diǎn)名稱 Ren dezvous Name: buy一般與事務(wù)名相同就會生成腳本:lr_re ndezvous("buy");-> 編譯 Compile (同時(shí)會立即保存)注意:腳本中發(fā)生變動(加了檢查點(diǎn)、集合點(diǎn)、代碼等)1)一定要點(diǎn)擊編譯 Compile按鈕
15、,同時(shí)也會自動保存2)在控制臺中要刷新腳本c、并發(fā)策略的設(shè)置:并發(fā)策略是在控制臺配置:控制臺界面選擇 Scenario 菜單 -> Randezvours. (并發(fā)點(diǎn))-> 打開窗口,設(shè)置策略->點(diǎn)擊 Policy (策略)按鈕第1 項(xiàng): Release when 100% of all Vusers arrive at the rendezvous. (一般都選擇此項(xiàng)) 當(dāng) 100%虛擬用戶到了集合點(diǎn)時(shí)釋放虛擬用戶VU(所有 VU 的 n%) 10 個(gè) VU 都算 10 * n%第 2 項(xiàng): Release when 100% of all running Vusers a
16、rrive at the rendezvous.當(dāng) 100%正在運(yùn)行的 VU 到達(dá)集合點(diǎn)時(shí)釋放 VU (所有正在運(yùn)行的 VU 的 n%)如果 10 個(gè) VU 只有 5 個(gè)正在運(yùn)行, 5 * n%第 3 項(xiàng): Release when 1 Vusers arrive at the rendezvous.指定 n 個(gè)虛擬用戶達(dá)到集合點(diǎn),再釋放d 、并發(fā)測試案例:完成 5 個(gè) VU 的并發(fā)控制臺 -> Basic schedule -> Quantity 改為 5 Start Vusers: 用戶數(shù)少,登錄時(shí)間快,不用改 Duration: 選 Run until completion
17、表示瞬時(shí)壓力 繼續(xù)設(shè)置 Run-time Settings:Run Logic: 迭代次數(shù) 1Pacing: 改為 As soon as the previous iteration ends.Log: 默認(rèn)Think time: 默認(rèn) 忽略 Ignore think time (好比:不停地發(fā)請求,不給喘息時(shí)間)e、并發(fā)測試要點(diǎn)回顧:1 ) 事務(wù)前設(shè)置并發(fā)點(diǎn)( lr_rendezvous("buy"); )2) 控制臺中設(shè)置并發(fā)策略3)要忽略 Think time3、綜合場景測試綜合場景測試號稱能夠最真實(shí)的模擬實(shí)際生產(chǎn)環(huán)境綜合場景的幾個(gè)要素:多用戶、多個(gè)腳本(至少 3 個(gè)
18、)、在線執(zhí)行(多種操作)一段時(shí)間( 1 小時(shí)、50 分鐘等),一般是不加并發(fā)點(diǎn)。注意: 只要是多用戶,就存在并發(fā)綜合場景測試過程中,所有用戶循環(huán)執(zhí)行相應(yīng)的操作1)錄制好 3 個(gè)腳本 :購買機(jī)票 buy 、查詢路線 search 、瀏覽航班 scan添加好事務(wù)點(diǎn)、檢查點(diǎn);(無需集合點(diǎn))轉(zhuǎn)移事務(wù)中的 Think time 腳本至事務(wù)之外: lr_think_time(23);將腳本載入到控制臺中,并設(shè)置人數(shù)比例:Group NameQuantitybuy2search4scan42)設(shè)置場景Schedule by:Scenario: 按場景 場景中,多個(gè) VU 統(tǒng)一配置、行動 (選擇)Group:
19、 按組 每個(gè)組,組 VU 統(tǒng)一行動 (按組行動)重點(diǎn)設(shè)置左下角 Global Schedule:以上三個(gè)腳本都選中,一次配置三個(gè)(出現(xiàn)黑框)->a、Start Vusers 雙擊 -> 設(shè)置一個(gè)小的遞增 單選第 2 項(xiàng)-> 100:00:01 HH:MM:SS -> OK該設(shè)置表示: 每隔 1 秒鐘加載一個(gè) VU-> 及時(shí)觀察右邊效果圖:鋸齒狀 b 、 Duration 雙擊-> 單選第 2 項(xiàng):Run for 0 days and 00:30:00 (HH:MM:SS)-> OK 該設(shè)置表示: 確定指定測試運(yùn)行的時(shí)間為 30 分鐘 (項(xiàng)目中一般 50
20、 分鐘、 1 小時(shí))如果第 1 項(xiàng): Run until completion 直到結(jié)束,適合于循環(huán),確定次數(shù);如果第 3 項(xiàng): Run indefinitely 一直跑,直到手動停止3 ) Run-time Settings 設(shè)置說明:迭代次數(shù)默認(rèn) 1 具體次數(shù)由持續(xù)時(shí)間決定a、pacing: 隨機(jī) 4-6 秒 或 5-9 秒正常: 2-3 秒,教學(xué)機(jī)較慢,設(shè)置偏大些,保證不出錯(cuò)b 、日志 log: 保留原有選項(xiàng)(出錯(cuò)時(shí)發(fā)送) 原因:大量日志也會占用磁盤空間。c、Think time: 隨機(jī)百分比,適當(dāng)調(diào)大 200% - 300%d 、 Continue on error: 錯(cuò)誤時(shí)繼續(xù) 原因
21、:長時(shí)間執(zhí)行大量事務(wù),個(gè)別出錯(cuò)繼續(xù)運(yùn)行,不影響全局。e 、Vuser 選擇 線程 方式。節(jié)省系統(tǒng)資源f、網(wǎng)絡(luò):模擬用戶的網(wǎng)絡(luò),使用最大帶寬g 、模擬緩存:選擇不模擬h 、 Option 選項(xiàng): 3 個(gè) 120 改為 600 一般疲勞測試設(shè)置 600 足夠了。4 ) 配置 Windows resources選擇 Run 視圖 -> 右擊窗口 ->Add Measurements.->Monitered Server Machines:選機(jī)器 點(diǎn)擊 Add. 按鈕 ->Machine Information:Name: localhost 指定監(jiān)控服務(wù)器的 IP 地址,主機(jī)
22、名,目前就是本地主機(jī)Platform: WINXP-> OK自己完成選項(xiàng)的添加(固定 13 項(xiàng)) -> 點(diǎn)擊 Add 按鈕 -> 選擇以下容:Memory 中有 4 項(xiàng):(存)Available MBytes-> Add%Committed Bytes in Use-> AddPage Faults/sec-> AddPages/sec-> AddNetwork Interface 中有 2 項(xiàng):(網(wǎng)絡(luò))Bytes Total/sec -> MS TCP Loopback inter. 回環(huán) -> Add 本地主機(jī)才選回環(huán)Packets/s
23、ec -> MS TCP Loopback inter. 回環(huán)-> Add本地主機(jī)自己和自己通信,用回環(huán)PhysicalDisk 中有 4 項(xiàng)( 2 個(gè)隊(duì)列):(磁盤)見到 Total 就選Avg.Disk Queue Length->Total -> AddCurrent Disk Queue Length->Total -> AddDisk Read Bytes/secDisk Write Bytes/sec-> Total -> Add-> Total -> AddProcessor 中有 2 項(xiàng):(進(jìn)程)%Processor
24、Time-> Total-> AddTotal 表示總和%User Time-> Total-> AddSystem 中有 1 項(xiàng): (系統(tǒng))Processor Queue Length-> Add-> OK以上一共 13 項(xiàng) windows 監(jiān)控資源,具體說明如下:昵f¥i_ndnwx>內(nèi)冇% Ccwimi tt&d Sytses i a UseHI einci y_C uirnlhi t. te J. Dy* I eiMeiii u-± y_Cuilimi ILi ID 1十宀晶J百醫(yī)匕匕比恒顯示了物理角存的剩余星.該值
25、愜于411E.并且達(dá) 判汨鐘翔時(shí)古明內(nèi)與-水電F直£: TaiilILe/sec毎秒鐘的抉?I融*說數(shù)佰貢腆了百霎少于請求的 信息不在將理內(nèi)杏中對應(yīng)floras丄.滋恒関爾高 時(shí)寺明吉總雄審號特續(xù)走高麗表示亍館看 內(nèi)療煩頸P宜匡吐S« C顯示 pages ii:Lput/se e 3 p ages Qiutput/ sec 的 啟和 fiTxpu十"抑內(nèi)存申1 翔軼昏況;paces gtpgCau昱芋從怖理內(nèi)存中凋 出的潔息早.用映了服苦翻的零tr辟帶網(wǎng)餡KTqoitIeIilL ex £-aue:Ey t a = Tot aL/sac是炭送:護(hù)摟|血字
26、年酌連寧”包抄帕半港在西FmcJcs ts/sse為擔(dān)送和捋收數(shù)據(jù)包的仰率罐蠱 Phys i 口Di話人vg. Di =.k Qustug扌曲胞利寫幾謂隸 偽所JS晤蓋在宴阿耳幅 中HA 況的)的平均數(shù)Ciirrsji't Dilc Butu#L<±n.tK苗在收集標(biāo)作數(shù)1E吋在融盎上未完成的廟求的 敵冃它包護(hù)在怏頤內(nèi)薦肘正在為貳提件服多申 的誦求.建是一個(gè)即時(shí)氏度両車一龍間隔時(shí)1劇的 平均怕Di zlr Hd-a-d./ Ear1指在1S 刪濟(jì)呵択陽盤 上佶送手卒的送軍Di hk WjriBy I e s./s«ec摑在寫入憔作時(shí)傳擺到邈盤丄的乎節(jié)速廢Pr
27、* aAsear監(jiān)吃衛(wèi)誓丘曰尸 Ti*孑呂鈕 理器執(zhí)行非 閑査銭 程時(shí)伺的 百分比需 Vs ex Time扌旨用于用戶棧式的希閑賈址理噩時(shí)崗的百曲LEPircicLength是指處理IU和中的喘程徽注意:運(yùn)行過程中如果有錯(cuò)誤,觀察Scenario Status中的Errors部分0 (點(diǎn)開,尋找出錯(cuò)原因)如果是場景設(shè)置問題,需要重新設(shè)置場景,重新運(yùn)行 如果是腳本的問題,需要停止場景并調(diào)試腳本,重新運(yùn)行四、參數(shù)化1、含義:同樣的業(yè)務(wù),出現(xiàn)不同的數(shù)據(jù),考慮采用腳本參數(shù)化技術(shù)2、步驟:確定參數(shù)化的數(shù)據(jù)-> 準(zhǔn)備數(shù)據(jù)-> 提供策略-> 參數(shù)化3、準(zhǔn)備數(shù)據(jù) (目前:File方式)1)每
28、個(gè)參數(shù)使用獨(dú)立文件(參數(shù)池)2)多個(gè)參數(shù)共享同一個(gè)文件(常用)Excel 工具、 Column (序號、列名) 、 First Data (從哪開始)4、參數(shù)池的策略(難點(diǎn))1 ) Select next row 選擇下一行 (How? 如何取 ?)a、順序Sequential:從第一行開始順序向下選取b、唯一 Unique:從第一行開始,唯一向下選取c、隨機(jī) Random:隨機(jī)取值d 、 Same line as xxx: 取值策略與參數(shù) xxx 相同 (同一行)2)Update value on 更新方式 (When? 何時(shí)取 ?)a、 每次迭代 Each iteration:每次迭代時(shí)取
29、值。(Action 一次)b、每次遇到 Each occurre nee:每次遇到該參數(shù)時(shí)。c、取值一次Once:腳本運(yùn)行過程中只取值一次。3)When out of values: 選擇 Unique 才有,數(shù)據(jù)不足時(shí)處理情況:a、 放棄虛擬用戶Abort Vuserb、 以循環(huán)的方式繼續(xù)Con ti nue in a cyclic mannerc、 持續(xù)最后一個(gè)值Co ntinue with last value經(jīng)典需求:注冊腳本,多用戶,則參數(shù)池策略組合Unique + Each iteration + Abort Vuser另外,常用的組合:SE組合(順序+每次迭代)5、綜合題(幫助理
30、解參數(shù)池的策略)某參數(shù)現(xiàn)有備用數(shù)據(jù) a1, a2, a3, . a30; 腳本迭代 4次;3個(gè) VU;完成一項(xiàng)結(jié)果: (必須掌握! )1 ) 順序 + 每次迭代重要VU1: a1 a2 a3 a4順序 每個(gè) VU 取值序列相同VU2: a1 a2 a3 a4每個(gè) VU 都從第一個(gè)開始往下取VU3: a1 a2 a3 a4每個(gè) VU 共迭代 4 次,取 4 次值2) 唯一 + 每次迭代(無特殊說明,塊大小為自動分配)重要VU1: a1 a2 a3 a4唯一 從第一行依次唯一向下選取VU2: a5 a6 a7 a8每個(gè) VU 都不同VU3: a9 a10 a11 a12 每個(gè) VU 共迭代 4次,
31、取 4 次值3) 隨機(jī) + 每次迭代 重要 VU1: a18 a3 a5 a17VU2: a20 a18 a13 a22VU3: a30 a2 a28 a144) 順序 + 每次遇到VU1: a1 a2 a3 a4VU2: a1 a2 a3 a4VU3: a1 a2 a3 a4順序:每個(gè) VU 都從第一個(gè)順序向下取值 Action 中參數(shù)只出現(xiàn) 1 次每次遇到:每個(gè) VU 遇到 4 次(注意:使用參數(shù)模擬器,會出問題,不能被模擬,因?yàn)椴淮_定數(shù)據(jù)量是否足夠)5 ) 唯一 + 每次遇到(塊大小為 6) 重要 VU1: a1 a2 a3 a4VU2: a7 a8 a9 a10VU3: a13 a14
32、 a15 a16唯一:塊大小 6 第一塊 (a1 a2 a3 a4 a5 a6)第二塊 (a7 a8 a9 a10 a11 a12)第三塊 (a13 a14 a15 a16 a17 a18)每次遇到:每個(gè) VU 遇到 4 次,取每塊中的前 4 個(gè)6) 隨機(jī) + 每次遇到VU1: a5 a8 a11 a20VU2: a7 a5 a9 a15VU3: a12 a17 a24 a26每次遇到:由于參數(shù)只出現(xiàn)一次,效果等同于每次迭代7) 順序 + 一次 <重要 >VU1: a1 a1 a1 a1VU2: a1 a1 a1 a1VU3: a1 a1 a1 a1順序:每個(gè) VU 取值一樣;一次
33、:只取第一個(gè)值8) 唯一 + 一次 <重要 >VU1: a1 a1 a1 a1VU2: a2 a2 a2 a2VU3: a3 a3 a3 a3唯一:每個(gè) VU 從第一開始,唯一向下取值一次:每個(gè) VU 取值后,不再換值9) 隨機(jī) + 一次 <重要 >VU1: a5 a5 a5 a5VU2: a16 a16 a16 a16VU3: a18 a18 a18 a18隨機(jī):每個(gè) VU 任意取值; 一次:取值一次,不再換值10 )唯一 + 每次迭代 (塊大小為 6)注意與 2)的區(qū)別VU1: a1 a2 a3 a4VU2: a7 a8 a9 a10VU3: a13 a14 a15
34、 a16唯一:塊大小 6 第一塊 (a1 a2 a3 a4 a5 a6)第二塊 (a7 a8 a9 a10 a11 a12)第三塊 (a13 a14 a15 a16 a17 a18)五、常用函數(shù)1、web_find 函數(shù)1 ) 寫在相應(yīng)請求之后2 ) Run-time Settings 需要設(shè)置:可用3) 左邊界: RightOf4) 右邊界: LeftOf5 ) web_find 執(zhí)行效率低于 web_reg_find.2、lr_output_message 是 LR 的輸出函數(shù),經(jīng)常用于腳本的調(diào)試。3、腳本中快速定位1) 從日志定位到腳本行:雙擊日志、根據(jù)行號 Ctrl + g2 ) 從腳
35、本行定位到日志中:右擊腳本 -> Go to Step in Replay log4、檢查點(diǎn)函數(shù)區(qū)別1) web_find()(LR 普通函數(shù))特點(diǎn):從 HTML 頁面中查找指定的文本字符串(比較占資源、效率低、較少使用)2 ) web_image_check()a、alt 參數(shù):當(dāng)鼠標(biāo)懸浮在圖片上時(shí)顯示的名字,給用戶看的b、src參數(shù):圖片的路徑名及圖片名稱,給程序員看的3) web_reg_find()( LR 注冊性函數(shù))特點(diǎn):在緩存中( Html 源代碼級別)查找相應(yīng)的容效率高,最常用web_reg_find 要寫在相應(yīng)請求之前,因?yàn)槭亲孕院瘮?shù)規(guī)律: LR 所有注冊性函數(shù),含有
36、 reg 字樣,都要寫在相應(yīng)請求之前。5、腳本代碼閱讀說明(重要) :web_reg_find("Text=ABC", "SaveCount=abc_count", LAST);web_url("Step", "URL=.", LAST);if (strcmp (lr_eval_string("abc_count") , "0") = 0) lr_output_message("not found"); elselr_output_message( &qu
37、ot;%s times", lr_eval_string("abc_count") );1) LR腳本中有兩種變量,一種是C語言的變量,需要在腳本的開始處定義(如:i nt a;);另一種是LR的變量,出現(xiàn)在LR的函數(shù)里,不需要定義,但是如果使用LR變量的實(shí)際值,則必須加(如:name)2) lr_eval_string函數(shù) 起到一個(gè)橋梁的作用,將LR的變量介紹給 C語言的函數(shù)使用。LR變量->C 語言能夠理解的字符串(高級腳本調(diào)試時(shí)常用)該函數(shù)的返回結(jié)果,就可以給C語言函數(shù)當(dāng)做參數(shù)使用。lr_eval_string("abc_count"
38、;);lr_eval_string("name");3) strcmp(a, b)表示比較兩個(gè)字符串變量的值是否相等,如果返回0,則表示兩個(gè)字符串相等。(C語言函數(shù))4) lr_eval_string("abc_count")lr_eval_string 之后默認(rèn)接 (); ()中是字符串,所以加" """中不是普通字符串,而是LR字符串變量,固定需要用 5) C語言中s表示字符串格式符,經(jīng)常用于輸出語句;d表示整數(shù)的格式符。六、關(guān)聯(lián)1 、 關(guān)聯(lián)產(chǎn)生的原因產(chǎn)生問題的原因: Client 端 WebServer 端真
39、實(shí)情況:Client 請求 1 > WebServer響應(yīng) 1 < 提供一個(gè) uid 123請求 2 攜帶 uid 123 >響應(yīng) 2 <LR模擬情況(第3項(xiàng)):Client 請求 3 攜帶 uid 123 -> WebServer響應(yīng) 3< 提供一個(gè) uid 456請求 4 攜帶 uid 123 >響應(yīng) 4 < 錯(cuò)誤原因: uid 不匹配某些系統(tǒng)的服務(wù)器在第一次和客戶端打交道時(shí),會附帶一個(gè) id (該 id 隨不同用戶的變化而變化) ; 當(dāng)客戶端之后發(fā)請求時(shí)需要該id才能繼續(xù);而LR在錄制時(shí)形成的id是一個(gè)靜態(tài)的id (如123),這就導(dǎo)致客戶
40、端在發(fā)請求時(shí)無法獲取服務(wù)器每次發(fā)送的動態(tài)的id ,導(dǎo)致腳本失敗。 (腳本調(diào)試方向:將靜態(tài)的 id 換成動態(tài) id)關(guān)聯(lián)的概念: Correlation把腳本中某些寫死的數(shù)據(jù),轉(zhuǎn)變?yōu)榉?wù)器所發(fā)送的、動態(tài)的、每次都不一樣的數(shù)據(jù)。何時(shí)做關(guān)聯(lián):正常錄制,但是回放不成功,考慮是否關(guān)聯(lián)。2、一般關(guān)聯(lián)的操作的三大步驟:1 ) 從服務(wù)器返回的數(shù)據(jù)中選取需要進(jìn)行關(guān)聯(lián)的數(shù)據(jù)。 (找數(shù)據(jù))2)將該數(shù)據(jù)存入腳本的一個(gè)參數(shù)中。變動的數(shù)據(jù)在腳本中是參數(shù),由于是變化的,所以叫動態(tài) ID3)將腳本中需要使用數(shù)據(jù)的地方用該參數(shù)代替。動態(tài)ID:需要關(guān)聯(lián)的數(shù)據(jù)比如:每一次執(zhí)行腳本都會變動的值,就需要關(guān)聯(lián)執(zhí)行一次就變動一次,或錄制一
41、次也會變動一次3、如何找到動態(tài) ID1)原理:每執(zhí)行(或者錄制)一次,都會變動的值。2 ) 錄制兩個(gè)一模一樣業(yè)務(wù)流程的腳本,進(jìn)行比對,找出動態(tài)ID。3) 動態(tài)ID 一般是一串無規(guī)律的字符串(少數(shù)情況下有規(guī)律)。4)動態(tài) ID 一般不是坐標(biāo)值、 think time 時(shí)間、檢查點(diǎn)函數(shù) ,也不是整段的請求。關(guān)聯(lián)類型:1 ) 手動關(guān)聯(lián) (常用)2)自動關(guān)聯(lián) (經(jīng)常導(dǎo)致腳本失敗, LR 回退,很少使用 了解)手動關(guān)聯(lián)的具體步驟:1)錄制腳本,回放有錯(cuò)誤。確定由于動態(tài)數(shù)據(jù)造成的。2)再錄制一份相同流程的腳本。3)使用 WDiff 工具進(jìn)行比較。 (操作熟練,可以省略)4)使用 web_reg_save_
42、param() 函數(shù),在源文件中找到需要關(guān)聯(lián)的字符串(動態(tài)數(shù)據(jù)) ,存入一個(gè)參數(shù) 中。5 ) 把錄制時(shí)數(shù)據(jù)替換為該參數(shù)(動態(tài)數(shù)據(jù))web_ reg_save_param 注冊性函數(shù),需要寫在相應(yīng)請求之前:尋找相應(yīng)請求4、如何查找到相應(yīng)請求?(為了在相應(yīng)請求之前寫關(guān)聯(lián)函數(shù))1)拷貝動態(tài) ID 適當(dāng)長度 (太長有可能在顯示時(shí)換行、 太短可能重復(fù)較多) ,從 Generation Log 的第一 行開始查找! !如果查找到的位置在服務(wù)器的應(yīng)答包中,說明查找正確。(第一次,是從服務(wù)器發(fā)出的 ID)在腳本中拷貝 ID 的一小段: 114276.5 ctrl + c點(diǎn)擊 Generation Log -&
43、gt; 從第一行開始查找 ctrl + f-> ctrl + v查找該文本找到位置在應(yīng)答包中 Response 標(biāo)題 With Id 142)查找到之后,選取適當(dāng)長度的左右邊界,拷貝下來,準(zhǔn)備寫函數(shù)。name=userSession value=114276.568975294fiHiVAVpAVzzzzzHDfczipzAzV3)先向下慢慢翻找,找到與當(dāng)前應(yīng)答 id 號相同的 id 號的請求,該請求即為相應(yīng)請求。 (90%的情況都 是在下方不遠(yuǎn)處)4) 如果找不到,則回到原位置,向上慢慢找到最近的一條請求。5 ) Request 和 Event 都是請求。web_url(".
44、 "Snapshot=t1.inf", ); 快照名是唯一的,作為線索尋找腳本中 ti.inf 對應(yīng)的請求位置。將拷貝的串信息粘貼到請求之前。6)找到相應(yīng)請求之后,在請求之前寫關(guān)聯(lián)函數(shù),并將后續(xù)腳本中用到動態(tài) ID 的位置用函數(shù)中的參數(shù) 替代。web_reg_save_param("uid", / 參數(shù)名稱"LB= 左邊界的字符串 ", / 左邊界"RB=右邊界的字符串",/右邊界LAST);相應(yīng)請求 ;之后,將腳本中的 ID 值,用參數(shù) uid 代替:"Name=userSession", &
45、quot;Value=114276.568975294fiHiVAVpAVzzzzzHDfczipzAzV", ENDITEM,改為:"Name=userSession", "Value=uid", ENDITEM,即可。 uid 取得 LR 的變量值, LR 語法圍有效的。編譯腳本 -> 回放5、從業(yè)務(wù)邏輯去分析請求, 相應(yīng)請求所在的位置, 當(dāng)前腳本是基于 HTML 方式錄制, 結(jié)構(gòu)較簡單, 所以 當(dāng)客戶端 第一次對服務(wù)器發(fā)請求時(shí),服務(wù)器就已經(jīng)分配了動態(tài)ID,來識別不同的用戶。所以第一次發(fā)請求就是相應(yīng)請求。 (基于 URL 的錄制方式,
46、則比較復(fù)雜,需要更加仔細(xì)分析)所謂相應(yīng)請求,就是 產(chǎn)生動態(tài) ID 的應(yīng)答 的相應(yīng)請求。七、性能測試分析性能測試結(jié)束后,要對測試結(jié)果進(jìn)行分析。分為三種情況:1、測試結(jié)果完全符合需求,不需要分析。2、測試結(jié)果存在問題(不符合需求,時(shí)間超長) ,直接通過測試報(bào)告( Analysis )查找到原因。直接寫出 報(bào)告。(前提:對應(yīng) Analysis 中結(jié)果描述非常清楚。 )3、如果通過測試報(bào)告沒有得出結(jié)果(性能瓶頸),這種情況比較復(fù)雜。4、比如發(fā)現(xiàn)某些事務(wù)響應(yīng)時(shí)間超長(最普遍),該如何處理?1 ) 通過 Analysis 報(bào)告中幾個(gè)比較重要的圖表進(jìn)行查看,初步定位問題,再通過網(wǎng)頁細(xì)分圖(網(wǎng)頁診斷 圖)去確
47、定響應(yīng)時(shí)間長在系統(tǒng)的哪個(gè)部分。大多數(shù)情況下,時(shí)間長在服務(wù)器端。(響應(yīng)時(shí)間 = 客戶端時(shí)間 + 網(wǎng)絡(luò)時(shí)間 + 服務(wù)器時(shí)間)2)要進(jìn)一步確定是哪臺服務(wù)器(復(fù)雜的系統(tǒng)服務(wù)器 n,甚至幾十臺-集群)答案:通過 監(jiān)控服務(wù)器的系統(tǒng)資源圖,能夠很容易地定位出哪臺服務(wù)器不正常。3)如果是應(yīng)用服務(wù)器(在企業(yè)中也常稱為中間件) ,如 Tomcat 、 JBoss、 Weblogic 、 WebSphere ,發(fā) 生問題,調(diào)整服務(wù)器配置參數(shù)即可。共性:都是軟件,都安裝在服務(wù)器主機(jī)上提供企業(yè)級應(yīng)用的支持。 區(qū)別:免費(fèi)、收費(fèi)(上百萬)Tomcat: Apache 開源組織、免費(fèi)Weblogic: BEA 公司出品,后來
48、被 Oracle 收購了WebSphere: IBM 公司應(yīng)用服務(wù)器4)大部分情況都是數(shù)據(jù)庫服務(wù)器出現(xiàn)問題,可以通過專門的 數(shù)據(jù)庫監(jiān)控工具 去監(jiān)控, 甚至可以提取到相應(yīng)有問題的sql語句??梢詫ql語句進(jìn)行分析、調(diào)優(yōu),進(jìn)而提升被測系統(tǒng)的性能。5、 以上的調(diào)試流程不適合于每個(gè)被測系統(tǒng),絕大部分的系統(tǒng)可以在前面的某些步驟中即可停止, 完成性 能分析過程。6、頁面細(xì)分圖:1 ) 操作: 右擊 Graphs -> Add New Item -> Add New Graphs.-> 打開 Open a New Graph 窗口,在 Web Page Diagnostics 中進(jìn)一步查
49、看細(xì)分圖。a、Web Page Breakdown頁面中的組件,也叫做頁面中的元素。包括組成網(wǎng)頁的容:文字、圖片、音頻、視頻、動畫.b 、 Page Component Breakdown (Over Time)頁面組件細(xì)分圖(隨時(shí)間變化) 更細(xì)致c、Page Download Time Breakdown頁面下載時(shí)間細(xì)分圖響應(yīng)時(shí)間:包括請求后,響應(yīng)的各個(gè)階段八項(xiàng)中主要關(guān)注前 4 項(xiàng):DNS(Domain Name System ) 域名解析時(shí)間(好比:根據(jù)公司名找到主機(jī)時(shí)間)Connection 連接時(shí)間(好比:公司找一個(gè)客服解析接待的時(shí)間)First Buffer 第一次緩沖時(shí)間(好比:獲
50、取第一個(gè)數(shù)據(jù)包的時(shí)間,很重要)Receive接收時(shí)間(好比:獲取到所有數(shù)據(jù)包的接收時(shí)間,從第一個(gè)字節(jié)開始記錄)SSL握手只發(fā)生在基于Https協(xié)議通信的網(wǎng)頁上Client Time由于客戶端引起的延遲Error Time 系統(tǒng)頁面報(bào)錯(cuò)時(shí)才發(fā)生,不是總有FTP TimeFTP驗(yàn)證時(shí)間:當(dāng)系統(tǒng)中存在FTP(File Tran sfer Protocol) 文件傳輸協(xié)議,服務(wù)器下載操作時(shí)才產(chǎn)生該時(shí)間特別說明:First Buffer Time 第一次緩沖的時(shí)間 (第一個(gè)數(shù)據(jù)包)Client > Web Server> DB Server< <可以細(xì)分為:網(wǎng)絡(luò)及服務(wù)器處理時(shí)間
51、+ 數(shù)據(jù)庫時(shí)間客戶端(Client)從發(fā)送請求 到 收到第一個(gè)緩沖(大小8K)之間的時(shí)間問題: First Buffer 時(shí)間 和 Receive 時(shí)間 有沒有交集 ?發(fā)送4K容,如果First Buffer是8K,則有交集。無需過于區(qū)分,因?yàn)閭?cè)重點(diǎn)不同。d、First Buffer 的時(shí)間:細(xì)分為網(wǎng)絡(luò)時(shí)間 和 服務(wù)器時(shí)間,如果網(wǎng)絡(luò)(帶寬)情況不好,則網(wǎng)絡(luò)的 時(shí)間可能會對服務(wù)器時(shí)間造成影響;如果是網(wǎng)測試,則基本沒有這種問題。操作: 打開 Time to First Buffer Breakdown 第一次緩沖時(shí)間細(xì)分圖看到只對 First Buffer 進(jìn)行細(xì)分,分為:Network Time
52、 網(wǎng)絡(luò)時(shí)間Server Time 服務(wù)器時(shí)間 (占絕大部分)打開 Time to First Buffer Breakdown(Over Time) 第一次緩沖時(shí)間細(xì)分圖 (隨時(shí)間變化)發(fā)現(xiàn)細(xì)分圖條數(shù):元素個(gè)數(shù) * 2f、頁面中所有組件(元素)大小的和=該頁面的大小操作: 打開 Download Compoent Size(KB) 已經(jīng)下載的組件大小圖結(jié)合 Breakdown Tree 細(xì)分樹 查看2) 看結(jié)果分析圖時(shí),一定注意:不光看圖的走勢,還要看圖中坐標(biāo)的單位。要二者結(jié)合出結(jié)果。比如:一圖中走勢在某處(某個(gè)時(shí)間圍)很陡峭,但是其下載時(shí)間的坐標(biāo)軸中最高值為0.006 ,所以該時(shí)間沒有問題。
53、現(xiàn)象: First Buffer 占的比例較大(與網(wǎng)絡(luò) 和 服務(wù)器有關(guān)) ,可以進(jìn)一步細(xì)分:網(wǎng)絡(luò)時(shí)間 和 服務(wù) 器時(shí)間網(wǎng)絡(luò)時(shí)間:Client 第一次 Http 請求開始計(jì)時(shí) -> Web Server -> DB Server<- 直到返回服務(wù)器的第一個(gè)字節(jié)為止(收到確認(rèn))服務(wù)器時(shí)間:- 收到請求確認(rèn),并處理請求開始計(jì)時(shí)-><- 直到返回第一次緩沖的時(shí)間7、頁面診斷圖(綜合圖)操作:(第一項(xiàng) ),直接打開(經(jīng)常使用,目xxx 就是事務(wù)的名稱,比如1 ) 右擊 Graph -> Add New Item -> Add New Graph-> Web
54、 Page Diagnostics2 ) 從事務(wù)響應(yīng)時(shí)間圖中選中某條需要分析的時(shí)間,點(diǎn)擊右鍵(頁面診斷) 標(biāo)明確)找到 Graph -> Average Transaction Response Time-> 找到某條折現(xiàn) -> 右擊 -> show Diagnostics for "xxx"打開,"login" 。觀察綜合圖的分布規(guī)律:1 ) 左邊是細(xì)分樹 Breakdown Tree比如 login 的 URL 地址,對應(yīng)右邊中間:Select Page to Break Down 中的地址。2 ) 最上邊 Average D
55、ownload Time 下載細(xì)分時(shí)間3) 右邊中間的組件細(xì)分部分 (最關(guān)心的部分)具備 4 個(gè)單選鈕:Download TimeComponent(Over Time) 組件細(xì)分Download Time(Over Time)下載時(shí)間細(xì)分Time to First Buffer(Over Time)第一次緩沖時(shí)間關(guān)注: Download Time 分為 8 種顏色對應(yīng)相應(yīng)時(shí)間右擊條目:a) 拷貝全路徑名到剪切板b) 在瀏覽器顯示 View page in browser各種顏色中,藍(lán)色的First Buffer比例最大,想進(jìn)一步分析 First Buffer,單選:Time to First Buffer(OverTime)又細(xì)分為: Network Time 和 Server Time ( 大部分 ) 基本線索:找到某組件,單選鈕切換是針對該組件看不同相關(guān)的圖 歸納:右側(cè):上中下都有關(guān)系上:顯示下載時(shí)間圖中:顯示 URL 地址、具體細(xì)分圖下:顯示該項(xiàng)打鉤8、頁面診斷圖(綜合圖)的分析方式:一般從事務(wù)平均響
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商住房出租合同范本
- 舞蹈室租賃合同
- 客車經(jīng)營租賃合同
- 2025年仁愛科普版九年級歷史下冊階段測試試卷含答案
- 2025年北師大版八年級化學(xué)上冊月考試卷含答案
- 2025年人教新起點(diǎn)八年級生物下冊月考試卷含答案
- 2025年滬教版七年級科學(xué)上冊階段測試試卷含答案
- 2025至2031年中國大豆酪蛋白消化培養(yǎng)基行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年冀教版選擇性必修3化學(xué)下冊月考試卷含答案
- 2025至2031年中國制冷/暖通空調(diào)專用膠帶行業(yè)投資前景及策略咨詢研究報(bào)告
- 安全行車知識培訓(xùn)
- 2024年安徽省高校分類對口招生考試數(shù)學(xué)試卷真題
- 第12講 語態(tài)一般現(xiàn)在時(shí)、一般過去時(shí)、一般將來時(shí)(原卷版)
- 2024年采購員年終總結(jié)
- 2024年新疆區(qū)公務(wù)員錄用考試《行測》試題及答案解析
- 肺動脈高壓的護(hù)理查房課件
- 2025屆北京巿通州區(qū)英語高三上期末綜合測試試題含解析
- 公婆贈予兒媳婦的房產(chǎn)協(xié)議書(2篇)
- 煤炭行業(yè)智能化煤炭篩分與洗選方案
- 2024年機(jī)修鉗工(初級)考試題庫附答案
- Unit 5 同步練習(xí)人教版2024七年級英語上冊
評論
0/150
提交評論