版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。歡迎通路我的部落格 https://blog.csdn.net/smooth00/article/details/75119666
對于Loadrunner,習慣了錄制腳本的初學者們,會覺得通過Java vuser來寫腳本比較陌生,其實看完以下的Loadrunner常用Web函數對比,你就不會覺得Java Vuser有多麼神秘了,而且通過Java寫性能測試腳本的靈活性要遠遠高于C語言(因為Java相對于C要容易的多,而且Java有大量的開源元件和類庫可以供你進行擴充開發,幾乎做到了沒有測試不了的應用以及API接口),進行Java Vuser開發,也比.Net Vuser開發要簡單的多(相較于安裝一堆.Net元件或插件,Java Vuser隻需要引用一下JDK路徑就行,Loadrunner11支援JDK1.6,Loadrunner12支援JDK1.7)。
常用函數 | Java Vuser 協定腳本 | Web-HTML/HTTP協定腳本 |
引用類 或庫檔案 | import lrapi.lr; import lrapi.web; | 通過globals.h檔案引用 |
think_time | lr.think_time(3); | lr_think_time(3); |
transaction | lr.start_transaction("事務"); ...... lr.end_transaction("事務", lr.AUTO); | lr_start_transaction("事務"); lr_end_transaction("事務", LR_AUTO); |
set_option | web.set_option("MaxRedirectionDepth", "0", new String[]{"LAST"}); | web_set_option("MaxRedirectionDepth", "0", LAST ); |
set_user | web.set_user("cluster", //lr.decrypt("58cf7265b1677820107f74"), "cluster", "172.17.2.89:8081"); | web_set_user("cluster", //lr_decrypt("58cf7265b1677820107f74"), |
add_header | web.add_header("Authorization", lr.eval_string("<BasicAuth>")); | web_add_header("Authorization", lr_eval_string("{BasicAuth}")); |
output message | lr.save_string("test","tParam"); lr.output_message("tParam的值為:" +lr.eval_string("<tParam>")); | lr_save_string("test","tParam"); lr_output_message("tParam的值為:%s", lr_eval_string("{tParam}")); |
web_url | web.url("Show status", "URL=http://172.17.2.89:8081/kettle/status/", new String[]{ "Resource=0", "RecContentType=text/html", "Referer=http://172.17.2.89:8081/", "Snapshot=t3.inf", "Mode=HTTP", "LAST"}); | web_url("Show status", "URL=http://172.17.2.89:8081/kettle/status/", "Resource=0", "RecContentType=text/html", "Referer=http://172.17.2.89:8081/", "Snapshot=t3.inf", "Mode=HTTP", LAST); |
web_ submit_data | web.submit_data("executeJob", "Action=http://172.17.2.89:8081/kettle/executeJob/", "Method=POST", "RecContentType=text/html", "Referer=", "Mode=HTTP"}, new String[]{// "ITEMDATA", 不要加這條 "Name=job", "Value=/DZ/job/HYHZ", "ENDITEM", "Name=level", "Value=Debug", "ENDITEM", "Name=rep", "Value=DZHY0620", "ENDITEM", | web_submit_data("executeJob", "Action=http://172.17.2.89:8081/kettle/executeJob/", "Method=POST", "RecContentType=text/html", "Referer=", "Mode=HTTP", ITEMDATA, "Name=job", "Value=/DZ/job/HYHZ", ENDITEM, "Name=level", "Value=Debug", ENDITEM, "Name=rep", "Value=DZHY0620", ENDITEM, |
custom_request | String htmlBody="這裡是body串"; web.custom_request("ViewStreamLogin", "Method=POST", new String[]{ "URL=http:/*.*.cn/login?user=test&passwd=123", htmlBody, "TargetFrame=", | web_custom_request("ViewStreamLogin", "URL=http:/*.*.cn/login?user=test&passwd=123", "TargetFrame=", "Resource=0", "Body=這裡是body串", |
submit_form | web.submit_form("authenticate", "Snapshot=t2.inf"}, "Name=user", "Value=root", ENDITEM, "Name=passwd", "Value=2012", ENDITEM, "Name=key", "Value=<OFF>", ENDITEM, | web_submit_form("authenticate", "Snapshot=t2.inf", ITEMDATA, "Name=key", "Value={OFF}", ENDITEM, |
1、以下列出Loadrunner所有的Java LR Common函數:
2、以下列出Loadrunner所有的Java LR Web函數:
特别說明:Java Vuser 是自定義的 Java 虛拟使用者腳本,腳本中可以使用标準的Java語言。這種虛拟使用者一般采用純手工編寫(當然Loadrunner11、12也能支援部分Java錄制,包括Java Applet、Java Application、Java Over HTTP)。Java虛拟使用者适用範圍非常廣,歸納起來主要有兩大類:一類是不太适合錄制的業務功能點的性能測試,例如網頁上Http檔案的下載下傳過程、視訊播放等;另一類是基于Java語言開發的應用系統的性能測試,這類應用更适合采用Java虛拟使用者進行測試。
用Java Vuser實作無法錄制的測試需求,這類測試需求往往關注于對伺服器産生的壓力,重點測試在一定壓力下伺服器的負載情況,為評估、部署、調優系統提供參考。在這類測試工作中,Java的作用僅是一門語言,用于輔助測試人員完成測試程式的開發。在性能測試工作中,不能錄制的測試點很多,主要有以下幾類:
(一)含有控件的Web應用:在Web應用中,很多包含一些插件的浏覽器應用經常不能錄制。這類應用往往涉及很多協定,是以錄制起來不是特别友善。對于這類應用,可以用Java語言調用其功能來完成使用者行為的模拟。
(二)一些和媒體播放、檔案下載下傳等相關的應用:媒體播放或檔案下載下傳等過程的錄制往往不容易控制,如果是應用基于P2P的協定,則會更加複雜。是以,這類測試隻能由測試人員開發虛拟使用者腳本來完成。
(三)用Java Vuser測試基于Java語言的應用系統性能:相比前面,基于Java語言開發的應用系統,在性能測試中采用Java虛拟使用者更顯得“門當戶對”。這類虛拟使用者主要應用在下面兩類測試中:
(1)核心算法或業務的執行效率
對銀行、電信等大型的基于J2EE的架構應用系統中,開發階段的性能測試是必不可少的。為了降低後期遇到性能問題的風險,往往在開發階段進行一些核心業務的性能測試。這些核心業務或要求較高的執行效率,或者要求支援較多使用者的并發。是以,可以利用Java Vuser來測試這些業務的執行效率。
(2)Java應用中不能錄制的業務子產品
很多時候,一些J2EE架構的業務系統用LoadRunner錄制起來不是特别友善,例如一些Java智能用戶端程式。這時可以手工編寫測試代碼,完成測試任務。與非Java應用相比,Java 應用中不能錄制的業務功能更适合采用Java虛拟使用者,因為可以直接對一些方法進行調用。
由于Java語言的強大功能,Java虛拟使用者的應用遠不止上面這些。