LoadRunner設(shè)置檢查點(diǎn)的幾種方法介紹 《轉(zhuǎn)載》
前段時(shí)間在群里跟大家討論一個(gè)關(guān)于性能測(cè)試的問題,談到如何評(píng)估測(cè)試結(jié)果,有一個(gè)朋友談到規(guī)范問題,讓我頗有感觸,他說他們公司每次執(zhí)行壓力測(cè)試的時(shí)候,都要求腳本中必須有檢查點(diǎn)存在,不然測(cè)試結(jié)果將不被認(rèn)可,這是他們公司的規(guī)范。其實(shí),在做壓力測(cè)試過程,我們很容易忽略很多東西,而且隨著自身的技術(shù)演變,我們很容易去丟失掉一些很好的習(xí)慣,當(dāng)我們?cè)倥龅竭@些問題的時(shí)候,我們才發(fā)現(xiàn)其實(shí)是我們太粗心大意了,所以說好的習(xí)慣要保持。這次我剛好也要接手一些性能工作,因此就如何規(guī)范設(shè)置檢查點(diǎn)來談?wù)勔恍┗镜牧鞒毯头椒ā?/span>
使用LoadRunner做壓力測(cè)試,大致如下幾個(gè)流程:
1、明確測(cè)試目標(biāo)
2、錄制測(cè)試腳本
3、腳本優(yōu)化、調(diào)試
4、場(chǎng)景運(yùn)行
5、分析測(cè)試結(jié)果
當(dāng)然這里都是概況性的標(biāo)題,但從這里我們可以明確的是測(cè)試腳本是整個(gè)壓力測(cè)試過程中的重點(diǎn)步驟,如果測(cè)試腳本都不能確保正確與否,后面的測(cè)試過程就無(wú)從說起了。很多時(shí)候我們把腳本調(diào)試就簡(jiǎn)單的認(rèn)為是腳本回放沒有錯(cuò)誤就認(rèn)為腳本是沒有問題的,這當(dāng)然不能這么肯定,腳本調(diào)試是一個(gè)非常嚴(yán)謹(jǐn)?shù)倪^程,我大致歸納如下幾步:
1、明確每一行腳本的作用,也就是說每一行腳本執(zhí)行的功能是什么;
2、刪減不需要的腳本語(yǔ)句,比如在錄制過程由于LR默認(rèn)設(shè)置導(dǎo)致錄制之后出現(xiàn)很多冗余的腳本,這些個(gè)腳本對(duì)我們的測(cè)試過程沒有用途的應(yīng)該刪除掉,至于哪些是冗余就要具體分析了,所以說腳本錄制完之后要分析腳本運(yùn)行的過程,方能理解腳本執(zhí)行的用途,不然在后面施壓時(shí)運(yùn)行錯(cuò)誤,就會(huì)開始到處找問題,而又找不出問題;
3、查找存在的關(guān)聯(lián)并進(jìn)行相關(guān)設(shè)置
4、設(shè)置檢查點(diǎn),設(shè)置檢查點(diǎn)的目的就是為了驗(yàn)證頁(yè)面每次運(yùn)行之后是否正確,設(shè)置檢查點(diǎn)的過程總要通過不能的回放來進(jìn)行驗(yàn)證檢查點(diǎn)設(shè)置是否正確。
5、通過測(cè)試目標(biāo)明確腳本執(zhí)行的目標(biāo)事務(wù),并添加事務(wù);
6、對(duì)需要進(jìn)行并打操作的功能設(shè)置集合點(diǎn)
7、根據(jù)實(shí)際情況設(shè)置ThinkTime
8、在以上所有腳本調(diào)試步驟完成之后,設(shè)置迭代次數(shù),通過在Vuser中設(shè)置多次迭代來驗(yàn)證腳本在多次循環(huán)運(yùn)行時(shí)是否存在錯(cuò)誤
注意:在Vuser中運(yùn)行和回放腳本的過程,要密切關(guān)注replay log,也就是回放日志,很多問題通常都暴露在回放日志中,只不過我們沒有認(rèn)真去檢查,所以沒發(fā)覺。因?yàn)榇蠖鄶?shù)情況是我們?cè)诨胤拍_本之后只觀察回放日志中有沒有紅色的錯(cuò)誤提示信息,如果沒有我們就認(rèn)為我們的腳本是ok的,其實(shí)不然,很多時(shí)候一些隱藏的錯(cuò)誤就在回放日志中可以被發(fā)現(xiàn),比如回放日志中的Warning信息,也就是警告信息,這些信息一旦你不去理會(huì)它,它將在場(chǎng)景運(yùn)行過程中開始頻繁暴露出來,而在場(chǎng)景中報(bào)錯(cuò)之后我們就認(rèn)為可能是系統(tǒng)有問題或者是測(cè)試過程存在其他問題等等,而很難去考慮到是腳本的問題,是腳本在Vuser中調(diào)試就存在的問題。還有的時(shí)候一些問題在一次腳本回放中就不能被發(fā)現(xiàn),他需要通過Vuser中設(shè)置多次迭代才能在回放日志暴露出問題來,所以說我們通常的思維就是一旦測(cè)試腳本沒有一次回放沒有出現(xiàn)錯(cuò)誤,就去場(chǎng)景中運(yùn)行,結(jié)果在場(chǎng)景中哪怕是運(yùn)行10個(gè)用戶都還會(huì)報(bào)錯(cuò),這就是問題的根源所在。
下面還是重點(diǎn)說說檢查點(diǎn)吧,三種常用的文本檢查web_reg_find的方法:
1、 將腳本切換到樹結(jié)構(gòu),在page view頁(yè)面上找到你要check的文本內(nèi)容, 并執(zhí)行鼠標(biāo)右鍵,選擇Add a text check.
2、 通過Vuesr界面去設(shè)置檢查點(diǎn),如圖所示:
3、將腳本切換回代碼界面, 在光標(biāo)閃爍的上行,添加如下的代碼:
添加的代碼根據(jù)你檢查的方式不同而不同, 你可以選擇其中之一即可。
代碼一:
web_reg_find("Text=Payment Details",LAST);
注:“Payment Details” 為你要檢查的文本;
腳本執(zhí)行到此處,若在頁(yè)面上找到了這幾個(gè)字符串,那腳本繼續(xù)執(zhí)行下去;若沒有找到,腳本將在此報(bào)錯(cuò)并且結(jié)束。
代碼二:
web_reg_find("Text=Payment Details", "SaveCount=para_count", LAST); //check 的函數(shù)
這里是要運(yùn)行的頁(yè)面腳本
if (atoi(lr_eval_string("{para_count}"))>0) //驗(yàn)證是否找到了頁(yè)面上的要檢查的字符串
lr_output_message("Pass!");
else
lr_output_message("Failed!");
注意:
“Payment Details” 為你要檢查的文本;
腳本執(zhí)行到此處,不管頁(yè)面上是否存在你要檢查的字符串,腳本都不會(huì)報(bào)錯(cuò),而是執(zhí)行下去。
此段代碼將找到的你要檢查的字符串的個(gè)數(shù),存為一個(gè)參數(shù)。 然后在頁(yè)面代碼的后面,通過檢查這個(gè)參數(shù)的值是否大于0,來判斷是否找到了你所要檢查的字符串。
注意:這里的測(cè)試結(jié)果均以200狀態(tài)碼返回,其失敗的結(jié)果將在分析報(bào)告中進(jìn)行分類標(biāo)識(shí)。
代碼三:
web_reg_find("Text=Payment Detdils", "Fail=NotFound",LAST);或者
web_reg_find("Text=Payment Detdils", "Fail=Found",LAST);
以上兩段腳本就比較簡(jiǎn)潔,通過查詢文本內(nèi)容來決定此次運(yùn)行的測(cè)試結(jié)果是否失敗。
注意:在使用檢查點(diǎn)的時(shí)候我們還需要注意一些問題,通常我們都要設(shè)置一些中文檢查點(diǎn),但是LR默認(rèn)不支持,如果你設(shè)置了中文檢查點(diǎn)而報(bào)錯(cuò),那你就應(yīng)該注意了,在錄制腳本的時(shí)候去掉默認(rèn)設(shè)置的UTF-8選擇,如下圖所示:
并且還設(shè)置啟用圖片和文本檢查點(diǎn),如下圖所示:
以上就是設(shè)置檢查點(diǎn)的全過程,設(shè)置檢查點(diǎn)的目的不只是為了驗(yàn)證我們的腳本沒有錯(cuò)誤,而更重要的是一個(gè)規(guī)范問題,如何使得測(cè)試結(jié)果更具有說服力,那就所有的測(cè)試腳本中都添加檢查點(diǎn)設(shè)置。
天貓 軟件自動(dòng)化測(cè)試開發(fā)