編程生活

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            113 隨筆 :: 0 文章 :: 18 評(píng)論 :: 0 Trackbacks

                  很多時(shí)候,我們需要直接對(duì)Jboss下的java應(yīng)用服務(wù)系統(tǒng)進(jìn)行性能測試。這種服務(wù)有些是基于Jboss Remoting實(shí)現(xiàn),以socket的方式
          提供接口函數(shù),并沒有一個(gè)可以看的見的界面可供測試。在這種情況下,有的測試組會(huì)選擇,開發(fā)一個(gè)簡單的web頁面,調(diào)用這個(gè)
          服務(wù),然后用loadRunner制作web腳本進(jìn)行測試。
                  這種設(shè)計(jì)方案的缺陷在于,性能測試的壓力會(huì)被堵在web層這里,無法測出服務(wù)端的準(zhǔn)確性能,甚至可能web服務(wù)器的資源已經(jīng)
          耗盡,服務(wù)端還完全沒達(dá)到最大吞吐量。要解決這個(gè)問題,只有使用LoadRunner直接調(diào)用服務(wù)端的接口,減少中間環(huán)節(jié)的干擾。
                  首先,請(qǐng)大家安裝LoadRunner8.1以上版本,因?yàn)?.1支持jdk1.5版本,現(xiàn)在很多應(yīng)用都是在jdk1.5的框架下開發(fā)的。注意,8.1并
          不支持jdk1.6,所以請(qǐng)安裝1.5版本。
                  打開Vuser Generator,新建一個(gè)java Vuser協(xié)議的腳本。新腳本會(huì)自動(dòng)創(chuàng)建一個(gè)class和3個(gè)函數(shù):init、action、end。這時(shí),大家先
          Compile一下,如果沒有錯(cuò)誤,再繼續(xù)。如果報(bào)錯(cuò),看看你的jdk版本。
                  先把腳本保存在本地的文件夾中。然后,把調(diào)用服務(wù)所需要的一些jar文件,也拷貝到腳本目錄里面。注意,一般調(diào)用遠(yuǎn)程Jboss
          服務(wù)時(shí),都是需要一些描述接口函數(shù)類型的jar文件。另外,建議先使用eclipse,開發(fā)一個(gè)測試的框架類,通過這個(gè)框架,可以輕松的
          調(diào)用指定服務(wù)器的指定接口服務(wù)的指定方法,從而降低LoadRunner腳本編寫的難度。
                  jar文件準(zhǔn)備好以后,點(diǎn)擊toolbar上的“java function”按鈕,然后點(diǎn)擊“location”,把你需要的jar文件添加進(jìn)來。這時(shí),就能看到j(luò)ar
          文件中的所有對(duì)象列表,以及對(duì)象的屬性和方法。
                  回到腳本編輯窗口,我們可以直接遵照J(rèn)ava的語法,編寫腳本代碼,在代碼中,可以對(duì)剛才引入的java對(duì)象進(jìn)行面向?qū)ο蟮木幊蹋?br /> 比如下面的代碼:

          com.Testing.ServiceCaller caller;
          caller 
          = new com.Testing.ServiceCaller ();
          caller.init(
          "192.168.0.1:4446""ServiceName");
          caller.call(
          "methodName" ,  "paras");


          在這里寫腳本,幾乎和寫java代碼一模一樣。我們可以完全引用jar文件的各種對(duì)象,同樣,也可以使用java ee框架中的各種對(duì)象,
          LoadRunner對(duì)java的支持真是非常的好。
          同時(shí),LoadRunner也提供了一些好用的函數(shù),方便大家準(zhǔn)備測試參數(shù)、輸出測試結(jié)果,比如:

          int orgId = lr.eval_int("2");
          lr.error_message (
          "出錯(cuò)嘍");


          這些以lr開頭的方法,參考文檔在幫助中寫的很清楚。比如lr.eval_int就是把字符型變量轉(zhuǎn)換成int型,lr.error_message 是輸出錯(cuò)誤的
          提示,我們可以在代碼中加入數(shù)據(jù)正確性的檢查邏輯,這樣在執(zhí)行性能測試的時(shí)候,如果出錯(cuò),就能很清楚的看到。

          Loadrunner對(duì)java支持非常好,但是,在實(shí)際操作中,出現(xiàn)了一個(gè)新問題:如果要引用jar文件,需要把jar文件拷貝到當(dāng)前腳本的目
          錄下。如果我們?yōu)樾阅軠y試開發(fā)了一個(gè)測試框架,就需要把框架類的jar文件拷貝到每個(gè)腳本的目錄下,這樣做顯然不合理,因?yàn)?br /> 同一文件保存多份拷貝,很難管理,極易引起版本混亂。
           我們需要把測試框架的jar文件,放在一個(gè)統(tǒng)一的地方,讓每個(gè)測試腳本都能自動(dòng)找到,這樣才能解決問題。開始,我準(zhǔn)備利用
          java VM運(yùn)行環(huán)境的ClassPath來解決。首選,在環(huán)境變量的ClassPath中增加一個(gè)目錄,比如“d:\lib”。然后把測試框架的jar文件拷貝
          到這個(gè)目錄,運(yùn)行腳本,失敗!提示找不到指定的類。
          之后,我修改了環(huán)境變量ClassPath的值,把jar文件的完整路徑添加進(jìn)去,例如“d:\lib\testBase.jar”,再次運(yùn)行腳本,成功!似乎java
          的classPath并不支持目錄,而必須要指定到具體的jar文件。這個(gè)問題困擾了我很久,如果有java的高手請(qǐng)指點(diǎn)一下。
          雖然設(shè)定環(huán)境變量,可以解決這個(gè)問題,不過以后如果需要增加一個(gè)jar文件,就要修改一次環(huán)境變量,還是很不方便。于是,我
          嘗試把jar文件用winrar解壓,直接把解壓后的目錄保存在d:\lib目錄下面,然后在環(huán)境變量里面只設(shè)定d:\lib,運(yùn)行腳本發(fā)現(xiàn)也能通過!!
          原來系統(tǒng)雖然不能找到j(luò)ar文件,卻能找到目錄中的*.class文件。
          雖然jar文件解壓后的文件比較多,和單獨(dú)的jar文件相比,管理起來有些麻煩,不過最終我還是選擇了這個(gè)方法。或者,大家還可
          以使用另一個(gè)方法:在一臺(tái)電腦上,將測試需要用到的jar文件共享,然后,在編輯腳本時(shí),按下F4進(jìn)入“runtime setting”,在classPath
          中從網(wǎng)絡(luò)中,指向你需要的jar文件。這樣,就需要為每個(gè)腳本都設(shè)定一次classPath。
          posted on 2008-06-05 13:03 wilesun 閱讀(947) 評(píng)論(1)  編輯  收藏

          評(píng)論

          # re: 使用LoadRunner8.1的java Vuser協(xié)議調(diào)用jar文件(轉(zhuǎn))[未登錄] 2012-12-19 15:57 1
          沒啥技術(shù)含量  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 子长县| 岑溪市| 辛集市| 沽源县| 三台县| 葫芦岛市| 宁津县| 拉萨市| 静安区| 额敏县| 汶川县| 灵石县| 昭苏县| 瓮安县| 巩义市| 安远县| 镇远县| 邵东县| 顺平县| 阿瓦提县| 上虞市| 镇康县| 漳平市| 瑞丽市| 包头市| 岳西县| 石阡县| 离岛区| 呼玛县| 武宁县| 轮台县| 舟曲县| 乌兰浩特市| 古田县| 红原县| 东阿县| 扶沟县| 桓台县| 图们市| 莲花县| 泗阳县|