自從N前年手賤寫過一個Loadrunner的C插件后,這幾年經常有莫名其妙的Loadrunner測試事情找上我,耽誤咱自已的事情不說,后面還被某領導當眾批評,說我這玩意是瞎搞,咱的形象分都快減成負數了。上周本來在自已的項目里加班加的好好的,跟兄弟們突擊了一個星期,準備周一正式上線發射,結果周五晚上被領導一個電話抓來北京接手某個土人的Loadrunner測試工作,申辯無效,必須得來。話說咱對Loadrunner理解真的不深,對于這活,我屬于非專業選手,偶爾客串一把,結果還套牢成終身制了,這TMD就是給自已找麻煩啊。唉,做人咋就不能像仔波一樣低調哩。先深刻自我檢討十分鐘。。。。
搞了幾天,從頭到尾又把Loadrunner折騰了一遍,折騰的火蹭蹭直冒啊,踩的坑是一個接一個,誰讓咱老愛不走尋常路呢,一路很受傷,現總結要點如下:
1. LDR 11 新出來的4個G,可以跑在window2008server\window7上,之前的版本(7.5、8.1、9.5)都不行,只能跑在Windows2003Server上,注意9.5可以在windows2008Server裝起來,在腳本開發環境運行沒問題,一打壓力,各種奇怪的錯誤。 2. 現在網上有個很牛的LDR破解,65535個授權,各版本通用,別問我在哪,我不知道,我從來不用盜版軟件的。 3. LDR的file字典有記錄數上限,實測開50個線程大該就20多萬行記錄就不行了,報些奇怪的錯誤(不要問我是什么錯誤,你看了就明白了,因為看不懂。。。),然后自以為很牛,寫了一個讀大數據的C插件(又是C插件),加載150M的文件,開10個線程就不正常了,開5個線程正常,似乎LDR的運行線程有一些奇詭的限制,而且是總數控制,具體情況不清楚,以后繞開就行了,想死的自個跳進去慢慢研究。 4. LDR的日志可以關閉,開關對性能影響巨大 5. LDR的日志有嚴重漏消息的情況,別問我咋漏的,我也沒整明白,反正后面又寫了一個向OutputDebugString輸出的C插件(死性不改),確定有這個問題 6. LDR的壓力運行界面上,如果運行次數太少,比如小于20,會在Passed里,直接忽略掉這幾個,LDR各種坑啊。 7. LDR的字典有幾種模式,順序、唯一、隨機等幾種。看上面的說明就知道了,不知道的就打日志出來看。只有一個建議,不要用他們自已的日志,漏的亂七八糟。 8. 要測試1000W行記錄,每條記錄有關鍵字段不一樣,可以設置unique number 型字典 BlockSize*threadnum=1000W就可以了,后面還有兩個參數相關的設置,over value注意要設成 abort user,表示說讓測試線程搞完就睡了,不再傻加班。上面一個參數設成”each occurrent” 表示全局所有線程共用。 9. LDR有一個屬性列表,可以把腳本一些常用的參數設置在里面,比如中間件地址,端口之類的,比較好用,可以少改腳本或不改腳本 10. LDR用了幾個開源庫,如ssl的那個庫,可能跟應用系統有沖突,導致lr_loaddll加載不成功,把應用目錄下的DLL覆蓋到LDR目錄下的同名DLL。 11. LDR跑在16Cpu的機器上,取一次字典空轉,性能在25W/秒左右。 12. LDR的C Vuser腳本,變量定義必須在語句的前面,是最早的C語言語法,這個地方小郁悶了一會,我是習慣了寫C++風格的,所用即申明。解決方案就是加{},把變量的生命周期限制住。 13. UEStuio在打開1.5G大文件后,把 , 改成”,” ,選保存,然后發現有些地方自動把第一個引號變成別的值了,錘子,不帶這樣玩人的。然后又牛B轟轟的用C寫了一個轉換程序,發現fgets和fputs會導致同樣問題,最后用二進制自解析文件格式解決了。莫名你個奇妙啊。后面還發現feof,在判斷文件里有0x1a時,會認為是文件終止了,可是我后面還有很多很多數據,這是咋地說的。
在深圳沒呆兩天,又一被召去京城干了一星期這種破活,補充續集如下:
14.LDR的字典支持多種模式,比如文件和ODBC,如果是文件模式,可以配多個字段。不同的字典可以指到同一個字典文件,只要把字段區別開就行了。LDR的文件字典分隔符可以是Tab或空格等,可設置
15.LDR有一個百分比模式,可以把多個測試案例配成不同的比例,需要注意的是,如果有3個以上的測試腳本,在調腳本時,改好一個另兩個會自動重新分配,通常這不是我們想要的。試了很多次,我的解決方案是在列表中排個序,從第一個的百分比改起,就不會有這問題,很奇怪的使用方式。
16.有一堆機器要一起做壓力時,只要設一臺為主機,其它機器在主里面添加上去就可以了,測試案例和字典會自動同步過去。需要注意的是,如果在腳本里load了其它的DLL,則需要把這些DLL放到測試從機的path路徑能訪問到地方,要是省事,就寫個批處理,全部復制到從機的windows\system32下。LDR有個好用的技巧,如果有多臺機器,可以寫在notepad,然后全選復制,在LDR加機器的地方,可以直接復制,一次性添加,我用這個功能,一次性加了20臺Loadrunner測試機出來。這個功能絕對是亮點。LDR真是個奇怪的軟件,有些地方做的很細致,有些地方很粗暴。
192.168.61.200
192.168.61.203
192.168.61.204
192.168.61.205
192.168.61.206
192.168.61.207
192.168.61.208
192.168.61.209 17.還有一個小技巧可以記一下。如果要把一個測試案例分成20個機器一起壓,字典又不一樣,如何快速創建測試案例?我的方法是寫一個批處理,一次性把原來的測試案例復制出20份,然把里面幾個關鍵文件改名就行了(*.ci;*.usr;*.prm)。這種方式改完以后,重新開發,會發現字典表為空,這時,隨便按個空格,再保存一下,再看就有字典了,有點奇怪,但是好用,省事。
18.多機測試時,負載是按機器平均分配的,無法跟據機器的配置自動選擇,只能跑起來以后手工加,這點要注意一下。
完了,就這些。折騰了幾天,就研究出這點東東。最郁悶的是全程上不了網,連MSDN都沒裝,硬是靠窮舉法解決了這一堆問題。
前面幾天天天加班到晚上10點才出來吃飯,冒雪在北京的小胡同里找吃食,加班加點,忍饑挨餓也就罷了,關鍵是出來還找不到吃飯地,找不到了吃飯地也就罷了,關鍵是零星還開著的店都是農民工餐廳,是農民工餐廳也就罷了,關鍵是吃的東西都感覺是地溝油做的,是地溝油也就罷了,關鍵各著難吃,聞著味飽了,飽了也就罷了,關鍵是回到賓館發現還是很餓,外面又在下雪,只好把前一天準備扔的一個超難吃的餅干再從垃圾袋里翻出來嚼嚼,整個一天就這樣的悲劇結束了
來北京第二天夜里便開始下雪,早晨起來一看,雪還沒停,整個世界已經被銀妝素裹。話說北京下雪的早晨真很有味道,特別是街道旁古老莊嚴的建筑的仕立在滿天風雪里,靜默無語,有一種獨特的滄桑美感。這時突然某個高墻大院的朱紅大門被緩慢推開,漏出一道小縫,隱約可見院內的奇花異草,一名黃裳少婦牽著一個小臉凍的紅撲撲的可愛小丫頭,從門內出來,見著我一楞,然后低頭淺淺一笑:”老爺,您可算回來了,咱們妍寶寶可一直在門口等著您的稻香村哩”。哈哈
|