日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

测试最大在线用户数

發(fā)布時間:2024/9/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 测试最大在线用户数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景介紹

在性能測試工作中,有時需要對業(yè)務(wù)系統(tǒng)所能支持的最大在線用戶數(shù)目進(jìn)行評估。這與我們接觸最多的壓力測試不一樣,因?yàn)橛脩粼诰€時只是與服務(wù)器保持連接,并不一定對服務(wù)器有業(yè)務(wù)請求,從而對服務(wù)器不一定會產(chǎn)生壓力。然而,在線用戶數(shù)目并非可以無限增長,當(dāng)在線用戶數(shù)目達(dá)到應(yīng)用服務(wù)器(或者WebLogic等中間件,或者數(shù)據(jù)庫連接池等)的連接數(shù)設(shè)置的極限時,業(yè)務(wù)系統(tǒng)同樣可能會發(fā)生異常,出現(xiàn)新用戶無法登錄,或者老用戶被擠出系統(tǒng),甚至業(yè)務(wù)系統(tǒng)宕機(jī)的情況。因此,對業(yè)務(wù)系統(tǒng)的最大在線用戶數(shù)指標(biāo)進(jìn)行測試是極其必要的。

現(xiàn)有一OA系統(tǒng),需要測試其支持的最大在線用戶數(shù)目。已知當(dāng)使用瀏覽器登錄該系統(tǒng)后,登錄用戶可持續(xù)地保持登錄狀態(tài),即使長時間不做任何操作也不會自動退出系統(tǒng);通過該OA系統(tǒng)的在線用戶數(shù)統(tǒng)計模塊可以詳細(xì)地查看到當(dāng)前在線的用戶。

測試方法分析

為了測試被測系統(tǒng)所能支持的最大在線用戶數(shù),需要不斷地使用新用戶帳號進(jìn)行登錄操作,在此同時查看被測系統(tǒng)的在線用戶數(shù)目以及系統(tǒng)的響應(yīng)情況。

在新增登錄用戶時需要注意,由于考察的是系統(tǒng)在正常情況下所能支持的在線用戶數(shù)目,而不是系統(tǒng)在并發(fā)壓力下的性能響應(yīng)情況,因此登錄用戶時最好采用單個用戶或少量并發(fā)用戶(如兩個或三個)逐步登錄的形式,不同登錄批次之間最好能有一定時間間隔,務(wù)必使新增登錄用戶的操作對服務(wù)器產(chǎn)生盡可能小的業(yè)務(wù)壓力。

在新增登錄用戶的過程中,需要對被測系統(tǒng)的在線用戶數(shù)目進(jìn)行查看,并著重關(guān)注以下幾個方面:

  • 持續(xù)新增登錄用戶的同時,業(yè)務(wù)系統(tǒng)中的在線用戶數(shù)目是否相應(yīng)地進(jìn)行增長
  • 持續(xù)新增登錄用戶的過程中,系統(tǒng)登錄操作是否產(chǎn)生連接超時的情況,事務(wù)的響應(yīng)時間是否出現(xiàn)大幅度上升的情況,系統(tǒng)登錄事務(wù)是否出現(xiàn)失敗的情況(這需要在腳本中對登錄事務(wù)做檢查點(diǎn)設(shè)置)
  • 持續(xù)新增登錄用戶的過程中,定期地在瀏覽器中手動刷新業(yè)務(wù)系統(tǒng)界面,查看業(yè)務(wù)系統(tǒng)是否出現(xiàn)不可訪問的情況(如內(nèi)部服務(wù)器錯誤、宕機(jī)等)

相應(yīng)地,測試腳本需符合如下形式:

lr_start_transaction("進(jìn)入登錄頁面"); /*此處為進(jìn)入系統(tǒng)登錄界面的腳本*/ lr_end_transaction("進(jìn)入登錄頁面", LR_AUTO);lr_start_transaction("登錄系統(tǒng)");/*登錄腳本--部分1*/
/*對系統(tǒng)登錄進(jìn)行校驗(yàn)*若成功,即新頁面中包含"重新登錄",reLogin_Count>0*若失敗,reLogin_Count=0*/ web_reg_find("Text=重新登錄", "SaveCount=reLogin_Count",LAST );/*登錄腳本--部分2(包含檢查點(diǎn)內(nèi)容部分)*///對系統(tǒng)登錄結(jié)果進(jìn)行檢查 if (atoi(lr_eval_string("{reLogin_Count}")) == 0) { //登錄失敗lr_error_message("登錄失敗!!!--UserName:%s",lr_eval_string("{UserName}"));//勾選Fail Open Transations on lr_error_message//當(dāng)執(zhí)到該lr_error_message時,"登錄系統(tǒng)"的Transaction失敗 }lr_end_transaction("登錄系統(tǒng)", LR_AUTO);

