LoadRunner JAVA Vuser協議開發效能測試指令碼
引言: 最近效能測試專案中,尤其在測試應用系統介面時,經常用到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虛擬使用者的應用遠不止上面這些,讀者可以慢慢挖掘。
眾所周知,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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LoadRunner長連線效能測試指令碼指令碼
- loadrunner 資料庫測試指令碼資料庫指令碼
- Jmeter TCP協議效能測試JMeterTCP協議
- [Mysql]效能測試指令碼MySql指令碼
- python效能測試指令碼Python指令碼
- JN專案-效能測試loadrunner
- 用LoadRunner編寫socket應用的測試指令碼指令碼
- DDS協議解讀及測試開發實踐協議
- iOS17 效能測試指令碼iOS指令碼
- LoadRunner效能測試工具---(一)使用流程
- 測試開發之網路篇-常用服務協議協議
- LoadRunner效能測試工具---(三)測試結果樣例分析
- [JPT_05] 效能測試-指令碼開發(登入&隨機購買業務)指令碼隨機
- 效能自動化測試工具Loadrunner篇
- 測試開發之效能篇-效能測試設計
- Appium iOS 測試指令碼開發實戰APPiOS指令碼
- [python] request 介面測試自動化指令碼轉化為 [locust] 效能測試指令碼Python指令碼
- Linux系統效能測試指令碼(unixbenchnmon)Linux指令碼
- 如何用 JMeter 編寫效能測試指令碼?JMeter指令碼
- 效能測試——壓測工具locust——指令碼初步編寫指令碼
- 效能測試工具LoadRunner知識點總結
- 使用LoadRunner進行壓力測試時如何選擇要錄製的協議?協議
- 測試開發之自動化篇-Appium指令碼開發APP指令碼
- 用Python開發自動化測試指令碼Python指令碼
- 測試開發之效能篇-JMeter介面測試JMeter
- Shell指令碼 | 效能測試之啟動時間指令碼
- 搬瓦工 VPS 效能一鍵測試指令碼指令碼
- 小議測試驅動開發
- 如何學習效能測試?LoadRunner小技巧集錦
- LoadRunner編寫Socket協議指令碼方法(XML/16進位制報文data.ws格式)協議指令碼XML
- 面向開發的測試技術(二):效能測試
- 3.5.2 使用Badboy錄製Web效能測試指令碼Web指令碼
- lib庫實現loadrunner驅動mysql效能測試MySql
- 介面自動化測試:Thrift框架RPC協議客戶端開發框架RPC協議客戶端
- JMeter做效能測試(1)-效能壓測指令碼的生成以及完善和增強JMeter指令碼
- 51Testing作品系列:效能測試從零開始——LoadRunner入門
- LoadRunner指令碼評審Checklist指令碼
- 效能測試工具LoadRunner你所不知道的內幕