admin管理员组

文章数量:1566357

2024年1月25日发(作者:)

Loadrunner学习总结

LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner可适用于各种体架构的自动负载测试,能预测系统行为并评估系统性能。操作流程如下:

1. 录制脚本:

选择适当的协议,web服务器一般选择http协议。

录制方式一般选择HTML-based Script,但有下列情况选择URL-based

Script:不是基于浏览器的应用程序,应用程序中包含javaScript脚本且产生了请求,基于浏览器的应用程序使用了https协议

默认设置记录的浏览器为IE,不要使用其他浏览器

在录制过程中不要后退页面

2. 录制结束后点绿色方块按钮结束录制,系统会自动生成录制脚本。

3. 录制完之后就是对脚本的回放处理,可以在运行时设置界面设置回放的设置,如:迭代(重复次数)、步(开始新迭代时候的时间设置)、思考时间(录制时间的停留时间)等,设置好之后就开始回放。

4. 回放结束后,回放的情况会显示出来,没有错误表示录制的进程没有问题。

5. 负载测试运行

选择录制的脚本添加,然后确认。

可以在场景计划

可以在场景计划这里设置要测试的参数,比如开始用户数,持续时间,停止方式等。

如果想测定某个操作的响应时间,可以在脚本中插入事务,使用事务把该操作包装起来。分析执行结果的时候可以查看到该事务的响应时间。

插入集合点,可以使多个用户并发进行同一操作,提高操作的并发程度,以对服务器增加负载,测试并发能力。

在Run-Time Setting设置中,设置网络带宽以模拟不同带宽的网络;设置block、action的迭代次数。

对脚本进行参数化,设置参数变更方式

运行设置界面可以添加用户数,场景的开始等操作。

设置完成后就开始运行。等待结果分析。

设置场景主要包含:选择脚本,设定执行用户数,选择测试负载机,设置脚本执行的方式,设置集合点点,设置Run-Time Setting。

设置脚本的执行方式:设置用户的启动方式,设置用户的终止方式。

6. 分析结果

查看分析结果,查看事务的响应时间、服务器的平均吞吐量,执行用户人数,查看线程图,用户变化图,响应时间图,吞吐量图。查看服务器监控的计数器图。分析各个性能指标是否符合需求。比如:可用内存曲线是否正常,是否存在内存泄漏;CPU利用率曲线是否平缓,是否低于90%;线程数是否正常,而不是一直在增长;网络带宽是否满足流量需求;磁盘是否满足用户操作要求等等

分析各个曲线图是否存在异常情况。比如:响应时间是否满足需求;系统是否支持要求的并发;随着负载的增加,吞吐量是否同样增加,吞吐量是否存在瓶颈等等。有时候分析单个要素并不能反映存在的问题,需要多个要素联系起来进行分析。比如,可以把用户数的变化图和吞吐量图联系起来进行分析。LoadRunner的分析工具支持把两个表合并进行分析,把用户数变化图和吞吐量变化图合并,就可以观察吞吐量是否随着用户数的变化而相应时间。如果随着

用户数的增加,吞吐量持平或者下降,说明此时系统吞吐量达到了最大值,系统达到了瓶颈。

分析名词解释:

Transactions(用户事务分析):用户事务分析是站在用户角度进行的基础性能分析。

1、Transation Sunmmary(事务综述)

对事务进行综合分析是性能分析的第一步,通过分析测试时间内用户事务的成功与失败情况,可以直接判断出系统是否运行正常。

2、Average Transaciton Response Time(事务平均响应时间)

“事务平均响应时间”显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。

例:随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将会有下降的趋势。

3、Transactions per Second(每秒通过事务数/TPS)

“每秒通过事务数/TPS”显示在场景运行的每一秒钟,每个事务通过、失败以及停止的数量,使考查系统性能的一个重要参数。通过它可以确定系统在任何给定时刻的时间事务负载。分析TPS主要是看曲线的性能走向。

将它与平均事务响应时间进行对比,可以分析事务数目对执行时间的影响。

例:当压力加大时,点击率/TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈。

4、Total Transactions per Second(每秒通过事务总数)

“每秒通过事务总数”显示在场景运行时,在每一秒内通过的事务总数、失败的事务总署以及停止的事务总数。

5、Transaction Performance Sunmmary(事务性能摘要)

“事务性能摘要”显示方案中所有事务的最小、最大和平均执行时间,可以直接判断响应时间是否符合用户的要求。

重点关注事务的平均和最大执行时间,如果其范围不在用户可以接受的时间范围内,需要进行原因分析。

6、Transaction Response Time Under Load(事务响应时间与负载)

“事务响应时间与负载”是“正在运行的虚拟用户”图和“平均响应事务时间”图的组合,通过它可以看出在任一时间点事务响应时间与用户数目的关系,从而掌握系统在用户并发方面的性能数据,为扩展用户系统提供参考。此图可以查看虚拟用户负载对执行时间的总体影响,对分析具有渐变负载的测试场景比较有用。

7、Transaction Response Time(Percentile)(事务响应时间(百分比))

“事务响应时间(百分比)”是根据测试结果进行分析而得到的综合分析图,也就是工具通过一些统计分析方法间接得到的图表。通过它可以分析在给定事务响应时间范围内能执行的事务百分比。

8、Transaction Response Time(Distribution)(事务响应时间(分布))

“事务响应时间(分布)”显示在场景运行过程中,事务执行所用时间的分布,通过它可以了解测试过程中不同响应时间的事务数量。如果系统预先定义了相关事务可以接受的最小和最大事务响应时间,则可以使用此图确 定服务器性能是否在可以接受的范围内。

其他相关设置:

1.

事务插入

打开录入的脚本,找到要插入的位置,右键鼠标,点插入—>开始事务,输入事务名称即可.

