在客戶端與服務(wù)器通信過程中,多個請求/響應(yīng)間的數(shù)據(jù)會有相互依賴的關(guān)系。比如上一個請求返回的某些響應(yīng)數(shù)據(jù)在后續(xù)的請求中需要用到。
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)豐南,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108下面是一些典型的例子:
1)比如第一次訪問網(wǎng)站獲取的session id在后續(xù)的請求都會將其傳給網(wǎng)站;
2)服務(wù)器生成token返回給用戶,在后續(xù)的請求中要帶上token;
3)根據(jù)條件查詢某記錄,在查詢結(jié)果集中選擇記錄進行操作(比如刪除)
...
但是有些通信協(xié)議是無狀態(tài)的,不存在上下文相關(guān)性。多個請求/響應(yīng)之間的數(shù)據(jù)不能直接進行傳遞;
并且每次服務(wù)器返回的數(shù)據(jù)不是一成不變的,傳遞的數(shù)據(jù)不能通過硬編碼(寫死)保存來解決。
比如上面三種情況都會產(chǎn)生動態(tài)變化的數(shù)據(jù):
1)session id的生命周期一般在關(guān)閉瀏覽器時就結(jié)束了,每次打開瀏覽器訪問返回的session id并不相同;
2)token也有生命周期,一般也是隨機,無狀態(tài)的;
3)若查詢條件參數(shù)化了或服務(wù)器返回的查詢結(jié)果集改變了,后續(xù)的操作可能會失敗。
在這些情況下,可以考慮將服務(wù)器返回的動態(tài)變化的數(shù)據(jù)保存到某個參數(shù)中,需要時再從中取出。
舉個例子,看電影,看電影過程有如下步驟:
1.購票
2.驗票
3.觀影
每個步驟可以看做一個請求/響應(yīng)。觀眾相當(dāng)于客戶端,影院方相當(dāng)于服務(wù)器。
過程如下圖所示:
觀眾購買的電影票可以看成服務(wù)器返回的響應(yīng)數(shù)據(jù),要驗票通過才能入場觀影。
觀眾購票相當(dāng)于一個請求,驗票是下一個請求,這需要將上一個請求返回的響應(yīng)數(shù)據(jù)(電影票)放在下一個請求中發(fā)送給服務(wù)器處理。
假設(shè)這部電影非常精彩,想重新再看一次,因為電影票只能使用一次,觀眾必須重新購票,才能驗票通過入場;使用第一次購買的電影票入場肯定會被拒之門外。
為了解決這個問題,可以考慮做如下假設(shè):
每次將購買的電影票放入隨身攜帶的LV錢包,并且在放入之前將使用過的票丟棄,以防止入場時掏錯票;入場的時,從錢包中取出票來驗票,這樣就萬無一失了。
將電影票放入錢包中,相當(dāng)于將服務(wù)器返回的數(shù)據(jù)保存起來了,這里錢包就是保存關(guān)聯(lián)數(shù)據(jù)的參數(shù)。
將服務(wù)器返回的數(shù)據(jù)包中滿足條件的數(shù)據(jù)保存到一個參數(shù)中的過程。
怎樣將服務(wù)器返回的數(shù)據(jù)保存起啦,JMeter中可以使用后置處理器來處理關(guān)聯(lián)數(shù)據(jù),常見的方法有:
1、正則表達式提取器
2、JSON提取器
需要關(guān)聯(lián)數(shù)據(jù)的特征
怎樣確定哪些數(shù)據(jù)是需要做關(guān)聯(lián)的,可以從關(guān)聯(lián)數(shù)據(jù)的特征來識別出這些數(shù)據(jù)。關(guān)聯(lián)數(shù)據(jù)有如下三個特征:
1.服務(wù)器返回
需要關(guān)聯(lián)的數(shù)據(jù)一定是從服務(wù)器返回的。
客戶端輸入的數(shù)據(jù)不需要進行關(guān)聯(lián),比如輸入的用戶名與密碼。此特征是必選的。
2.數(shù)據(jù)會再次發(fā)送給服務(wù)器處理
保存上一個請求響應(yīng)的數(shù)據(jù),其目的是為了將其用于下一個請求中,否則保存起來沒有意義。
此特征是可選特征,也就是說不再次發(fā)送也是可以保存數(shù)據(jù)進行關(guān)聯(lián)的。
3.數(shù)據(jù)動態(tài)變化
上一個請求響應(yīng)的數(shù)據(jù)若不會動態(tài)變化,完全可以寫死在腳本中,不需要花力氣額外保存再次取出。
正是由于每次返回的數(shù)據(jù)動態(tài)變化,我們需要根據(jù)某種規(guī)則將這些動態(tài)變化的數(shù)據(jù)找出來保存,
然會取出實際返回的數(shù)據(jù)。但此特征也是可選的。不動態(tài)變化一樣可以保存進行關(guān)聯(lián),但意義不大。
JMeter通過內(nèi)嵌的Apache Jakarta ORO軟件來解析處理正則表達式。
Jakarta-ORO是用于處理文本的一組Java類,是目前功能最全性能最好的正則表達式API之一,它提供兼容Perl5類型的正則表達式。
單行模式與多行模式
元字符
擴展正則表達式
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。