当前位置:文档之家› Loadrunner进阶指南

Loadrunner进阶指南

Loadrunner进阶指南
Loadrunner进阶指南

3.9事务

3.9.1响应时间

事务是指用户在客户端做一种或多种业务所需要的操作集,通过事务函数可以标记完成该业务所需要的操作内容;另一方面事务可以用来统计用户操作的响应时间,事务响应时间是通过记录用户请求的开始时间和服务器返回内容到客户时间的差值来计算用户操作响应时间的,如图3.159

所示。

图3.159事务响应时间计算方式这里的响应时间不包含客户端

GUI 时间(例如浏览器解释页面所消耗的

时间)。

前面说响应时间是服务器返回和用户请求发出之间的时间差,那么得到这个时间就够了吗?

例如:现在有一场跑步比赛。当比赛完成后,可以得到每位运动员跑完整个比赛所需要消耗的时间,现在需要分析谁的起跑好、谁的冲刺好,能分析出来吗?答案是不能,虽然得到了最重要的完成比赛的响应时间,但是这对分析和优化几乎没有作用,因为只知道了结果而不知道过程。跑步的时间是由起跑、中途、冲刺等时间组成的,如果想要进行分析优化,必须先了解各个阶段所花费的时间和速度以及各个运动员的优缺点。

对于软件来说,通过事务得到的系统响应时间也是由非常多的部分组成的,一般来说响应时间由网络时间、服务器处理时间、网络延迟三大部分组成。先来看看当一个客户端发出请求到服务器返回需要经历哪些路径,如图3.160所示。

图3.160事务响应时间组成

1.网络时间

客户端发出请求首先通过网络来到Web Server 上(消耗时间为N1);然后Web Server 将处理后的请求发送给App Server (消耗时间为N2);App Server 将操作数据指令发送给Database (消耗时间为N3);Database 服务器将查询结果数据发送回App Server (消耗时间为N4);App Server 将处理后的页面发给Web Server (消耗时间为N5);最后Web Server 将HTML 转发到客户端(消耗时间为N6)。这里的N x 都是网络传输上的时间开销,没有计算业务处理所需要花费的时间。

2.服务器处理时间

另外一个方面还要考虑各个服务器处理所需要的时间WT 、AT 、DT 。

3.网络延迟

除了上面两种时间开销以外,还要考虑网络延迟的问

题。

所以最终的响应时间组成为:响应时间=网络延迟时间+WT+AT+DT +

(N1+N2+N3)+(N4+N5+N6)+WT+AT+DT 也可以简单认为响应时间由网络开销(前端)和服务

器端开销(后端)两大部分组成,如图3.161所示。那么这些消耗的时间都花在什么事情上了呢?影响网络的因素一般包括以下内容:1.前端Network

?DNS Lookup

?Time to connect

?Time to first buffer

?Network Time

?Download Time

?SSL handshake

?FTP authentication

?Client

Time

图3161事务响应时间组成详解

?Error Time

?网络延迟

2.后端服务

?Web Server

Servlet Time

Method Time

静态动态压缩

?App Server

EJB Time

Method Time

JNDI Lookup

?Database Server

JDBC Time

Connect Time

Execute Time

这里会发现响应时间的组成是非常复杂的,当性能问题出现时,想要定位到具体的代码级别是相当困难的。

3.9.2添加事务

通过事务监控响应时间,需要做的就是在请求的发出前添加一个事务开始的计数器,在请求结束的地方添加一个事务结束的计数器,VuGen会自动计算函数间的时间差。

通过工具栏上的事务按钮即可完成事务的添加操作,在请求之前单击插入事务开始按钮,如图3.162所示。

在弹出对话框中填写事务名称mainpage,如图3.163所示。

图3.162插入事务开始按钮图3.163设置事务名称

单击OK按钮后,可以得到事务开始的函数:

lr_start_transaction("mainpage");

通过这条语句开始了一个叫做mainpage的事务,然后在请求后添加一个事务结束函数,单击插入事务结束按钮,如图3.164所示。

这里提供了几个选项,选择LR_AUTO由VuGen自动判断状态,如图3.165所示。

图3.164插入事务结束按钮图3.165设置事务状态判断为LR_AUTO 这样就生成了一个事务结束的函数:

lr_end_transaction("mainpage",LR_AUTO);

这里事务的开始和结束名称需要配对。

事务设置结束,通过这两个函数完成了对事务的设计,运行脚本来看看效果。脚本如下所示:

Action()

{

lr_start_transaction("mainpage");

web_url("51testing","URL=https://www.doczj.com/doc/0015604039.html, ",LAST);

lr_end_transaction("mainpage",LR_AUTO);

return0;

}

在日志中可以看到以下信息:

Action.c(3):Notify:Transaction"mainpage"started.

//请求发送返回的相关日志

Action.c(5):Notify:Transaction"mainpage"ended with"Pass"status (Duration: 5.9749).

事务结束的说明中包含了请求所花费的时间为Duration=5.9749秒和事务结束的状态。通过事务可以获得每个操作所消耗的准确时间,例如查询、登录、删除操作。但是对于性能分析来说,这个时间还是太大了,无法有效地帮助我们定位性能瓶颈,LoadRunner能解决这个问题吗?抱歉,LoadRunner只能对自己发出的请求和服务器返回的内容进行网络级别的分析,也就是说LoadRunner能够分析的时间为客户到WWW服务器的时间N1和WWW服务器返回到客户的时间N6。这些时间主要和网络速度有关,可以用一个LoadRunner的名称来解释,叫做Web Page Breakdown,相关的具体分析可以参考第5.3.5节。

也就是说VuGen可以分析的时间只有客户端到Web Server之间的部分,后面从Web Server到App Server再到Database Server的时间只能得到一个总和。

事务状态

在默认情况下使用LR_AUTO来作为事务状态,对于一个事务有以下4个状态可以选择。

1.LR_AUTO

LR_AUTO是指事务的状态由系统自动根据默认规则来判断,结果为PASS/FAIL/STOP。

2.LR_PASS

LR_PASS指事务是以PASS状态通过的,说明该事务正确地完成了,并且记录下对应的时间,这个时间就是指做这件事情所需要消耗的响应时间。

3.LR_FAIL

LR_FAIL是指事务以FAIL状态结束,该事务是一个失败的事务,没有完成事务中脚本应该达到的效果,得到的时间不是正确操作的时间,这个时间在后期的统计中将被独立统计。

4.LR_STOP

LR_STOP将事务以STOP状态停止。

事务的PASS和FAIL状态会在场景的对应计数器中记录,包括通过的次数和事务的响应时间,方便后期分析该事务的吞吐量以及响应时间的变化情况。

事务和子事务

在VuGen中可以通过事务来完成一组操作的响应时间监控,如果想监控一个事务中某一步操作的响应时间,就需要使用子事务来完成(当然也可以直接使用事务嵌套)。

Lr_start_sub_transaction("子事务名","父事务名");

Lr_end_sub_transaction("子事务名","子事务状态");

子事务虽然和父事务很像,但是父事务支持的很多函数,在子事务中都无法实现,所以应酌情考虑。

例如:需要做一个登录的事务,想知道打开登录页面和登录操作的时间,就可以使用子事务。

lr_start_transaction("login");

lr_start_sub_transaction("loginpage","login");

//打开登录页面

lr_end_sub_transaction("loginpage",LR_AUTO);

lr_start_sub_transaction("submitlogin","login");

//提交登录表单

lr_end_sub_transaction("submitlogin",LR_AUTO);

lr_end_transaction("login",LR_AUTO);

这样可以得到3个事务的时间,并且清楚地得到打开页面和登录操作以及整个操作的

时间。

事务相关的函数

lr_get_transaction_duration("事务名")

//获得对应事务达到该函数运行位置时持续的时间,返回double类型

lr_get_transaction_wasted_time("事务名")