然后在相应的结束位置,右键鼠标,点插入—>结束事务,即可。

2.

设置集合点

右键鼠标,插入-->集合,输入集合点名称即可。

3.

参数化

选中要参数化的内容。

方法一,右键---【Replace with a new parameter】

方法二,菜单【insert】----【new Parameter…】

Parameter Properties (参数属性对话框)----我们的参数化设置就通过这个对话框完成。

参数化的方式:

其实参数化得方式有很多种,这里简述几种比较常见人方式。其实方式略有不同,但其结果都是将数据添加进来。

1、 编辑数据

点击Create Table 会出现表格,在表格,再次点击Edit with Notepad ,然后会打开一个记事本,我们可以对记事本进行添加数据

2、 添加dat数据文件

点击File输入框后面的“Browse..”按钮,找到本地的txt数据文件,进行添加就可以了。

需要注意的是,文件里面的数据不要乱写,每条数据一行,不然会读取有误。

3、 数据库添加数据

在很多情况下,我添加的数据不是十条二十条,也不是一百两百,如果还通过上面的两种方式添加,我想会是一件非常纠结的事情。所以我们可以通过数据库将数据导入。你是否疑虑数据库的数据怎么弄,数据库的数据生成非常简单,可以写一段简单的代码生成,也可以通过数据库数据生成工具来完成

点击Date Wizard 打开连接数据库向导。

这里先告诉你有这种方式,后面再介绍具体操作。^_^

4、 其他类型设置

如果我们要参数化的不是一个文件,比如是特定的日期时间,可以从Parameter type 列表中进行选择

这里可以设置日期时间格式,循环迭代方式,不过除了file类型外,其他用的不多。其他类型用法我也不是十分了解。

参数化之间的关联

前面我们已经对用户名进行了参数化,或对密码进行了参数化,这样是不是脚本就能正常跑了,不好说。因为用户名和密码不是一一对应关系,每次运行脚本时取的用户名和密码没有对应上的话肯定就会出问题。

假设,我们已经对用户名已经进行了参数化,参数名为【username】,下面设置密码参数化与用户名关联。

点击“Properites…”会打开编辑用户名参数化窗口。File列表框中,刚才保存用户名信息的文件""。

点击“Add Column…”,添加新的一列信息,用于放置密码。

点击“Edit with Notepad”再次编辑参数化数据文件,使用户名密码建立一一对应关系。

完成之后,我们已经成功对用户名和密码进行了参数化,并且让用户名和密码形成了对应关系。

数据分配与更新方式

脚本设置完参数化,脚本运行的每一遍所取的参数化的值都不一样,那么这个值按照个什么情况来取呢?会有很多种方式

Select next row【选择下一行】:

顺序(Sequential):按照参数化的数据顺序,一个一个的来取。

随机(Random):参数化中的数据,每次随机的从中抽取数据。

唯一(Unique):为每个虚拟用户分配一条唯一的数据

Update value on【更新时的值】:

每次迭代(Each iteration) :每次迭代时取新的值,假如50个用户都取第一条数据,称为一次迭代;完了50个用户都取第二条数据,后面以此类推。

每次出现(Each occurrence):每次参数时取新的值,这里强调前后两次取值不能相同。

只取一次(once) :参数化中的数据,一条数据只能被抽取一次。(如果数据轮次完,脚本还在运行将会报错)

上面两个选项都有三种情况,如果将他们进行组合,将产生九种取值方式。

Select Next Row

【选择下一行】

Update Value On

【更新时的值】

Replay Result

【结果】

结果:分别将15条数据写入数据表中

功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开每次迭代(Each iteration) 始取

如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条

结果:分别将15条数据写入数据表中

功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取

如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条

结果:表中写入15条一模一样的数据。

顺序(Sequential)

只取一次(once)

功能说明:每次迭代都取参数化文件中第一行的数据。

结果:表中写入15条数据,但可能有重复数据出现

每次迭代(Each iteration)

功能说明:每次从参数化文件中随机选择一行数据进行赋值

每次出现(Each occurrence)

结果:表中写入15条数据,但可能有重复数据出现

顺序(Sequential)

顺序(Sequential)

每次出现(Each occurrence)

随机(Random)

随机(Random)

功能说明:每次从参数化文件中随机选择一行数据进行赋值

结果:表中写入15条相同数据

随机(Random)

只取一次(once)

功能说明:第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。

结果:分别将15条数据写入数据表中

功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此每次迭代(Each iteration)

类推。

自动分配块大小

注:如果设置迭代次数为16次。结果:在执行第16次迭代时会抛异常,异常日志可在LoadRunner的回放日志(replayLog)中看到。

结果:分别将15条数据写入数据表中

功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。

注:如果设置迭代次数为16次,而参数化文件中只有15条数据,明显数据不够。此时可以设置“when out of values”属性来判断当数据不够时的处理方式

Abort Vuser:中断虚拟用户

Countinue in a cylic manage:循环取参数化文件中的值,即:当参数化文件中的值取完后又从参数化文件的第一行开始取值。

Countinue with last value:继续用最后一条数据

结果:表中写入15条相同数据

唯一(Unique) 只取一次(once)

功能说明:每次都取参数文件中的第一条数据进行赋值

唯一(Unique)

每次出现唯一(Unique)

(Each occurrence)

步长为1

4. 其他设置

4.1 如果录制FTP脚本,需要在录制时候配置端口的映射,如下图所示:

填写FTP服务器的ip地址,服务ID选择FTP,然后点击更新,录制时候必须打钩选择。

4.2 在脚本场景中,可以在工具选项中,把超时时间设置大一些,如设置成300s、500s等,方便压力测试时出现不必要超时错误。如下图所示:

本文标签: 事务时间数据