UML软件工程组织

使用LoadRunner来测试BEA TUXEDO
作者:经乾
LoadRunner®是一种预测系统行为和性能的工业标准级负载测试工具。它通过模拟数据以千万计用户来实施并发负载来对整个企业架构进行测试,来帮助您更快的查找和发现问题。
关于LoadRunner®更全面的描述及使用,请参考《LoadRunner 使用手册》或Mercury Interactive 公司提供的联机帮忙文档。本文旨在帮助工程师们掌握使用LoadRunner®来测试BEA中间件产品的方法。

一、如何使用LoadRunner来测试BEA TUXEDO
1. LoadRunner的虚拟用户

LoadRunner使用虚拟用户(Virtual users)来模拟实际用户对业务系统施加压力。虚拟用户在一个中央控制器(controller station)的监视下工作。如下图所示。

在做一个测试方案时,要做的第一件事就是创建虚拟用户执行脚本。LoadRunner提供了Virtual User Generator来录制或编辑虚拟用户脚本。
2. 使用Vugen创建虚拟用户执行脚本
A.从菜单中选择运行Virtual User Generator:

B.创建一个单协议脚本,选择协议类型为"Tuxedo 7"

C.选择工具条中的" "来录制一个脚本,在弹出的窗口中输入Tuxedo客户机程序的可执行文件名(SimpApp.exe),并选择"Record into Action"为Action。如下图所示:

点击"OK"开始录制脚本,这时Vugen就会启动Simpapp.exe,如下图所示,输入WSNADDR,输入字符串(Tuxedo is powerful!)之后,点击TOUPPER,TUXEDO服务器完成请求后把输出字符串(TUXEDO IS POWERFUL!)写到"Output string"中,点击停止录制按钮。

D.编辑Vuser脚本。我们在C中做的所有操作都被录了下来,记录到一个脚本文件中,其内容如下,我们把它存为simpapp。

脚本内容如下:
/* This file is generated by LoadRunner. You may edit it carefully! */
#include "lrt.h"
#include "replay.vdf"

Actions()
{
lrt_tuxputenv("WSNADDR=//172.22.32.25:7110");

lr_think_time(3);
tpresult_int = lrt_tpinitialize(LRT_END_OF_PARMS);
lrt_abort_on_error();
data_0 = lrt_tpalloc("STRING", "", 1);

/* Request STRING buffer 1 */
lrt_strcpy(data_0, sbuf_1);
data_1 = lrt_tpalloc("STRING", "", 1);
tpresult_int = lrt_tpcall("TOUPPER",
data_0,
0,
&data_1,
&olen,
0);
/* Reply STRING buffer 1 */
lrt_abort_on_error();

lrt_tpfree(data_0);
lrt_tpfree(data_1);
lrt_tpterm();

return 0;
}

代码中加粗的函数是LoadRunner对TUXEDO函的二次包装。
E.点击工具栏中的" "按钮来执行我们刚才录制的脚本,确保执行无误。
3. 使用控制器(Controller)来调度虚拟用户
A.从菜单中选择运行Controller:

B.创建一个新的Scenario,选择刚才录制的脚本(simpapp):

点击"OK",弹出Scenario调度界面,如下图所示。在"Quantity"中输入100,表示使用100个虚拟用户。(虚拟用户与购买的LICENSE有关联)

C.点击"Edit Schedule"来编辑压力调度。


D.选择"Runtime settings"来作运行时设置

在Pacing的设置中,"Number of Iterations"用于设置Vusers的Actions被执行的次数;"Start new iteration"用于设置调度器在什么时机迭代执行Vusers的Actions。

"Think Time"用于设置Vusers的反应和思考时间,以尽量做到和正常人一样来施压。"Ignore think time"表示忽略思考时间,这是理想状态,一般不使用。"As recorded"表示按照录制时的实际操作时间。"Multiply recorded think time by"表示Vusers的思考时间是实际录制时间的若干倍。

在"Miscellaneous"中设置一些杂项,如使用进程还是使用线程等。对于TUXEDO,好象只能选进程模式。
E.选择"Start scenario"来开始本次压力测试调度。

执行结果分析如下:

施压时间为5分41秒,Vusers数量为100,一共完成的Actions交易数量为5625笔,平均响应时间为5.561秒,TPS为17.8

二、如何使用LoadRunner来测试BEA Weblogic Server
在本例中,我们将创建一个WebApp(toupper.war),用于调用TUXEDO的TOUPPER服务。为了达到这个目的,需要在Weblogic Server上创建一个WTC服务器,导入TOUPPER服务,同时在Weblogic Server部分一个EJB(toupper.jar),用于封装TOUPPER服务。在TUXEDO一端,需要配置TDOMAIN网关。
部署toupper.war和toupper.jar,测试toupper.war,得如下界面:

点击"TOUPPER",得如下界面:

这表明WTC、Webapp和EJB都工作正常。
1. 录制Weblogic Server测试脚本
A.在Virtual User Generator中选择创建一个新脚本,选择Single Protocol Script,选择Web(HTTP/HTML),点击OK。

点击" "开始录脚本,在URL中输入http://jq:7001/toupper/jsp1.jsp,点击OK。

执行一次TOUPPER操作,停止录制。得如下脚本:


执行一次TOUPPER操作,停止录制。得如下脚本:

点击" ",作一次运行测试,确保脚本执行无误。
2. 使用控制器(Controller)来调度虚拟用户
使用与TUXEDO一样的调度策略,创建100个虚拟用户,以线程的方式来给

http://jq:7001/toupper/jsp1.jsp链接加压,一共处理了5429笔交易,TPS为17.8。平均每秒点击次数为29.34次,测试报表如下:

 

版权所有:UML软件工程组织