//获得对应事务达到该函数运行位置时的wasted时间,返回double类型

lr_wasted_time(毫秒)

//为一个事务添加wasted时间,无返回

lr_stop_transaction("事务名")

//将一个事务暂停,该函数后的操作都不会被记入事务时间

lr_resume_transaction("事务名")

//将暂停的事务恢复

一般情况下都可以十分简便地获得请求的相应时间,但是对于下载操作来说就并不是那么方便了,这个时候需要利用一个web_get_int_property()函数来解决。例如想获得一个下载操作的响应时间,可以这样写:

Action()

{

int i;

lr_start_transaction("download");

web_url("LoadRunner","URL=http://127.0.0.1/loadrunner.iso",LAST);//下载操作的请求

i=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);

if(i>5000)//当下载的文件大小大于5000个字节时认为下载成功,否则失败

lr_end_transaction("download",LR_PASS);

else

lr_end_transaction("download",LR_FAIL);

}

当进行下载操作时,服务器会返回该下载操作的文件大小,所以只需要获得该信息即可,如果还希望对下载时的速度进行测试,那么需要配合关联函数将返回的内容保存到本地才能实现。一般来说对于下载操作的性能测试集中在需要多少时间弹出下载对话框,而后面的内容其实是属于网络带宽的问题了。另一方面现在很少使用IE进行直接下载,而采用迅雷一类的P2P下载工具,所以很少考虑具体下载文件操作对网络和服务器读写操作的影响。

3.9.3事务时间

一个事务的时间是指持续时间,事务会完全记录下从事务开始到事务结束之间的时间

差,那么事务的时间能真实地反映业务操作的时间吗?不

能,就好像人用手按秒表来记录短跑时间一样,得出的时

间并不是完全准确,存在观察的误差和操作的误差,对于

一个事务时间来说,一般由四部分组成,如图3.166所示。

响应时间这是事务的目的,通过事务记录业务操作所消耗的响

应时间。事务自身时间

事务中哪怕没有操作,也是需要时间的,不过这个时间一般在0.01秒左右,所以可以忽略。

lr_start_transaction("thinktime");

lr_end_transaction("thinktime",LR_AUTO);

运行上面的脚本后,可以看到:

Action.c(5):Notify:Transaction "thinktime"started.

Action.c(9):Notify:Transaction "thinktime"ended with "Pass"status (Duration:0.0121).

思考时间(Think Time )

Think Time 是LoadRunner 提供的一种模拟用户等待的方式,通过lr_think_time()函数实现。在函数内写入对应的时间(单位是秒),当脚本在Controller 中运行到该函数时就会等待相应的时间。注意在VuGen 中,回放Think Time 默认关闭。

Think Time 在进行性能测试的时候需要打开,只有这样每个虚拟用户才是真正按照用户的操作速度来完成请求,才能得到在真实情况下的系统数据。如果不打开Think Time ,测试获得的数据是在全负载下的一些理论峰值数据。

那么Think Time 在事务中如何影响事务时间呢?编写如下脚本:

lr_start_transaction("thinktime");

lr_think_time(5);

lr_end_transaction("thinktime",LR_AUTO);

在Run-time Settings 中设置Think Time ,启用Replay Think Time 功能,运行之后可以看到以下结果:

Action.c(5):Notify:Transaction "thinktime"started.

Action.c(7):lr_think_time: 5.00seconds.

Action.c(9):Notify:Transaction "thinktime"ended with "Pass"status

图3166事务时间组成

(Duration: 5.0254Think Time: 4.9995).

所以Think Time会被算在事务的时间内,不过在Analysis中可以设置过滤规则将其扣

除,另外我们也建议尽量不要在事务内使用lr_think_time()函数。

浪费时间(Wasted Time)

在使用事务的时候,经常会看到在事务日志中有Wasted Time。Wasted Time是指事务中应该扣除的由于其他原因导致的时间浪费。在默认情况下LoadRunner会将自身脚本运行浪费的时间自动记入Wasted Time。例如执行关联、检查点等函数的时间。

除了脚本自身浪费的时间,某些时候使用C语言等外部接口进行处理所消耗的时间也会影响事务的时间,而这个时间LoadRunner无法处理,在这种情况下就需要人为地计算第三方时间开销,并且将这个开销的时间记入Wasted Time中。

运行一下下面的代码:

Action()

{

int i;

int baseIter=100;

char dude[1000];

merc_timer_handle_t timer;

//Examine the total elapsed time of the action

//Start transaction

lr_start_transaction("Demo");

timer=lr_start_timer();

for(i=0;i<=baseIter*1000;i++){

sprintf(dude,"This is the way we waste time in a script=%d",i);

}

wasteTime=lr_end_timer(timer);

lr_wasted_time(wasteTime*1000);

lr_end_transaction("Demo",LR_AUTO);

return0;

}

其中,lr_start_timer()是一个LoadRunner自带的时间计数器,它和lr_end_timer()相对应,能够返回这两个函数间的时间差。

运行脚本后,等待一段时间脚本运行结束,可以看到以下日志。

Action.c(18):Notify:Transaction"Demo"started.

Action.c(27):wasted time is85.860000

Action.c(28):Notify:Transaction"Demo"ended with"Pass"status(Duration: 85.8772Wasted Time:85.8600).

通过上面这个日志可以看到,在VuGen运行脚本的时候这个1000次的C语言操作所消耗的时间会被算在Transaction时间内,导致Transaction的时间变长。当通过lr_start_timer()

计时函数将这个消耗时间加入Wasted Time后,这个脚本就能正确地计算出事务的时间和该事务时间的Wasted Time了。当在场景中运行的时候,事务的响应时间会自动扣除Wasted Time。

为了确保响应时间的正确,需要扣除在运行脚本时自身的时间消耗,事务中尽量避免出现非请求的处理内容,如果无法避免请使用lr_wasted_time()函数将多余的时间开销扣除。

例如这样的脚本:

merc_timer_handle_t timer;//变量声明

lr_start_transaction("Demo");

timer=lr_start_timer();

lr_load_dll("getkey.dll");

lr_save_string(getrandkey(),"key");

//通过调用dll获得密钥

wasteTime=lr_end_timer(timer);

lr_wasted_time(wasteTime*1000);

lr_end_transaction("Demo",LR_AUTO);

计算密钥是很消耗时间的,那么可以使用timer这个变量来记录计算的时间,并将这个时间从整个事务中扣除。

在计算Wasted Time时不要直接使用lr_wasted_time()覆盖,而忘了加上脚本中LoadRunner函数的自身时间。通过lr_get_transaction_wasted_time()函数可以获得事务自身的Wasted Time,将这个时间累加上第三方统计的Wasted Time再通过lr_wasted_time()函数覆盖。

3.9.4手工事务

前面都是使用LR_AUTO来自动判断事务状态,现在来做一个脚本,看看LoadRunner 的事务是如何自动判断状态的。

录制一个论坛注册用户的脚本,在提交注册表单处添加事务开始及结束标志,然后回放该脚本。事务的结果是PASS还是FAIL呢?虽然回放脚本注册用户是失败的(该用户已经存在),但是事务还是在PASS状态下完成了,而且会发现事务的持续时间很短。正常情况下注册一个用户到刷新首页一般都要2秒,现在只需要0.3秒。这是因为当服务器判断到该用户已存在后,就没有了数据插入和等待1秒刷新首页的操作,而是直接返回错误提示页面。这个0.3秒是系统处理错误的时间而不是注册用户所需要的时间。

LR_AUTO也是根据服务器的返回状态信息来决定事务是以LR_PASS状态通过还是以LR_FAIL状态结束,只要服务器返回页面,那么事务就会认为请求成功发出去了,服务器看懂了请求也返回了内容,自然事务是PASS状态了。

这样由于事务自动判断的错误,导致虽然操作是失败的,但得到了一个响应时间,并

