LoadRunner JAVA Vuser協議開發效能測試指令碼

idba發表於2009-10-02
引言: 最近效能測試專案中,尤其在測試應用系統介面時,經常用到JAVA VUSER這個協議,請見以下文章,希望對有需要的同學們提供幫助與支援!

眾所周知,Java語言是一門非常適合網路開發的語言,用 Java語言進行效能測試指令碼開發將會大大提高測試開發效率。LoadRunner中提供了對Java虛擬使用者的支援。Java虛擬使用者依託於JDK,這大大擴充了LoadRunner的指令碼開發功能。測試人員既可以用Java虛擬使用者來測試基於Java的應用系統的效能,又可以使用Java語言的強大開發指令碼功能來測試其他平臺的系統效能。

本章將和讀者一起探索LoadRunner的Java世界,重點討論如何開發Java自定義的虛擬使用者指令碼。本章主要內容如下:

n  認識Java虛擬使用者

n  Java指令碼開發基礎

n  Java演算法測試案例

7.1  認識Java虛擬使用者

7.1.1  Java虛擬使用者協議

Java虛擬使用者指令碼主要有Java Vuser、Corba-Java、RMI-Java、EJB等型別。這些型別的虛擬使用者指令碼均可以用Java語言來手工編寫。下面將對各類Java虛擬使用者簡單地進行介紹。

Java Vuser

Java Vuser是自定義的Java虛擬使用者指令碼,指令碼中可以使用標準的Java語言。這種虛擬使用者不可以錄製,只能採用純手工編寫,其適用範圍和C Vuser一樣,非常廣泛。

本章主要探討Java Vuser的開發方法。

Corba-Java

Corba-Java型別的虛擬使用者主要用來測試用Java編寫的、使用Corba應用程式或小程式的效能,使用者可以先執行VuGen錄製的指令碼,然後使用標準的Java庫函式以及LoadRunner特有的Java方法來增強該指令碼。

RMI-Java

RMI-Java 虛擬使用者適用於測試RMI(遠端方法呼叫)Java應用程式或小程式。選擇RMI-Java 使用者進行錄製,VuGen可以建立對應的Java指令碼。完成錄製後,可以使用JDK或自定義類,通過標準的Java程式碼來增強或修改指令碼,還可以通過特定於LoadRunner的Java方法增強該指令碼。

EJB

EJB虛擬使用者專門用於測試Enterprise Java Beans物件。採用EJB協議,VuGen會自動建立指令碼以測試EJB功能,無需錄製或程式設計,這和標準的Java Vuser明顯不同。

在使用EJB協議型別的虛擬使用者生成指令碼前,需要指定 JNDI屬性和關於應用程式伺服器的其他資訊。LoadRunner的EJB檢測器首先掃描應用程式伺服器並確定哪些EJB可用;接著選擇要測試的 EJB,LoadRunner將生成要測試每個EJB方法的指令碼,併為每個方法建立事務,便於度量其效能並找出問題。

需要注意的是,建立EJB虛擬使用者測試指令碼必須在應用程式伺服器主機上安裝LoadRunner EJB檢測器,而且檢測器必須處於活動狀態。EJB檢測器是一個獨立的代理程式,必須將其安裝在要掃描查詢EJB的每一臺計算機上。安裝EJB檢測器前,計算機上還需要安裝有效的JDK環境。

本書中將以Java Vuser為例來講解Java虛擬使用者的開發和使用方法。Corba-Java、RMI-Java、EJB、Jacada Vuser等型別的虛擬使用者使用方法可以參考LoadRunner的聯機幫助手冊,但是其手工指令碼的開發方法與Java Vuser是一樣的。

在“新建虛擬使用者”對話方塊中的“自定義”或“全部協議”類別下選擇“Java Vuser”即可建立空的Java Vuser指令碼,如圖7-1所示。

在自動生成的指令碼中,vuser_init、 vuser_end部分沒有任何內容,Actions部分生成的指令碼如圖7-2所示。對於Java型別的虛擬使用者,可以編輯Actions類,而 init、end部分則不可以進行編輯。在Actions類中,有三個方法init、action和end,通常在init方法中編寫初始化程式碼、在 action方法中編寫業務流程、在end方法中編寫諸如釋放資源之類的程式碼。

Java Vuser指令碼中可以放置任何標準Java程式碼,這也是Java虛擬使用者的魅力所在。

7.1.2  Java虛擬使用者適用範圍

LoadRunner完全支援C語言,原則上可以用C語言實現任何想要錄製的功能。但是C語言的特點決定了這樣做是不現實的:一是效能測試指令碼開發成本非常高;二是很多企業的測試人員開發基礎不好。因此,效能測試開發多選用C++、C#、Java等面嚮物件語言——因為這類語言既有成熟的整合開發工具,又有龐大的類庫來支撐,測試指令碼開發速度會更快。下一章將重點介紹如何用.NET來開發效能測試指令碼。

Java虛擬使用者適用範圍非常廣,歸納起來主要有兩大類:一類是不太適合錄製的業務功能點的效能測試,例如網頁上Http檔案的下載過程、視訊播放等;另一類是基於Java語言開發的應用系統的效能測試,這類應用更適合採用Java虛擬使用者進行測試。

用Java Vuser實現無法錄製的測試需求

這類測試需求往往關注於對伺服器產生的壓力,重點測試在一定壓力下伺服器的負載情況,為評估、部署、調優系統提供參考。在這類測試工作中,Java的作用僅是一門語言,用於輔助測試人員完成測試程式的開發。

在效能測試工作中,不能錄製的測試點很多,主要有以下幾類:

l  含有控制元件的Web應用

在Web應用中,很多包含一些外掛的瀏覽器應用經常不能錄製。這類應用往往涉及很多協議,因此錄製起來不是特別方便。

對於這類應用,可以用Java語言呼叫其功能來完成使用者行為的模擬。

l  一些和媒體播放、檔案下載等相關的應用

媒體播放或檔案下載等過程的錄製往往不容易控制,如果是應用基於P2P的協議,則會更加複雜。因此,這類測試只能由測試人員開發虛擬使用者指令碼來完成。

用Java Vuser測試基於Java語言的應用系統效能

相比前面,基於Java語言開發的應用系統,在效能測試中採用Java虛擬使用者更顯得“門當戶對”。這類虛擬使用者主要應用在下面兩類測試中:

l  核心演算法或業務的執行效率

對銀行、電信等大型的基於J2EE的架構應用系統中,開發階段的效能測試是必不可少的。為了降低後期遇到效能問題的風險,往往在開發階段進行一些核心業務的效能測試。這些核心業務或要求較高的執行效率,或者要求支援較多使用者的併發。因此,可以利用Java Vuser來測試這些業務的執行效率。

l  Java應用中不能錄製的業務模組

很多時候,一些J2EE架構的業務系統用 LoadRunner錄製起來不是特別方便,例如一些Java智慧客戶端程式。這時可以手工編寫測試程式碼,完成測試任務。與非Java應用相比,Java 應用中不能錄製的業務功能更適合採用Java虛擬使用者,因為可以直接對一些方法進行呼叫。

由於Java語言的強大功能,Java虛擬使用者的應用遠不止上面這些,讀者可以慢慢挖掘。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-615950/,如需轉載,請註明出處,否則將追究法律責任。

相關文章