1跌帐、虛擬用戶狀態(tài):
Down:關(guān)閉绊率, Vuser處于關(guān)閉的狀態(tài)滤否。
pending:掛起最仑,Vuser已經(jīng)準(zhǔn)備好了泥彤,等待可用的負(fù)載生成器的調(diào)用。
Init:正在初始化吟吝,Vuser正在登陸遠(yuǎn)程計(jì)算機(jī)(負(fù)載生成器)剑逃。
Ready:就緒,已經(jīng)執(zhí)行執(zhí)行完腳本的初始化代碼梆奈,可以運(yùn)行亩钟。
Run:運(yùn)行鳖轰,Vuser正在負(fù)載生成器中運(yùn)行。
Rendevous:集合點(diǎn)焰轻,Vuser運(yùn)行到了集合點(diǎn)的位置昆雀,正在等待Loadrunner釋放。
Pass:通過(guò)揩懒,Vuser運(yùn)行完成已球,并且通過(guò)。
Failed:失敗智亮,Vuser運(yùn)行完成,但是運(yùn)行失敗弃舒。
Error:錯(cuò)誤馍忽,Vuser發(fā)生了問(wèn)題(如:Vusermei沒(méi)有登錄到負(fù)載生成器上)遭笋。
Gradual Exiting:逐步退出,Vuser被調(diào)用了stop (窗口的stop按鈕喂窟,duration時(shí)間)命令后央串,正在運(yùn)行當(dāng)前的迭代。
Exiting:退出稳摄,Vuser已經(jīng)結(jié)束運(yùn)行已經(jīng)停止厦酬,正在退出瘫想。
Stop:停止,Vuser被調(diào)用了stop(窗口中的stop按鈕减噪,duration時(shí)間)命令后筹裕。
一窄驹、并發(fā)測(cè)試
1馒吴、并發(fā)測(cè)試的兩個(gè)條件:
1)腳本中要加入并發(fā)點(diǎn)(集合點(diǎn))
2)控制臺(tái)中并發(fā)策略設(shè)置為第一種
2饮戳、步驟
1)錄制腳本(添加檢查點(diǎn)扯罐、集合點(diǎn)、事務(wù))
2)進(jìn)行運(yùn)行時(shí)設(shè)置掩浙、檢查腳本是否成功
3)在controller中進(jìn)行場(chǎng)景設(shè)計(jì)(場(chǎng)景計(jì)劃設(shè)計(jì)秸歧、集合點(diǎn)策略键菱、運(yùn)行時(shí)設(shè)置)
4)運(yùn)行腳本,收集結(jié)果
5)在Anaoysis中進(jìn)行結(jié)果分析
6)編寫測(cè)試報(bào)告
3拭抬、集合點(diǎn)的三個(gè)策略
Pelease when x% of all Vuser arrive at the rendezvous :如果所有集合點(diǎn)等待的用戶數(shù)達(dá)到x%時(shí)侵蒙,系統(tǒng)就會(huì)釋放用戶纷闺,繼續(xù)向下執(zhí)行急但。
Pelease when x% of all running Vusres arrive at the rendezvous:如果所有集合點(diǎn)等待的用戶數(shù)達(dá)到所有正在運(yùn)行用戶的X%時(shí),系統(tǒng)就釋放用戶戒努,繼續(xù)向下執(zhí)行储玫。
Pelease when x? Vusers arrive at the rendezvous:如果集合點(diǎn)等待的用戶數(shù)達(dá)到x個(gè)時(shí)撒穷,系統(tǒng)就釋放用戶裆熙,繼續(xù)向下執(zhí)行。
Timeout?Vuser?between X sec:第一個(gè)Vuser到達(dá)后佳镜,Controller會(huì)計(jì)算等待下一個(gè)用戶時(shí)間蟀伸,每當(dāng)有新的Vuser到達(dá)時(shí)缅刽,計(jì)算器就會(huì)充值為零。在超時(shí)時(shí)間內(nèi)如果下一個(gè)Vuser還未到來(lái)迟蜜,controller會(huì)釋放所有當(dāng)前處于集合點(diǎn)Vuser小泉,而不會(huì)考慮釋放條件是否滿足微姊。
補(bǔ)充點(diǎn):
1兢交、并發(fā)測(cè)試是考察系統(tǒng)的瞬間壓力承受能力配喳,是比較嚴(yán)格的測(cè)試凳干,所以不需要等待時(shí)間(思考時(shí)間救赐、睡眠時(shí)間经磅、think time)预厌。-----忽略think time。
2苗沧、Lr結(jié)果報(bào)告中,顯示了事務(wù)的響應(yīng)時(shí)間的最小值鞠绰、平均值、最大值牺荠、最小值休雌,其中平均值比較重要杈曲。
3、平均方差越行匦浮(趨近于0)担扑,表示事務(wù)的響應(yīng)時(shí)間越接近,代表系統(tǒng)越穩(wěn)定趣钱。
4涌献、90percent:表示執(zhí)行該事務(wù)的90%的用戶都可以在該時(shí)間內(nèi)完成操作。
5首有、100用戶共同執(zhí)行某事務(wù)燕垃,其中1個(gè)用戶執(zhí)行時(shí)間為1000s,99個(gè)用戶執(zhí)行時(shí)間為0.001x,則90 percent和平均值哪個(gè)真實(shí)?---90percent值比較真實(shí)井联。---所以卜壕,讀報(bào)告時(shí),不應(yīng)只看平均值烙常,也要關(guān)注90 percent值轮蜕。
6跃洛、Analysis 不能直接打開腳本生成器中的腳本結(jié)果葱蝗,腳本生成器(VUG)中的腳本只能調(diào)試后點(diǎn)擊“run”來(lái)從replay log中查看結(jié)果。
7悼凑、當(dāng)腳本調(diào)試通過(guò)后---》加入到控制臺(tái)---》打開analysis。
8渔欢、一個(gè)腳本中一般只加入一個(gè)集合點(diǎn),比如一個(gè)腳本錄制的是一個(gè)流程(包含多個(gè)操作)垫挨,則在每個(gè)事務(wù)前都添加一個(gè)集合點(diǎn)。該做法從語(yǔ)法角度沒(méi)有錯(cuò)誤帚屉。但是如果腳本運(yùn)行結(jié)果有問(wèn)題,不好分析牢屋。
9、事務(wù)里面不能包括思考時(shí)間,要么注釋思考時(shí)間迂苛,要么把思考時(shí)間移動(dòng)到事務(wù)之外就漾。
10、驗(yàn)證腳本是否成功的步驟:
a.在腳本生成器中:?jiǎn)窝h(huán)夷野、多循環(huán)舌仍。
b.在控制臺(tái)中:?jiǎn)斡脩魡窝h(huán)铸豁、單用戶多循環(huán)、多用戶多循環(huán)头镊、多用戶多循環(huán)。
11坛芽、性能測(cè)試中阴颖,所有的數(shù)據(jù)包(客戶端和服務(wù)器之間的對(duì)話)分為兩類:請(qǐng)求包和應(yīng)答包胧弛。無(wú)論是請(qǐng)求包還是應(yīng)答包损晤,都分為兩部分header和body部分茵宪。
a.? header中是一些參數(shù)設(shè)置暖哨;
b. body中才是真正要傳輸?shù)男畔ⅰ?
二、檢查點(diǎn)
檢查點(diǎn):主要驗(yàn)證某個(gè)界面上是否存在指定的Text或Image等對(duì)象。
LR中檢查點(diǎn)有兩種:文字和圖片黍聂。
函數(shù):web_find()霸株、web_reg_find()和web_image_check()坡椒。
步驟:
a.定位要檢查的頁(yè)面;
b.插入文字檢查點(diǎn)
c.設(shè)定與檢查點(diǎn)有關(guān)的選項(xiàng)Vuse | Run-time Settings | Preferences
d.查看檢查點(diǎn)是否通過(guò)
注意點(diǎn):
1丈攒、一個(gè)腳本必須加入一個(gè)檢查點(diǎn),否則不清楚腳本的正確性框弛。但是檢查點(diǎn)不宜過(guò)多,一兩個(gè)足矣。
2、一個(gè)腳本中在關(guān)心的操作附近要記得添加事務(wù)猿挚,所以一個(gè)腳本至少一個(gè)事務(wù)室埋。但是一般情況下腌逢,登錄也會(huì)也會(huì)被添加為事務(wù)。
3、關(guān)心的操作就是測(cè)試計(jì)劃中的測(cè)試點(diǎn)妒蔚,如查詢稿件菜皂、購(gòu)買機(jī)票等,只要測(cè)試計(jì)劃搞定,則測(cè)試點(diǎn)確定溯祸。
4、注意:web_find函數(shù)要求:
1)寫在相應(yīng)請(qǐng)求之后
2)開啟run_time settings中開關(guān)
3)檢查的內(nèi)容在AUT界面上拷貝即可
5哩盲、lr_output_message函數(shù)的結(jié)果只顯示在回放日志中,不會(huì)顯示在結(jié)果報(bào)告中。
1、函數(shù)
1)web_find(不常用)函數(shù)的左右邊界:
a.rightof表示左邊界
b.leftof表示右邊界
2)web_image_check函數(shù)(不常使用)兩個(gè)參數(shù)单匣,使用時(shí)選一個(gè)即可鸡号,另一個(gè)參數(shù)可以為空值
a.alt參數(shù):當(dāng)光標(biāo)懸浮在網(wǎng)頁(yè)圖片上時(shí)顯示的名稱(給用戶看的)
b.src參數(shù):該圖片在源代碼中的路徑及名稱(給程序員看到)
注:web_image_check函數(shù)特性與web_find相同:
1)寫在相應(yīng)請(qǐng)求之后
2)開啟run_time settings中開關(guān)
3)參數(shù)內(nèi)容在源代碼中提取
3)Web_reg_find函數(shù)
web_reg_find函數(shù)注冊(cè)一個(gè)請(qǐng)求姓赤,在下一個(gè)操作函數(shù)檢索到的緩存中搜索一個(gè)文本字符串誓斥。
web_reg_find()返回值0或1成畦。
web_reg_find()是否注冊(cè)成功(web_reg_find是注冊(cè)類型函數(shù),它本身并不執(zhí)行),不代表查找的內(nèi)容是否存在。
可利用savecount進(jìn)行判斷。表示查找的內(nèi)容出現(xiàn)的次數(shù)。一般不用。
loadrunner中,帶有reg字樣的函數(shù),稱為注冊(cè)性函數(shù),該類的函數(shù)的特點(diǎn),就是要將函數(shù)寫在相應(yīng)請(qǐng)求之前。在網(wǎng)頁(yè)緩存中尋找匹配。
注意點(diǎn):
? ? ? lr_eval_string函數(shù)的作用:為C語(yǔ)言的函數(shù)和lr的變量起到橋梁的作用茅糜;可以去除lr變量count的實(shí)際值缩赛。
? ? ? ?lr_eval_string函數(shù)后面的括號(hào):后面必須接()旨袒;()里面是字符串,所以用"";""里面不是普通字符串帆精,而是lr變量襟企。Lr要求蔚龙,如果取lr變量的值坑填,則必須要用{}蚪黑。
? ? ? lr函數(shù)(web_或者lr_開頭的函數(shù))中出現(xiàn)的變量稱為lr變量,該類變量不需要再腳本初始位置定義朴译。但是C語(yǔ)言的變量一定要在初始位置定義。
三、基準(zhǔn)測(cè)試(單用戶測(cè)試)
1、如果腳本錄制過(guò)程中遇到頁(yè)面報(bào)錯(cuò)即寡,則放棄錄制善涨,重新錄制葡粒。要保證錄制過(guò)程正確夫壁。
2梅肤、錄制完成的腳本一定要回放。如果正確,再進(jìn)行下一步增強(qiáng)腳本。
3颊郎、基準(zhǔn)測(cè)試步驟:
1)腳本調(diào)試检眯,運(yùn)行通過(guò)
2)放入控制臺(tái)
3)控制臺(tái)的參數(shù)設(shè)置:
a.用戶數(shù)為1
b.虛擬用戶部署不需要設(shè)置(global schedule)
c.Run_time settings中的設(shè)置
? ?------run logic 中設(shè)置5次
? ?------Pacing值:隨機(jī)2-3s
? ?-----Think time值:忽略(原因:?jiǎn)斡脩魧?duì)AUT壓力很小,所以是否存在思考時(shí)間撑螺,意義不大)
d.Pacing值:循環(huán)之間的時(shí)間間隔调鬓。一般情況下2-3s。
e.因?yàn)樵诰€測(cè)試過(guò)程中奏候,如果用戶循環(huán)提交請(qǐng)求镶柱,但是每次循環(huán)之間沒(méi)有試駕間隔,則過(guò)于嚴(yán)格昭抒,不符合實(shí)際的生產(chǎn)環(huán)境。
f.Think time值:步驟之間的時(shí)間間隔黔衡。
補(bǔ)充:
1急迂、當(dāng)run_time settings 中的run logic和duration中都設(shè)置時(shí)口锭,duration優(yōu)先級(jí)高
2腰吟、只要有迭代织阅,就要設(shè)置pacing值羡棵。
3觉至、每次提交的測(cè)試數(shù)據(jù)挂捻,應(yīng)該測(cè)試三次,選取其中的中間值芥驳。