且这个响应时间又没有正确反映出做这件事情的真正时间,最终就会影响到性能测试得到的数据。

记得在论坛上就有朋友问过这样的问题,为什么系统在用户越来越多的情况下,响应时间不增反减?这种现象很有可能就是没有使用手工事务导致的结果。

对于这种情况就需要手工来判断操作是否成功,通过web_reg_find()检查点函数来检查页面是否返回正确,然后通过rowcount的参数值来进行事务状态判断,做到智能判断事务结果。

例如:检查点函数的rowcount保存在参数loginst中,那么事务的状态就应该这样判断:lr_start_transaction("login");

web_reg_find("Search=Body",

"SaveCount=loginst",

"Text=登录失败",

LAST);

//登录请求

If(atoi(lr_eval_string("{loginst}"))>=1))

lr_end_transaction("login",LR_FAIL);

else

lr_end_transaction("login",LR_PASS);

通过检查点来检查登录后页面是不是存在“登录失败”这样的内容,如果存在那么loginst的值就大于等于1,然后把loginst的值取出来和1做比较,如果大于1那么就是登录失败,否则就是登录成功。

参数不能和值做比较,所以要先通过lr_eval_string()函数将其转化成字符串,然后再通过atoi()函数转化成整数,这样才能和1作比较。

在绝大多数情况下对于事务都需要采用手工事务的方式来确保事务的正确性和事务时间的有效性。

思考题:

对于Discuz论坛来说如何做一个有效的用户注册脚本通过手工事务并且获得准确注册操作的响应时间。

业务分析:

注册用户后,在系统的页面上会出现【欢迎:注册用户名】的信息,可以在注册后返回的页面中检查是否出现了这样的内容来判断注册事务是否成功。

通过检查页面可以得到需要判断的代码为:

欢迎:

所以在检查点函数中需要添加这个内容,为了更好地判断,还需要把注册用户的名字

也加进去,最后可以得到下面的代码:

Action()

{

web_url("注册",

"URL=http://192.168.0.200/register.aspx",

"TargetFrame=",

"Resource=0",

"RecContentType=text/html",

"Referer=http://192.168.0.200/",

"Snapshot=t2.inf",

"Mode=HTML",

EXTRARES,

"URL=/templates/default/images/check_error.gif", ENDITEM,

"URL=/templates/default/images/check_right.gif", ENDITEM,

"URL=/images/level/3.gif",ENDITEM,

LAST);

lr_start_transaction("reg");

web_reg_find("Search=Body",

"SaveCount=regst",

"Text=欢迎:{username}",

LAST);

web_submit_data("register.aspx",

"Action=http://192.168.0.200/register.aspx?create user=1",

"Method=POST",

"TargetFrame=",

"RecContentType=text/html",

"Referer=http://192.168.0.200/register.aspx",

"Snapshot=t11.inf",

"Mode=HTML",

ITEMDATA,

"Name=username","Value={username}",ENDITEM,

"Name=password","Value=112212",ENDITEM,

"Name=password2","Value=112212",ENDITEM,

"Name=email","Value={username}@cloud.chen", ENDITEM,

"Name=submit","Value=创建用户",ENDITEM,

"Name=question","Value=0",ENDITEM,

"Name=answer","Value=",ENDITEM,

"Name=realname","Value=",ENDITEM,

"Name=idcard","Value=",ENDITEM,

"Name=mobile","Value=",ENDITEM,

"Name=phone","Value=",ENDITEM,

"Name=gender","Value=0",ENDITEM,

"Name=nickname","Value=",ENDITEM,

"Name=bday_y","Value=",ENDITEM,

"Name=bday_m","Value=",ENDITEM,

"Name=bday_d","Value=",ENDITEM,

"Name=location","Value=",ENDITEM,

"Name=msn","Value=",ENDITEM,

"Name=yahoo","Value=",ENDITEM,

"Name=skype","Value=",ENDITEM,

"Name=icq","Value=",ENDITEM,

"Name=qq","Value=",ENDITEM,

"Name=homepage","Value=",ENDITEM,

"Name=bio","Value=",ENDITEM,

"Name=templateid","Value=0",ENDITEM,

"Name=tpp","Value=0",ENDITEM,

"Name=ppp","Value=0",ENDITEM,

"Name=newpm","Value=radiobutton",ENDITEM,

"Name=pmsound","Value=1",ENDITEM,

"Name=showemail","Value=1",ENDITEM,

"Name=receivesetting","Value=2",ENDITEM,

"Name=receivesetting","Value=4",ENDITEM,

"Name=invisible","Value=0",ENDITEM,

"Name=signature","Value=",ENDITEM,

"Name=sigstatus","Value=1",ENDITEM,

LAST);

if(atoi(lr_eval_string("{regst}"))>=1)

lr_end_transaction("reg",LR_PASS);

else

lr_end_transaction("reg",LR_FAIL);

return0;

}

这里的{username}是一个参数,用来存放注册的用户名,在参数列表中设置了该参数的取值方式和信息。

3.10集合点

集合点函数可以帮助我们生成有效可控的并发操作。虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行随着时间的推移,并不能完全达到同步。这个时候需要手工的方式让用户在同一时间点上进行操作来测试系统并发处理的能力,而集合点函数就能实现这个功能。集合点只需要在脚本中插入lr_rendezvous()函数即可。打开Insert菜单下的Rendezvous选项,如图3.167所示。

在弹出的对话框中输入集合点名称run,确定后即可得到对应的脚本:

lr_rendezvous("run");

引号内的就是集合点名称,当脚本在多用户运行的情况下,每次运行到这个函数都会查看一下集合点的策略来决定是等待还是继续运行。集合点的设置内容存放在场景的设置中,当脚本中有集合点函数时,场景中的集合点设置功能就可以访问,如图3.168所示。

图3.167添加集合点函数图3.168场景中的集合点设置

打开场景菜单下的集合点后,可以为集合点进行设置,包括哪些用户使用该集合点、集合点是否有效等,如图3.169所示。

集合点策略用来设置虚拟用户集合的方式,打开Policy对话框,如图3.170所示。集合点提供了以下3种策略:

1.当百分之多少的用户到达集合点时脚本继续。

2.当百分之多少的运行用户到达集合点时脚本继续。

图3.169场景中的集合点设置窗口图3.170场景中的集合点策略

3.多少个用户到达集合点时脚本继续。

这3个策略的区别在于:假设脚本由100个用户来运行,但100个用户并不是一开始就共同运行的。假设每隔1分钟添加10个用户,也就是说10分钟后系统才有100个在线用户。这里100就是指系统访问的所有用户数,而不同时间的在线用户数是不同的。设置的集合点策略百分比均为100%。

在场景运行时,当Vuser脚本运行到集合点函数时,该虚拟用户会进入集合点状态直到集合点策略满足后才释放。

策略1是指当全部用户都运行到了集合点函数才释放集合,让这100个用户并发运行后面的脚本。

策略2是指当前时间如果只有10个用户在线,那么只需要这10个用户都运行到了集合点函数就释放集合,让这10个用户并发运行后面的脚本。

策略3就比较好理解了,当到达集合点的用户数达到自己设置的数量后就释放等待,并发运行后面的脚本。

可以在多个脚本上设置相同的集合点名称来实现多个脚本同时并发的效果。

集合点超时

在脚本运行时,每个虚拟用户到达集合点时都会去检查一下集合点的策略设置,如果不满足,那么就在集合状态等待,直到集合点策略满足后,才运行下一步操作。但是可能存在前一个虚拟用户和后一个虚拟用户达到集合点的时间间隔非常长的情况,所以需要指定一个超时的时间,如果超过这个时间就不等待迟到的虚拟用户了。

设定的超时时间时,所有在集合点处于等待状态中的用户将全部释放。

集合点和事务

集合点应该放在事务外,如果事务内存在集合点,那么虚拟用户在集合点等待的过程也会被算入事务时间,导致早进入集合点的用户的响应时间有误。