?

以上腳本調(diào)試成功后,通過檢查點(diǎn)函數(shù)及日志信息可以判斷出系統(tǒng)登錄操作已通過腳本回放成功完成。

理論上,只要VuGen采用不同帳號迭代運(yùn)行該腳本,由于只是進(jìn)行系統(tǒng)登錄操作而未進(jìn)行系統(tǒng)注銷或退出操作,業(yè)務(wù)系統(tǒng)中的在線用戶數(shù)將持續(xù)增加。

然而在該OA系統(tǒng)中采用此方法時發(fā)現(xiàn),雖然腳本成功運(yùn)行,但業(yè)務(wù)系統(tǒng)中的在線用戶數(shù)并未增長。這說明LoadRunner與瀏覽器在訪問系統(tǒng)的過程中存在差異性。

腳本及場景設(shè)計

針對上面的問題,通過抓包工具Fiddler2對系統(tǒng)進(jìn)行網(wǎng)絡(luò)流量抓包分析可知:用戶登錄系統(tǒng)后,在未進(jìn)行任何操作的情況下,瀏覽器與服務(wù)器會定期(間隔30秒)進(jìn)行通訊交互。如下圖所示:

這就解釋了為什么用戶在瀏覽器中登錄系統(tǒng)后可以長期地保持在線,而通過腳本成功地進(jìn)行系統(tǒng)登錄后卻無法保持在線狀態(tài);因?yàn)閂uGen不會像瀏覽器那樣定期地與服務(wù)器進(jìn)行通訊交互。

找出其中的差異后,我們便可在VuGen中用腳本模擬瀏覽器的定期交互功能,簡單的實(shí)現(xiàn)方法如下所示。

while(1){web_url("userAction.struts", "URL=http://10.147.15.28:9001/userAction.struts?actionType=refreshDynaInfo","Resource=0","RecContentType=text/html","Referer=http://10.147.15.28:9001/jsp/oa/infocomm/sms/sysShortMsg/sysShortMsgReflesh.jsp", "Snapshot=t4.inf", "Mode=HTML", LAST);web_url("userAction.struts_2", "URL=http://10.147.15.28:9001/userAction.struts?actionType=refreshDynaInfo&time=Mon%20Aug%2012%2015:42:04%20UTC+0800%202013", "Resource=0", "RecContentType=text/html", "Referer=http://10.147.15.28:9001/jsp/oa/infocomm/sms/sysShortMsg/reflesh.jsp", "Snapshot=t5.inf", "Mode=HTML", LAST);lr_think_time(30); //模擬瀏覽器與服務(wù)器30秒間隔的通訊交互 }

那么,將系統(tǒng)登錄腳本和循環(huán)函數(shù)都放入Action中,在VuGen中采用迭代運(yùn)行的方式可行嗎?

雖然新增登錄用戶可以逐個進(jìn)行,即使用VuGen通過Action迭代的形式采用不同帳號逐個地進(jìn)行登錄操作。但由于用戶登錄后需要持續(xù)間隔地與服務(wù)器進(jìn)行通訊交互才能保持在線,而單線程腳本運(yùn)行至while(1)后便進(jìn)入死循環(huán),從而使得Action迭代無效。因此,采用VuGen進(jìn)行Action迭代的方式是不可行的。

正確的做法是,在Controller中采用逐步加載的方式,使各個虛擬用戶獨(dú)立地運(yùn)行,從而保證了各虛擬用戶登錄成功后保持在線狀態(tài)。

在Controller中的具體配置如下所示:

  • Run Logic:Number of Iterations設(shè)置為1
  • Think Time:Replay think time As recorded
  • Continue on error:False
  • Fail open transactions on lr_error_message:True
  • Schedule:Initialize each Vuser just before it runs
  • Schedule:Start 1000 Vusers -- 1 Vuser every 3 Seconds
  • Schedule:Run for 5 minutes

通過以上配置,可以達(dá)到如下效果:

  • 每個Vuser只登錄一次,然后定期30秒與服務(wù)器進(jìn)行一次交互,保持在線狀態(tài)
  • Vuser的登錄操作與定期刷新操作不會對服務(wù)器造成并發(fā)壓力,且符合真實(shí)業(yè)務(wù)場景
  • 逐步緩慢地增加在線用戶數(shù),當(dāng)系統(tǒng)出現(xiàn)異常時即可查看到當(dāng)前的在線用戶數(shù)目

測試方法優(yōu)化

通過以上方法可以測試得到業(yè)務(wù)系統(tǒng)所能承受的“初略的”最大在線用戶數(shù)目。為什么說是“初略的”呢?因?yàn)樵摲椒ㄈ源嬖谌毕?#xff0c;主要體現(xiàn)在如下兩個方面:

  • 該方法只適用于測試期間無他人使用系統(tǒng)的情況。如果測試期間同時有其他用戶登錄系統(tǒng),或者系統(tǒng)中本身已存在在線用戶,則會造成測試得到的結(jié)果不準(zhǔn)確。
  • 該方法忽略了系統(tǒng)穩(wěn)定性對在線用戶數(shù)的影響。舉例來說,也許逐步增加在線用戶數(shù)至500時,系統(tǒng)并沒有發(fā)生異常,但這并不意味著500個用戶長時間處于在線狀態(tài)時系統(tǒng)不會出現(xiàn)異常。

