上期講到LoadRunner性能測(cè)試腳本編寫檢查函數(shù)巷燥,這期我們來(lái)講講Block(塊)技術(shù)和參數(shù)化荆烈。
Block(塊)技術(shù)
在使用LoadRunner時(shí)經(jīng)常遇到這樣一個(gè)問(wèn)題荷并,如果對(duì)不同的事務(wù)進(jìn)行不同次數(shù)的循環(huán)該怎么處理簸淀?默認(rèn)情況下LoadRunner對(duì)所有的事務(wù)都是統(tǒng)一執(zhí)行的居夹,即雖然有多個(gè)事務(wù),但它們被執(zhí)行的循環(huán)次數(shù)都是一樣的管行,那么LoadRunner如何在一個(gè)腳本中實(shí)現(xiàn)不同事務(wù)不同次數(shù)的循環(huán)或不同百分比的循環(huán)呢厨埋???
案例:假設(shè)在一個(gè)腳本中,想實(shí)現(xiàn)注冊(cè)執(zhí)行3次捐顷,登錄執(zhí)行1次荡陷,查詢執(zhí)行2次,怎么辦迅涮?錄3個(gè)腳本废赞?每個(gè)事務(wù)分別在腳本中復(fù)制N次?這樣是可以解決問(wèn)題叮姑,但不是最好的解決辦法唉地,LoadRunner提供了對(duì)業(yè)務(wù)流程的處理方法据悔,即Block(塊)技術(shù)。??
首先耘沼,借用LoadRunner自帶的訂票系統(tǒng)极颓,錄制好這三個(gè)腳本,錄制結(jié)束后群嗤,腳本如圖所示菠隆,包含三個(gè)業(yè)務(wù):注冊(cè),登錄和查詢狂秘。接著骇径,對(duì)腳本中的三個(gè)業(yè)務(wù)的迭代次數(shù)進(jìn)行設(shè)置,這里使用到的是Block(塊)技術(shù)者春。
1.進(jìn)入菜單Vuser→Run-timeSettings破衔,彈出Run-timeSettings對(duì)話框,選擇General→RunLogic選項(xiàng)卡.
2.選擇Run钱烟,插入一個(gè)Block塊晰筛,如圖所示。??
3.選擇Block0忠售,點(diǎn)擊InsertAction按鈕传惠,彈出SelectActions對(duì)話框,如圖所示稻扬,選中要添加的Action卦方,點(diǎn)擊OK按鈕即可。
4.重復(fù)以上操作泰佳,再新建兩個(gè)Block塊盼砍,分別為Block1和Block2,并為這兩個(gè)塊插入對(duì)應(yīng)的Action逝她。
5.將Block外面的Action刪除浇坐,最后得到如圖所示的Block塊。
6.設(shè)置Block properties黔宛。這里有兩種選擇:Sequential和Random近刘。如果選擇Sequential,則可以在下面的Iterations中直接填入數(shù)值臀晃,那么Block中的Action都會(huì)按輸入的次數(shù)執(zhí)行觉渴。如果選擇Random,下面還可以設(shè)置Block內(nèi)各Action執(zhí)行的百分比徽惋。
按照前面的案例案淋,只需要設(shè)置3個(gè)Block,每個(gè)Block中分別插入一個(gè)Action险绘,設(shè)置執(zhí)行次數(shù)分別為3踢京、1誉碴、2即可,設(shè)置完成后瓣距。
整修Block(塊)的設(shè)置完成黔帕,腳本將按期望的業(yè)務(wù)模型運(yùn)行。
值得注意的一點(diǎn)就是業(yè)務(wù)迭代的總次數(shù)=該Block迭代次數(shù)×Number of Iterations旨涝,如圖中Block2中的Search迭代次數(shù)為2×1=2次蹬屹,最終Search這個(gè)業(yè)務(wù)只迭代了2次。
參數(shù)化技術(shù)
所謂腳本參數(shù)化白华,就是針對(duì)腳本中的某些常量,使用參數(shù)來(lái)取代贩耐。參數(shù)中包含很多數(shù)據(jù)源弧腥,數(shù)據(jù)源可以是一個(gè)文本文件也可以是數(shù)據(jù)庫(kù)。當(dāng)不同的Vuser在執(zhí)行相同的腳本時(shí)潮太,分別調(diào)用參數(shù)文件中的數(shù)據(jù)代替這些常量管搪,從而達(dá)到模擬多用戶真實(shí)使用的目的。
參數(shù)化的過(guò)程體現(xiàn)了數(shù)據(jù)驅(qū)動(dòng)的思想铡买,即將測(cè)試腳本與測(cè)試數(shù)據(jù)進(jìn)行分離的思想更鲁。腳本體現(xiàn)測(cè)試流程,數(shù)據(jù)體現(xiàn)測(cè)試案例奇钞。
哪些情況參數(shù)化
工作中為什么要進(jìn)行參數(shù)化呢澡为???
1.借助參數(shù)化可以減小腳本的數(shù)量,如果不進(jìn)行參數(shù)化為了達(dá)到目標(biāo)可能需要拷貝并修改很多個(gè)腳本景埃。??
2.使業(yè)務(wù)更接近真實(shí)的客戶業(yè)務(wù)媒至,每個(gè)虛擬用戶使用不同參數(shù)值來(lái)模擬,這樣可以更好地接近客戶的實(shí)際情況谷徙。
在實(shí)際工作中一般以下情況需要進(jìn)行參數(shù)化:??
日期時(shí)間?
如這類業(yè)務(wù)拒啰,需要訂一張機(jī)票,那么訂票的日期一定是當(dāng)前日期之后完慧,不可能是當(dāng)前時(shí)間之前的日期谋旦,如當(dāng)前系統(tǒng)時(shí)間為2012年8月20日,那么訂票時(shí)一定需要使用20日后期的日期(如訂25日的機(jī)票)屈尼,但是如果到25日之后再來(lái)回放該腳本時(shí)册着,還是發(fā)現(xiàn)腳本無(wú)法正常使用,所以對(duì)于這類情況需要參數(shù)化鸿染。??
唯一性約束??
唯一性約束是指在數(shù)據(jù)庫(kù)中對(duì)于主鍵必須是唯一的指蚜,如果一直使用相同數(shù)據(jù)提交業(yè)務(wù),那么業(yè)務(wù)將無(wú)法完成涨椒。如注冊(cè)業(yè)務(wù)摊鸡,就不能使用相同的數(shù)據(jù)就行注冊(cè)绽媒,因?yàn)閿?shù)據(jù)庫(kù)中會(huì)把注冊(cè)用戶的ID做為主鍵,這樣在測(cè)試過(guò)程中就必須進(jìn)行參數(shù)化免猾,否則業(yè)務(wù)無(wú)法成功是辕。??
數(shù)據(jù)約束??
數(shù)據(jù)約束是指在測(cè)試過(guò)程中要求提交的業(yè)務(wù)數(shù)據(jù)必須是每次都不同,如果提交業(yè)務(wù)中的數(shù)據(jù)一致猎提,那么業(yè)務(wù)將失敗获三。例如銀行業(yè)務(wù),一些銀行業(yè)務(wù)是以報(bào)文的方式發(fā)送的锨苏,在發(fā)送報(bào)頭時(shí)疙教,后面一般會(huì)接一個(gè)6位的動(dòng)態(tài)碼,那么這個(gè)動(dòng)態(tài)碼就必須每次都不一樣伞租,如果寫成一樣贞谓,那么銀行交易業(yè)務(wù)將會(huì)失敗,所以對(duì)于這類數(shù)據(jù)必須進(jìn)行參數(shù)化葵诈。??
緩存數(shù)據(jù)約束
在談緩存數(shù)據(jù)約束之前裸弦,必須先了解數(shù)據(jù)庫(kù)查詢的過(guò)程,數(shù)據(jù)庫(kù)在查詢時(shí)首先使用查詢條件在數(shù)據(jù)庫(kù)進(jìn)行查詢作喘,查詢結(jié)束后理疙,系統(tǒng)需要將查詢到的結(jié)果顯示在頁(yè)面中,那么顯示時(shí)需要先將查詢到的結(jié)果從硬盤中讀取之出泞坦,讀取后將數(shù)據(jù)從硬盤讀到內(nèi)存窖贤,再?gòu)膬?nèi)存讀到緩存,最后將緩存中的數(shù)據(jù)發(fā)送到處理器中進(jìn)行處理暇矫。
但是有一種特殊情況主之,如果每次使用的查詢條件一致時(shí),數(shù)據(jù)庫(kù)中查詢到的結(jié)果就是一致的李根,那么需要處理的數(shù)據(jù)直接已經(jīng)存儲(chǔ)在緩存中槽奕,這樣系統(tǒng)就不需要從硬盤將數(shù)據(jù)讀到緩存,而直接將緩存中的數(shù)據(jù)傳輸?shù)教幚砥髦羞M(jìn)行處理房轿,這樣就節(jié)約了從硬盤讀到數(shù)據(jù)到緩存中的時(shí)間粤攒,而整個(gè)查詢過(guò)程中時(shí)間消耗最多的恰好是從硬盤到緩存的時(shí)間,所以這樣測(cè)試出來(lái)的時(shí)間不是真實(shí)的時(shí)間囱持,這些就出現(xiàn)緩存數(shù)據(jù)約束夯接,所以這種情況也需要進(jìn)行參數(shù)化。