常见的田径比赛就是这样,大家先集合在同一起跑线上,鸣枪后开始计时,达到终点再计时,这样就能得到准确的事务时间。

小结

VuGen是性能测试开始的第一步,也是性能测试最重要的一个步骤,如何形成一个有效的负载脚本,决定了性能测试的实施分析能否在一个坚强可靠的基础上进行。本章详细介绍了VuGen的使用方式和脚本开发的各个要点。

脚本开发是一个体力活,通过自行编写一个脚本对服务器进行负载,而脚本开发又基于需求,在掌握用户真正的行为特征后,即可根据其开发性能测试脚本。另外一个方面,根据性能测试的目的,脚本可以分为两大类:一类是针对某个具体功能的调试型性能测试脚本,这种脚本的操作尽可能少,主要是为了测试某一个功能而开发的;另一种是模拟用户行为的脚本,该脚本完全模拟了用户的常见操作及逻辑分支,主要是为了进行稳定性测试或系统级别的性能测试而开发的。

在完成了脚本的开发后,接着可以开始设计场景完成性能测试负载工作了。在下一章中我们将会介绍如何使用Controller进行性能测试场景设计、负载生成及数据监控。

本章需要掌握的重点:

?VuGen录制脚本的录制等级和设置方式

?VuGen脚本录制的流程及生成脚本的原理

?如何设置脚本的Runtime Settings,特别是Run Logic(运行逻辑)

?参数化原理及各种参数取值的方式

?关联原理及如何准确获得服务器返回的部分内容

?事务时间和响应时间的组成

?手工事务的使用方法

?集合点策略

LoadRunner教程

LoadRunner使用手册 测试中心刘艳会 1 LoadRunner概要介绍 LoadRunner? 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。这些都不可避免地导致公司收益的损失。Mercury Interactive 的 LoadRunner 能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT 资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。 LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的协议和技术,为您的特殊环境提供特殊的解决方案。 1.1 轻松创建虚拟用户 使用LoadRunner 的Virtual User Generator,您能很简便地创立起系统负载。该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下业务流程(如下订单或机票预定),然后将其转化为测试脚本。利用虚拟用户,您可以在Windows ,UNIX 或Linux 机器上同时产生成千上万个用户访问。所以LoadRunner能极大的减少负载测试所需的硬件和人力资源。另外,LoadRunner 的TurboLoad 专利技术能提供很高的适应性。TurboLoad 使您可以产生每天几十万名在线用户和数以百万计的点击数的负载。 用Virtual User Generator 建立测试脚本后,您可以对其进行参数化操作,这一操作能让您利用几套不同的实际发生数据来测试您的应用程序,从而反映出本系统的负载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实际用户的操作行为。 LoadRunner 通过它的Data Wizard 来自动实现其测试数据的参数化。Data Wizard 直接

Loadrunner使用教程

LoadRunner使用教程 1. 了解LoadRunner 1.1 Loadrunner简介 LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢、系统崩溃等问题。这些都不可避免地导致公司收益的损失。Mercury Interactive 的LoadRunner 能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT 资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广的协议和技术,为您的特殊环境提供特殊的解决方案。 1.2 为什么应进行自动性能测试? 自动性能测试是一项规,它利用有关产品、人员和过程的信息来减少应用程 序、升级程序或修补程序部署中的风险。自动性能测试的核心原理是通过将生产 时的工作量应用于预部署系统来衡量系统性能和最终用户体验。构造严密的性能 测试可回答如下问题: ?应用程序是否能够很快地响应用户的要求? ?应用程序是否能处理预期的用户负载并具有盈余能力? ?应用程序是否能处理业务所需的事务数量?

Loadrunner进阶指南

3.9事务 3.9.1响应时间 事务是指用户在客户端做一种或多种业务所需要的操作集,通过事务函数可以标记完成该业务所需要的操作内容;另一方面事务可以用来统计用户操作的响应时间,事务响应时间是通过记录用户请求的开始时间和服务器返回内容到客户时间的差值来计算用户操作响应时间的,如图3.159 所示。 图3.159事务响应时间计算方式这里的响应时间不包含客户端 GUI 时间(例如浏览器解释页面所消耗的 时间)。 前面说响应时间是服务器返回和用户请求发出之间的时间差,那么得到这个时间就够了吗? 例如:现在有一场跑步比赛。当比赛完成后,可以得到每位运动员跑完整个比赛所需要消耗的时间,现在需要分析谁的起跑好、谁的冲刺好,能分析出来吗?答案是不能,虽然得到了最重要的完成比赛的响应时间,但是这对分析和优化几乎没有作用,因为只知道了结果而不知道过程。跑步的时间是由起跑、中途、冲刺等时间组成的,如果想要进行分析优化,必须先了解各个阶段所花费的时间和速度以及各个运动员的优缺点。 对于软件来说,通过事务得到的系统响应时间也是由非常多的部分组成的,一般来说响应时间由网络时间、服务器处理时间、网络延迟三大部分组成。先来看看当一个客户端发出请求到服务器返回需要经历哪些路径,如图3.160所示。

图3.160事务响应时间组成 1.网络时间 客户端发出请求首先通过网络来到Web Server 上(消耗时间为N1);然后Web Server 将处理后的请求发送给App Server (消耗时间为N2);App Server 将操作数据指令发送给Database (消耗时间为N3);Database 服务器将查询结果数据发送回App Server (消耗时间为N4);App Server 将处理后的页面发给Web Server (消耗时间为N5);最后Web Server 将HTML 转发到客户端(消耗时间为N6)。这里的N x 都是网络传输上的时间开销,没有计算业务处理所需要花费的时间。 2.服务器处理时间 另外一个方面还要考虑各个服务器处理所需要的时间WT 、AT 、DT 。 3.网络延迟 除了上面两种时间开销以外,还要考虑网络延迟的问 题。 所以最终的响应时间组成为:响应时间=网络延迟时间+WT+AT+DT + (N1+N2+N3)+(N4+N5+N6)+WT+AT+DT 也可以简单认为响应时间由网络开销(前端)和服务 器端开销(后端)两大部分组成,如图3.161所示。那么这些消耗的时间都花在什么事情上了呢?影响网络的因素一般包括以下内容:1.前端Network ?DNS Lookup ?Time to connect ?Time to first buffer ?Network Time ?Download Time ?SSL handshake ?FTP authentication ?Client Time 图3161事务响应时间组成详解

软件测试实验报告LoadRunner的使用

南昌大学软件学院 实验报告 实验名称 LoadRunner的使用 实验地点 实验日期 指导教师 学生班级 学生姓名 学生学号 提交日期 LoadRunner简介: LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的协议和技术,为您的特殊环境提供特殊的解决方案。LoadRunner是目前应用最为广泛的性能测试工具之一。 一、实验目的

1. 熟练LoadRunner的工具组成和工具原理。 2. 熟练使用LoadRunner进行Web系统测试和压力负载测试。 3. 掌握LoadRunner测试流程。 二、实验设备 PC机:清华同方电脑 操作系统:windows 7 实用工具:WPS Office,LoadRunner8.0工具,IE9 三、实验内容 (1)、熟悉LoadRunner的工具组成和工具原理 1.LoadRunner工具组成 虚拟用户脚本生成器:捕获最终用户业务流程和创建自动性能测试脚本,即我们在以后说的产生测试脚本; 压力产生器:通过运行虚拟用户产生实际的负载; 用户代理:协调不同负载机上虚拟用户,产生步调一致的虚拟用户;压力调度:根据用户对场景的设置,设置不同脚本的虚拟用户数量;监视系统:监控主要的性能计数器; 压力结果分析工具:本身不能代替分析人员,但是可以辅助测试结果的分析。 2.LoadRunner工具原理 代理(Proxy)是客户端和服务器端之间的中介人,LoadRunner 就是通过代理方式截获客户端和服务器之间交互的数据流。 ①虚拟用户脚本生成器通过代理方式接收客户端发送的数据包,