針對以上兩方面缺陷,可以做出如下改進(jìn):

  • 在逐步增加在線用戶數(shù)的時候,定期(比如間隔3秒)查看業(yè)務(wù)系統(tǒng)自身統(tǒng)計的在線用戶數(shù)目,并以該數(shù)據(jù)為測試結(jié)果。
  • 利用之前的方法測試得到業(yè)務(wù)系統(tǒng)“初略的”最大在線用戶數(shù)后,使系統(tǒng)長時間保持該數(shù)量的在線用戶數(shù)目,觀察系統(tǒng)在長時間運(yùn)行期間是否會出現(xiàn)異常;若出現(xiàn)異常后,適當(dāng)減少在線用戶數(shù)目后重復(fù)地進(jìn)行測試,直到系統(tǒng)可以保持長時間地穩(wěn)定運(yùn)行為止,此時對應(yīng)的在線用戶數(shù)目即為業(yè)務(wù)系統(tǒng)所能承受的最大在線用戶數(shù)目。

在本文提到的OA系統(tǒng)中,對鏈接[http://10.147.15.28:9001/countAction.struts?actionType=listOnlineUser] 進(jìn)行請求可以返回得到當(dāng)前系統(tǒng)在線用戶數(shù)目的統(tǒng)計信息。對應(yīng)地,設(shè)計如下腳本,即可實(shí)現(xiàn)對系統(tǒng)實(shí)時在線用戶數(shù)目的查看。

Action() {web_add_cookie("USERORGID=db93a2M11f6719ff92Mf528764d624db129b32c21fbca0cb8d6; DOMAIN=10.147.15.28");while(1){lr_start_transaction("查看在線用戶數(shù)目");web_reg_save_param("OnlineUsers","LB=[在線用戶數(shù)/總用戶數(shù):<font color=\"red\">","RB=</font>]","ORD=2","Notfound=error","Search=Body",LAST);web_url("countAction.struts", "URL=http://10.147.15.28:9001/countAction.struts?actionType=listOnlineUser", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t1.inf", "Mode=HTML", LAST);lr_output_message("當(dāng)前在線用戶數(shù)目:%s", lr_eval_string("{OnlineUsers}"));lr_end_transaction("查看在線用戶數(shù)目", LR_AUTO);lr_think_time(3);}return 0; }

更多內(nèi)容請?jiān)L問我的個人網(wǎng)站:http://52test.org/posts/Evaluate-Largest-Online-Users.html

轉(zhuǎn)載于:https://www.cnblogs.com/stleo/p/Evaluate-Largest-Online-Users.html

總結(jié)

以上是生活随笔為你收集整理的测试最大在线用户数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。