LoadRunner测试实例详解

LoadRunner测试实例详解 摘要:本文通过实例讲解介绍了LoadRunner 工具的使用,介于公司的实际情况,文中主要是对工具的基本使用做了详细描述,高级运用方面除性能计数器与参数设置外其它均未涉及,待以后补充。目的是使公司人员根据该手册便可以独立运用Loadrunner进行压力测试 主题词:Loadrunner 工具压力测试 1 LoadRunner 概要介绍 LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。这些都不可避免地导致公司收益的损失。Mercury Interactive 的LoadRunner 能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT 资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的协议和技术,为您的特殊环境提供特殊的解决方案。 1.1 基本步骤 使用LoadRunner 完成测试一般分为四个步骤: 1)Vvitrual User Generator 创建脚本 创建脚本,选择协议

《LoadRunner中文使用手册完全版》

LoadRunner操作入门 案例介绍: 测试Tomcat自带的一个jsp提交表单的性能。 测试页面如下: 输入一个数字后,点击提交,执行程序后返回页面:

测试步骤 第一步:录制脚本 从程序菜单中启动“LoadRunner”->“Visual User Generator” 在协议选择框中选择“Web(HTTP/HTML)”协议,进入主界面。 在工具条上选择“Start Record”,弹出启动“Start Recording”对话框。 在URL输入框中输入上述要测试的第一个页面的URL,即输入表单的页面。 同时注意,请让“Record the application startup”选择框失效,以便手工控制录制开始的时间,跳过刚开始的输入页面。 点击“OK”,这是LoadRunner会启动浏览器,并指向第一个输入页面,同时在浏览器窗口上方将出现一个“Recording Suspended…”的工具条窗口。 等待输入页面显示完全以后,点击工具条窗口中的“Record”按钮,进入录制状态,从现在 开始,在打开的浏览器上的所有操作将被录制成测试的脚本。

执行预定的表单提交动作,等结果页面显示完整以后,点击工具条上的黑色方框按钮,停止录制,回到Visual User Generator的主窗口,此时可以看到脚本已经录制成功。 选择“File”->“Save”,把当前的脚本保存下来 第二步:生成测试场景 选择菜单“Tools”->“Create Controller Scenario”,弹出“Create Scenario”对话框,保持缺省值不变,直接点击“OK”,唯一可能需要该的就是测试结果文件生成的路径。 这时,将启动LoadRunner的另一个工具“Controller”,这是执行压力测试的环境。 Controller的主界面有“Design”和“Run”两个Tab组成,可以随时切换,首先进入的是Design界面,在这里可以调整运行场景的各种参数,如果只是作强度测试,唯一需要调整 就是并发用户数,如下图所示:

loadrunner使用步骤说明

一、LoadRunner的下载,安装与破解 .ddooo./softdown/61971.htm https://www.doczj.com/doc/0015604039.html,/softjc/71256.html// 这是安装篇 二、LoadRunner在Web项目上的使用 1.新建一个Web(HTTP/HTML):File---->new New single Protocol Script :选择一个协议 New Multiple Protocol Script :选择多个协议 New Script recent Protocol :选择最近使用的协议 2.点击Start Record开始录制

Application type :选择程序类型。包含两个选项,Internet Applications 一般指B/S的系统,也就是通过浏览器访问的系统;Win32 Applications 一般C/S 的系统,也就是本地的应用程序,如QQ Program to record :选择启动程序的路径,如果是本地程序(C/S),就找到程序的启动程序。(这个暂时没有使用过) 如果是B/S的体统找到IE浏览器的安装路径。如: C:\Program Files (x86)\Internet Explorer\iexplore.exe 。 默认为Microsoft Internet Explorer,最好手动指定IE浏览器的安装路径。 URL Address :如果是B/S的系统,请输入要访问的网址(如果访问本机,要用127.0.0.1代替localhost,如127.0.0.1:8080/ssh)。如果是C/S则为空。 Working directory :工具目录,也就是分析信息的保存路径。Record into Action :将录制结果放到Action里面 3.点击Options

LoadRunner性能测试工具使用说明

?性能测试定义 ?性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 ?性能测试包括负载测试和压力测试。 ?负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。 ?压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。 ?性能测试工具LoadRunner简介 ?LoadRunner是Mercury (HP)公司开发的一套预测系统行为和性能的工业标准级负载 测试工具 ?用于测试应用程序的性能 ?在可控制的峰值负载条件下测试系统 ?通过LoadRunner,可以在可控制的峰值负载条件下测试系统,以隔离和标识潜在的客 户端、网络和服务器瓶颈。要生成负载,LoadRunner 将运行分布在网络中的数千个虚拟用户。通过使用最少的硬件资源,这些虚拟用户提供一致的、可重复并可度量的负载,像实际用户一样使用您的应用程序。LoadRunner 深入的报告和图可以提供评估应用程序性能所需的信息 ?使用LoadRunner做性能测试的好处 如果不使用LoadRunner工具做性能测试的话,要对一个程序做性测试需做以下步骤: 1、编写一个测试程序,而且该程序还必须是多线程的以便达到同时多用访问的效果 2、运行测试程序,程序运行时通过打日志或其它方法来收集运行数,而且该程序还只能运 行在一台机器上,如要联机运行并收集日志数据则需更复杂的编程 3、测试程序完成后收集运行所产生的数据,通过复杂的计算得到一组数据来表明程序的性 能。通过这些数据不能很直观的发现程序的性能瓶颈点 如使用LoadRunner来做性能测试则以上的问题都将由LoadRunner来替你解决。你只用关心要测试的程序脚本该怎么写。写完脚本后通过控制台可将该脚本分配给多个线程来运程,如要运行的线程有上千个,一台机器不能满足测试要求。可部署多台机器来运行脚本,这里的部署只是在要运行的机器上装一个LoadRunner负载程序,然后用控制台连接起来。 LoadRunner解决了我们做性能测试时一些关键问题,我们只要把脚本写好就OK了。性能测试完成后,通过分析测试中收集到的数据便能以图形的方式来展现测试过程中的种种情况,这样来分析起来就直观了很多。 ?LoadRunner的组成 共有四部份组成 1、虚拟用户生成器,用户于录制(把你据做的操作给记录下来并形成代码)或编写测试脚本 2、控制台,控制脚本的运行情况,可指定将脚本运行的线程数,可连接多个负载器并将脚 本放到它上面运行 3、分析器,分析脚本运行所产生的数据并形成多种类别的图表,以方便查看和分析 4、负载器,用于运行性能脚本,负载器可安装到多台机器上,控制台可将这些机器上的负 载器给联合起来做测试

LoadRunner使用说明书

Load Runner 使用说明 一、组件: (一) VuGen:用于捕获最终用户业务流程和创建怎动化性能测试脚本。 1. 录制脚本: (1) 集合点Rendezvous (2) 验证点Check Point:文本验证点Text Check、图片验证点Image Check (3) 事务Transaction:事务开始Start Transaction、事务结束End Transaction (4) 注释与消息Comment & Message:/***/ 2. 增强并编辑Vuser脚本 (1) 参数化: 在Select next now中的参数:Sequential顺序、Random随机、Unique唯一 在Update value on 参数:Each iteration每次迭代、Each occurrence每次出现、Once 一次 (2) 从数据库中导入数据 3. 配置动行时设置Runtime settings(运行时设置) (1) Number of Iterations:迭代次数 (2) 在Preferences中的Enable image and text check在脚本中添 加验证点时必须选中。 4. 在独立模式下运行Vuser脚本 5. 集成Vuser脚本 (二) Controller:用于组织、驱动、管理和监控负载测试。 1. 创建方案 (1) 创建手动方案

(2) 创建百分比模式方案 (3) 创建面向目标的方案 2. 计划方案 (1) 开始时间 (2) 方案运行设置:加压Ramp Up、持续时间Duration、减压Ramp Dowm 3. 运行方案 4. 监视方案 (1) RuntimeGraphs(运行时图) A. Running Vusers运行时图:Running正在运行的Vuser总数、Ready完成脚本初始化部分、即可以运行的Vuser数、Finished结束运行的Vuser数,包括通过的和失败的、Error执行时发生的错误Vuser B. Transaction Graphs事务监视图:Trans Response Time事务响应时间、Trans/Sec(Passed)每秒事务数(通过)、Trans/Sec(Failed/Stopped)每秒事务数(失败、停止)、 Total Trans/Sec(Passed)每秒事务总数(通过)。 (2) Web资源监视 A. Hits per Second第秒点击次数图: B. Throughput吞吐量图: C. HTTP Responses per Second每秒HTTP响应数图 代码列表: 代码Meaning 中文描述 200 OK 正常 302 Moved Temporarily 已找到

LoadRunner性能测试软件的基本使用步骤

LoadRunner性能测试软件的基本使用步骤 一. 1、测试脚本录制 1.1录制前准备工作 在录制脚本前需检查压测环境的整体功能是否正确,待测部分的功能是否正确,只有确定功能正确后才可进行压测。 1.2录制及调试脚本 在准备工作OK后,进行脚本的录制,具体过程如下: 打开“开始>程序>MercuryLoadRunner>MercuryLoadRunner”测试脚本录制; 2、点击“Create/EdirScripts”,也可在“File”下选择New 新建。 3、选择Web(HTTP/HTML)协议,我们测试的是B/S模式,采用的是Web协议,选择后点【OK】按钮。 4、点击界面中的录制按钮,这个表示开始录制脚本点。 录制前,如果已经打开待测页面的话,建议关闭该页面。点【OK】后,同时会出现这表示现在已经开始录制。 5、所有操作完成后,点击中停止按钮,停止录制,页面将自动关闭,返回到loadrunner录制界面,将在界面中显示录制脚本代码,保存录制的脚本。 6、调试代码并进行参数化 录制后的代码需要进行调试才可用于压测,调试的办法就是进行

回放操作,如果回放过程无错误,运行结果也正确的话,则可用于压测。 二.设计测试场景 在脚本录制完成,调试通过后,可以进行测试场景的设计。 1.打开“开始>程序>MercuryLoadRunner >MercuryLoadRunner” 2.点击的RunLoadTests;在新建场景的窗口,选择一种场景类型。 3.选择要进行场景设计的脚本,若没有出现需要对应的脚本,可点击Browse查找后添加进来,选择好脚本后,点add则可加入到右边的窗口中然后点【OK】。 4.显示的是脚本的路径与并发数个数,根据测试方案中的并发 数可更改此处的并发数。 Eg:假如我们设计的场景是每15秒增加2个,所有并发数增加完后持续运行5分钟,5分钟运行结束后,每30秒减少5个并发。 5.再点击页面右下角的“Run-timeSettings” 。 6.一切设置OK后,点击运行测试场景。 三.测试结果分析 1.场景执行结束后可以,使用loadrunner自带的分析工具进行结果分析。 2.在菜单栏中选择打开,找到要分析的场景执行结果,点【打开】即可,还可以直接在场景运行结束后,点击Controller菜单栏

LoadRunner使用向导

LoadRunner使用快速上手 本着相互学习的目的,输出一份文档,希望大家互相探讨,给出意见,本文是最基础的使用向导,供初次使用者参考。 一.简单介绍 LoadRunner(LR)是美科利(Mercury)公司著名的性能测试产品,当然由于比较拉风06年后被HP收购,由于它的功能强大,在各行各业性能测试都能见到它的身影,比如,LR的Virtual User Genertor(VuGen)可执行Java开发的程序.NET程序,C开发的程序,使得LR几乎无所不能。 二.安装 安装前准备: *PC 一台内存最好大一点,Windows视窗操作系统 *LR安装包,破解文件,中国hacker真厉害,可以免费使用了,低调不要被发现。 开始安装,注意安装路径不能出现中文,安装机器最好是比较干净的,安装前关闭所有其他程序,包括防火墙,杀毒软件,尤其是卡爸丝机。 按照向导选择试用版,选Manual log in to this machine(手动登录),OK开始安装,重启后LR 会自动初始化,之后安装就成功了,然后按说明升级中文版破解一下,就可以开始测试了。 *试用版好像有并发量限制,使用15天到期,破解的License有两个,一个提供最大1000虚拟用户支持web协议,一个最大100虚拟用户所有协议全部支持,据说已经有漏洞可以无限使用了。 三.使用流程 1. 脚本录制与开发 使用LR时请暂停使用杀毒软件,以web测试为例。 进LR的VuGen(创建编辑脚本),这个工具提供测试脚本的录制与编辑,VuGen的录制功能十分强大,支持的协议也很广泛: 选择新建脚本,选择协议(比如常用的web协议)

LoadRunner通用函数详解(中文)

脚本运行相关 lr_get_vuser_ip 作用 获取虚拟用户IP。 返回值 成功,返回虚拟用户的IP指针; 失败,返回NULL. 参数 无 例子 Action() { char *ip; ip = lr_get_vuser_ip(); if (ip) lr_output_message("The IP address is %s", ip); else lr_output_message("IP spoofing disabled"); } lr_vuser_status_message 作用 该函数将消息发送到消息到vuser状态区域,同时还将该字符串发送到vuser日志返回值 成功,0;

失败,-1说明事务名称非法或者没有调用lr_start_transaction 参数 (格式化输出) 例子 lr_vuser_status_message( "We are on iteration #%s", lr_eval_string( "{iteration}" ) ); lr_continue_on_error 作用 指定错误处理的方法 返回值 无 参数 (int value) 0:取消出错继续执行设置 1:发生错误继续运行脚本 2:发生错误跳至下个Action运行 3:发生错误跳至下一迭代来运行 4:发生错误结束当前用户 例子 //对于夜间执行的场景(一般会打开Continue on error选项)。一些非关键业务,则需要通过lr_continue_on_error (1)开启Continue on error选项,这样即使遇到错误也不会影响脚本的继续执行。但是对于关键业务,就需要关闭该项,使一些关键业务在出错时能够停止执行。//反之,如果在Run-time Settings中没有勾选Continue on error项,则应该通过组合使用lr_continue_on_error (1)与lr_continue_on_error (0)来使一些非关键业务发生错误后继续执行 Action() { …… ……

LoadRunner11操作手册整理_2012.06.30

第一章Loadrunner11简介 随着软件开发技术不断发展和日益成熟,现代应用程序也越来越复杂。应用程序可以利用数十个甚至数百个组件完成以前用纸或人工完成的工作。在业务处理过程中,应用程序复杂度与潜在故障点数目之间有直接的关联。这使得找出问题根本原因变得越来越困难。 软件惊人的变化速度和激增的复杂性为软件开发过程带来了巨大的风险。严格的性能测试是量化和减少这种风险最常见的策略。使用HP LoadRunner 进行自动化负载测试是应用程序部署过程中一个非常重要的环。 1.1为什么要实现性能自动化测试 自动化性能测试是利用产品、人员和流程来降低应用程序、升级程序或补丁程序部署风险的一种手段。自动化性能测试的核心是向预部署系统施加工作负载,同时评估系统性能和最终用户体验。一次组织合理的性能测试可以让用户清楚以下几点: 应用程序对目标用户的响应是否足够迅速? 应用程序是否能够游刃有余地处理预期用户负载? 应用程序是否能够处理业务所需的事务数? 在预期和非预期用户负载下应用程序是否稳定? 是否能够确保用户在使用此应用程序时感到满意? 通过回答这些问题,自动化性能测试可以量化业务状况的更改所带来的影响。这反过来也可以让用户清楚部署此应用程序的风险。有效的自动化性能测试可帮助您做出更加明智的发行决定,防止发行的应用程序带来系统停机和可用性问题。 1.2 LoadRunner 包含哪些组件 LoadRunner 包含以下组件: Virtual User Generator 录制最终用户业务流程并创建自动化性能测试脚本,即Vuser 脚本。 Controller 组织、驱动、管理并监控负载测试。 Load Generator 通过运行Vuser 产生负载。 Analysis 用于查看、剖析和比较性能结果。 Launcher 使您可以从单个访问点访问所有LoadRunner 组件。 1.3了解LoadRunner 术语 场景场景文件根据性能要求定义每次测试期间发生的事件。 Vuse 在场景中,LoadRunner 用虚拟用户(Vuser)代替真实用户。Vuser 模仿真用户的操作来使用应用系统。一个场景可以包含数十、数百乃至数千个Vuser。脚本Vuser 脚本描述Vuser 在场景中执行的操作。 事物要评测服务器性能,需要定义事务。事务代表要评测的终端用户业务流程。

Loadrunner分析结果图说明

Loadrunner分析结果图说明 1、Running Vusers图 使用Vuser 图可以确定方案,执行期间Vuser 的整体行为。 X 轴表示从方案开始运行以来已用的时间。Y 轴表示方案中的Vuser 数。 Vuser-Rendezvous 图主要反映Vuser 是在什么时候集合在这个点上,又是怎样的一个被释放的过程. 图中可以看到在1分4秒的地方50个用户全部集中到达集合点,持续了5分48秒开始释放用户,整个过程持续了6分钟。 2、Hits per Second图 “每秒点击次数”,即使运行场景过程中虚拟用户每秒向Web服务器提交的HTTP请求数。 通过它可以评估虚拟用户产生的负载量,如将其和“平均事务响应时间”图比较,

可以查看点击次数对事务性能产生的影响。通过对查看“每秒点击次数”,可以判断系统是否稳定。系统点击率下降通常表明服务器的响应速度在变慢,需进一步分析,发现系统瓶颈所在。 3、Throughput图 “吞吐率”显示的是场景运行过程中服务器的每秒的吞吐量。其度量单位是字节,表示虚拟用在任何给定的每一秒从服务器获得的数据量。 可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出服务器在流量方面的处理能力以及是否存在瓶颈。 X 轴表示从方案开始运行以来已用的时间。Y 轴表示服务器的吞吐量(以字节为单位)。 “吞吐率”图和“点击率”图的区别: “吞吐率”图,是每秒服务器处理的HTTP申请数。 “点击率”图,是客户端每秒从服务器获得的总数据量。

4、Transaction Summary图 对事务进行综合分析是性能分析的第一步,通过分析测试时间内用户事务的成功与失败情况,可以直接判断出系统是否运行正常。 5、Average Transaction Response Time图 “事务平均响应时间”显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。 例:随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将会有下降的趋势。 可以将事务平均响应时间图与“正在运行的Vuser”图进行比较,了解正在运行的Vuser 的数目对事务执行时间产生的影响。例如:如果平均事务响应时间图显示执行时间逐渐改善,则 可以将其与“正在运行的Vuser”图进行对比,看执行时间是否因为Vuser 负载减少而得到改

LoadRunner基本操作

LoadRunner操作,我们主要使用三大部分:Virtual User Generator、Controller、Analysis ○1Virtual User Generator:录制脚本 ○2Controller:设置运行场景 ○3Analysis:分析 一,测试脚本的录制 录制测试脚本需要启动Loadrunner的Virtual User Generator。 1、选择菜单:File -->New,从打开的协议选择窗口中,选择录制协议Web (HTTP/HTML),点OK按钮。 2、打开菜单:Tools-->Record Options,选择Recording属性页,设置Recording Level为URL-based Script。 3、在工具栏上点击StartRecord开始录制脚本。在弹出对话框中得URL address中输入要测试的网址。在选择Recording into Action下拉框中: 1),应用初始化部分可录制到Vuser_init的Action中(比如登陆该界面)。 2),具体的业务操作可以录制到新建的多个Action中(比如输入用户名和密码登陆)。 3),退出Appeon Web应用的操作可以录制到Vuser_end的Action中。至此,录制脚本完毕。 二,测试脚本的回放 1,回放脚本前,注意要设置一下“Run Time Setting ”。具体操作是:选择菜单Vuser--->Run Time Setting。在“Browser Emulation”页面,在“simulating browser cache”部分选中“Check for newer versions of...”前的小框。 2,按F10进行单步执行,也可以直接点运行全部回放,如果回放过程中,看到所有Action 都能成功执行,说明脚本就录制好了,点击编译,如果不出错,则可进行下一步优化。 三,测试脚本的优化 1,设置事务点统计登录成功的反馈信息:插入事务衡量服务器性能.事务执行中将记录事务执行时间。不限制事务数量。单击菜单insert——start transaction(事务起点),同样insert——end transaction结束事务。 2,设置登录提交操作集合点:衡量在加重负载的情况下服务器的性能状况。集合点经常与事务一起使用.集合点只能放到Action部分.(集合点就是等待某个时刻的到来,大家一起执行,必须放在操作的前面)选择insert——rendezvous插入集合点。 3,设置参数化:作用:1)脚本剪辑,2)更真实的模拟用户的业务情况。 操作: 1),工具栏open parameter list,然后new一个变量,该参数为用户登录的用户名。 2),Type可以选择Table或其它适合的,然后add row添加多个账号,正确或者错误都可以,以供验证。 3)Close,自动保存。 4),把需要参数化的参数选中(也就是这里的用户名),右键选择use existing parameter,然后选第1)步new的变量。至此,参数化添加设置成功。 5),在事务之后可以用这种方法lr_log_message("用户名:%s", lr_eval_string("{XXXX}")); 输出用户名。在runtime setting里面General下选择Run logic设置迭代次数。依次 取出设置的账号。由于没有设置检查点,错误账号也不提示。

LoadRunner中文最简操作入门(内附截图)

LoadRunner入门 案例介绍: 测试Tomcat自带了一个jsp提交表单的性能。 测试页面如下: 输入一个数字后,点击提交,执行程序后返回页面:

测试步骤 第一步:录制脚本 从程序菜单中启动“LoadRunner”->“Visual User Generator” 在协议选择框中选择“Web(HTTP/HTML)”协议,进入主界面。 在工具条上选择“Start Record”,弹出启动“Start Recording”对话框。 在URL输入框中输入上述要测试的第一个页面的URL,即输入表单的页面。 同时注意,请让“Record the application startup”选择框失效,以便手工控制录制开始的时间,跳过刚开始的输入页面。 点击“OK”,这是LoadRunner会启动浏览器,并指向第一个输入页面,同时在浏览器窗口上方将出现一个“Recording Suspended…”的工具条窗口。 等待输入页面显示完全以后,点击工具条窗口中的“Record”按钮,进入录制状态,从现在 开始,在打开的浏览器上的所有操作将被录制成测试的脚本。

执行预定的表单提交动作,等结果页面显示完整以后,点击工具条上的黑色方框按钮,停止录制,回到Visual User Generator的主窗口,此时可以看到脚本已经录制成功。 选择“File”->“Save”,把当前的脚本保存下来 第二步:生成测试场景 选择菜单“Tools”->“Create Controller Scenario”,弹出“Create Scenario”对话框,保持缺省值不变,直接点击“OK”,唯一可能需要该的就是测试结果文件生成的路径。 这时,将启动LoadRunner的另一个工具“Controller”,这是执行压力测试的环境。 Controller的主界面有“Design”和“Run”两个Tab组成,可以随时切换,首先进入的是Design界面,在这里可以调整运行场景的各种参数,如果只是作强度测试,唯一需要调整 就是并发用户数,如下图所示:

LoadRunner安装维护与配置手册范本

LoadRunner安装维护及配置手册 审核: 日期: 批准: 日期: 实施日期xxxx年xx月xx日 版本号A-1 密级部

修改履历

目录 1LOADRUNNER9.10安装 (4) 1.1系统要求 (4) 1.2支持的系统 (5) 1.3安装步骤 (5) 2LOADRUNNER维护和卸载 (11) 2.1修改L ICENSE (11) 2.2显示L OAD R UNNER L ICENSE信息 (11) 2.3卸载 (12) 3配置管理 (12) 3.1使G LOBAL类型的测试支持10000并发 (12) 3.2录制脚本的配置 (13) 3.2.1设置原则 (15) 3.3R UN-T IME S ETTING (17) 3.3.1Vugen和Controller中Run-time Settings的区别 (18)

1LoadRunner9.10安装 一级标题所填容。 1)第一项容; 2)第二项容; 3)第三项容。 1.1系统要求 LoadRunner完整安装的系统要求 表1-1 单独安装VuGen系统要求 表1-2 单独安装Analysis系统要求

表1-3 单独安装Load Generator系统要求 表1-4 1.2支持的系统 LoadRunner允许安装在Windows、Linux、Solaris等平台。 1.3安装步骤 以安装LoadRunner9.1到Windows平台上为例。 1)安装目录下双击setup.exe

图1-1 ?LoadRunner 完整安装程序:此选项安装LoadRunner的主要特性和组件,包括Controller、Virtual User Generator(VuGen)、Analysis和Load Generator。当测试机为主控制机,控制其他测试机时,选择这个选项。 ?Load Generator:此选择用来安装到那些只要加载虚拟用户并进行MI 监听的测试机,这些测试机只是用来被调用,而不需要控制其他测试机。 ?Monitors Over Firewall:此选项用来安装到需要穿越防火墙的代理机器上。因为有时候我们的测试控制机跟产生负载的测试机可能不在同一个局域网,并且之间有防火墙阻隔,就需要用到此功能。网络如下图的情况,就在代理机器上安装此选项: 图1-2

LoadRunner使用注意事项

一般C/S架构的应用程序更关注系统资源的使用情况、数据库性能及运行的配置要求等。例如,内存,用户连接数、数据库思索、数据库cache命中率,运行的最低配置等。 而B/S架构的应用程序,会关注服务器的相关指标,如每秒点击数、吞吐数、尝试连接数、事务成功率。 学习LoadRunner最好的是F1的函数帮助手册。 LoadRunner 通过模拟多个用户同时在应用程序中工作的环境,对应用程序进行负载测试。当应用程序在负载状态下运行时,LoadRunner 会准确评测、监控并分析系统的性能和功能。 使用HP LoadRunner 可以创建模拟场景,并定义性能测试会话期间发生在场景中的事件。在场景中,LoadRunner 会用虚拟用户(或称Vuser)代替物理计算机上的真实用户。这些Vuser 以一种可重复、可预测的方式模拟典型用户的操作,对系统施加负载。 LoadRunner的性能测试过程一般为计划脚本、创建脚本、设计场景、运行场景、分析结果。 LoadRunner 测试流程由以下四个基本步骤组成: ?步骤 1 - 创建脚本。捕获在您的应用程序上执行的典型最终用户业务流程。 ?步骤 2 - 设计模拟场景。通过定义测试期间发生的事件,设置负载测试环境。 ?步骤 3 - 运行场景。运行、管理并监控负载测试。 ?步骤 4 - 分析结果。分析 LoadRunner 在负载测试期间生成的性能数据。 脚本优化的方法:插入事务、插入集合点(rendezvous)、设置思考时间、设置参数化(web_reg_save_param_ex)、设置关联、设置检查点以及插入注释等。 LR12中插入事务、插入集合点(rendezvous)的方式: 插入事务:Design--Insert in Script--Start Transaction 插入集合点:Design--Insert in Script--Rendezvous

Loadrunner11中文帮助文档

Loadrunner11中文帮助文档 第 1 课介绍 LoadRunner 和测试概念。第 2 课提供一个测试示例说明LoadRunner 的功能。第 3 课至第 6 课说明如何使用HP Virtual User Generator 创建脚本。第 7 课至第 9 课说明如何使用 LoadRunner Controller 设计并运行负载测试。第 10 课介绍 Analysis 工具说明如何创建图和报告来帮助分析负载测试结果。学完本教程您可以对自己的应用程序设计及运行一个简单测试并对其进行监控。建议按照提供的课程顺序学习本教程。11第 1 课简介LoadRunner在过去的 30 年中许多公司已经将软件作为了自动化工作的工具。软件应用程序已经极大地提高了人们的工作效率和社会生产力并成为促进全球经济协作与信息共享的一种新媒介。事实上软件应用程序已经成为各类业务关键信息共享和事务处理的主要途径。如今软件应用程序包含了从电子邮件到用于事务处理的 CRM 等业务。随着软件开发技术不断发展和日益成熟现代应用程序也越来越复杂。应用程序可以利用数十个甚至数百个组件完成以前用纸或人工完成的工作。在业务处理过程中应用程序复杂度与潜在故障点数目之间有直接的关联。这使得找出问题根本原因变得越来越困难。而且软件应用程序和汽车不同。它们没有仅在损坏后才需要更换的永久部件。无论是要增强竞争优势还是要响应业务状况中的变化软件应用程序每周、每月、每年都在变化。不断的变化又会产生其他风险而这些风险需要由公司来管理。软件惊人的变化速度和激增的复杂性为软件开发过程带来了巨大的风险。严格的性能测试是量化和减少这种风险最常见的策略。使用 HP LoadRunner 进行自动化负载测试是应用程序部署过程中一个非常重要的环节。本节介绍以下主题?7?2第 12 页的“为什么要实现性能测试自动化”?7?2第 12 页的“LoadRunner 包含哪些组件”?7?2第 13 页的“了解 LoadRunner 术语”?7?2第 13 页的“什么是负载测试流程”?7?2第 13 页的“熟悉HP Web Tours”?7?2第 15 页的“应用程序要求”第 1 课?6?1 简介 LoadRunner1212为什么要实现性能测试自动化自动化性能测试是利用产品、人员和流程来降低应用程序、升级程序或补丁程序部署风险的一种手段。自动化性能测试的核心是向预部署系统施加工作负载同时评估系统性能和最终用户体验。一次组织合理的性能测试可以让用户清楚以下几点?7?2应用程序对目标用户的响应是否足够迅速?7?2应用程序是否能够游刃有余地处理预期用户负载?7?2应用程序是否能够处理业务所需的事务数?7?2在预期和非预期用户负载下应用程序是否稳定?7?2是否能够确保用户在使用此应用程序时感到满意通过回答这些问题自动化性能测试可以量化业务状况的更改所带来的影响。这反过来也可以让用户清楚部署此应用程序的风险。有效的自动化性能测试可帮助您做出更加明智的发行决定防止发行的应用程序带来系统停机和可用性问题。LoadRunner 包含哪些组件LoadRunner 包含以下组件?7?2Virtual User Generator 录制最终用户业务流程并创建自动化性能测试脚本即 Vuser 脚本。?7?2Controller 组织、驱动、管理并监控负载测试。?7?2Load Generator 通过运行 Vuser 产生负载。?7?2Analysis 用于查看、剖析和比较性能结果。?7?2Launcher 使您可以从单个访问点访问所有LoadRunner 组件。第 1 课?6?1 简介 LoadRunner1313了解 LoadRunner 术语场景文件根据性能要求定义每次测试期间发生的事件。在场景中LoadRunner 用虚拟用户或称 Vuser代替真实用户。Vuser 模仿真实用户的操作来使用应用系统。一个场景可以包含数十、数百乃至数千个 Vuser。Vuser 脚本描述 Vuser 在场景中执行的操作。要评测服务器性能需要定义事务。事务代表要评测的终端

相关主题
文本预览
相关文档 最新文档