1. loadrunner如何使用
1、使用LoadRunner 完成测试一般分为四个步骤:
2、Vvitrual User Generator 创建脚本
创建脚本,选择协议
录制脚本
编辑脚本
检查修改脚本是否有误
3、中央控制器(Controller)来调度虚拟用户
创建Scenario,选择脚本
设置机器虚拟用户数
设置Schele
如果模拟多机测试,设置Ip Spoofer
4、运行脚本
分析scenario
分析测试结果
5、安装LoadRunner 中文版
LoadRunner 分为Windows 版本和Unix 版本。如果我们的所有测试环境基于Windows
平台, 那么我们只要安装Windows 版本即可。本章讲解的安装过程就是LoadRunner7.8中文的Windows 版本的安装。
6、使用LoadRunner进行负载/压力测试
7、录制基本的用户脚本
创建用户脚本需要用到VuGen。提示: 运行VuGen 最好在1024*768 的分辨率下, 否则有些工具栏会看不到。
启动Visual User Generator 后, 通过菜单新建一个用户脚本, 选择系统通讯的协议。
这里我们需要测试的是Web 应用,同时考虑到后台SQL数据库所以我们需要选择Web(HTTP/HTML)协议+SQL SERVER协议,确定后, 进入主窗体。通过菜单来启动录制脚本的命令。
8、在URL 中添入要测试的Web 站点地址..。
●测试http://lms.ah.sp.com.cn/lms-lmm/loginForm.do选择要把录制的脚本放到哪一个部分, 默认情况下是“Action”。
这里简单说明一下:VuGen 中的脚本分为三部分:vuser_init、vuser_end 和Action。其
中vuser_init 和vuser_end 都只能存在一个, 不能再分割, 而Action 还可以分成无数多个部分( 通过点击New 按钮, 新建ActionXXX)。在录制需要登陆的系统时, 我们把登陆部分放到vuser_init 中, 把登陆后的操作部分放到Action 中, 把注销关闭登陆部分放到vuser_end 中。( 如果需要在登陆操作设集合点, 那么登陆操作也要放到Action 中, 因为vuser_init 中不能添加集合点) 在其他情况下, 我们只要把操作部分放到Action 中即可。注意: 在重复执行测试脚本时,vuser_init 和vuser_end 中的内容只会执行一次, 重复执行的只是Action 中的部分。
点“ 选项 ”按钮, 进入录制的设置窗体, 这里一般情况下不需要改动。
●然后点“OK” 后,VuGen 开始录制脚本。在录制过程中, 不要使用浏览器的“ 后退” 功能,LoadRunner 支持不太好! 录制过程中, 在屏幕上会有一个工具条出现。录制的过程和WinRunner 有些类似, 不再多介绍。录制完成后, 按下“ 结束录制” 按钮,VuGen 自动生成用户脚本, 退出录制过程。
完善测试脚本
当录制完一个基本的用户脚本后, 在正式使用前我们还需要完善测试脚本, 增强脚本的
灵活性。一般情况下, 我们通过以下几种方法来完善测试脚本。插入事务、插入结合点、插入注解、参数化输入。这里只举例介绍参数化如何设置,其它只作简单介绍。
插入事务
事务(Transaction): 为了衡量服务器的性能, 我们需要定义事务。比如: 我们在脚本
中有一个数据查询操作, 为了衡量服务器执行查询操作的性能, 我们把这个操作定义为一个事务, 这样在运行测试脚本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时, 直到运行到该事务的结束点, 计时结束。这个事务的运行时间在结果中会有反映。
插入事务操作可以在录制过程中进行, 也可以在录制结束后进行。LoadRunner 运行在
脚本中插入不限数量的事务。
具体的操作方法如下: 在需要定义事务的操作前面, 通过菜单或者工具栏插入。输入该事务的名称。注意: 事务的名称最好要有意义, 能够清楚的说明该事务完成的动作。插入事务的开始点后, 下面需要在需要定义事务的操作后面插入事务的“ 结束点”。同样可以通过菜单或者工具栏插入。默认情况下, 事务的名称列出最近的一个事务名称。一般情况下, 事务名称不用修改。事务的状态默认情况下是LR_AUTO。一般情况下, 我们也不需要修改, 除非在手工编写代码时, 有可能需要手动设置事务的状态。
插入集合点
插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中, 可能会
要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点, 这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待, 当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据, 从而达到测试计划中的需求。
注意: 集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init 和vuser_end 中不能插入集合点。具体的操作方法如下: 在需要插入集合点的前面, 通过菜单或者工具栏操作输入该集合点的名称。注意: 集合点的名称最好要有意义, 能够清楚的说明该集合点完
成的动作。
插入注释
注释的作用就不多说了, 不过插入注释最好是在录制过程中。具体的操作方法如下: 在需要插入注释的前面, 通过菜单或者工具栏操作
参数化输入
如果用户在录制脚本过程中, 填写提交了一些数据, 比如要增加数据库记录。这些操作
都被记录到了脚本中。当多个虚拟用户运行脚本时, 都会提交相同的记录, 这样不符合实际的运行情况, 而且有可能引起冲突。为了更加真实的模拟实际环境, 需要各种各样的输入。参数化输入是一种不错的方法。
用参数表示用户的脚本有两个优点:
① 可以使脚本的长度变短。
② 可以使用不同的数值来测试你的脚本。例如, 如果你企图搜索不同名称的图书, 你
仅仅需要写提交函数一次。在回放的过程中, 你可以使用不同的参数值, 而不只搜索一
个特定名称的值。
参数化包含以下两项任务:
① 在脚本中用参数取代常量值。
② 设置参数的属性以及数据源。
参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。
另外, 不是所有的函数都可以参数化的。
参数化输入的讲解, 我们采用一个例子的方式来进行。
在本例中我们参数化用户的登陆名:
先看如下脚本,通过脚本录制找到用户登陆部分,如图
参数名随意取,建议取通俗易懂的名字,下面我们重点介绍一下参数的类型。
●DateTime: 很简单, 在需要输入日期/时间的地方, 可以用DateTime 类型来替代。
其属性设置也很简单, 选择一种格式即可。当然也可以定制格式。
.●Group Name:暂时不知道何处能用到,但设置比较简单。在实际运行中,LoadRunner
使用该虚拟用户所在的Vuser Group 来代替。但是在VuGen 中运行时,Group Name
将会是None
.●Load Generator Name: 在实际运行中,LoadRunner 使用该虚拟用户所在Load Generator 的机器名来代替。
.●Iteration Number: 在实际运行中,LoadRunner 使用该测试脚本当前循环的次数来
代替。
.●Random Number: 随机数。很简单。在属性设置中可以设置产生随机数的范围
.●Unique Number:唯一的数。在属性设置中可以设置第一个数以及递增的数的大小。
注意: 使用该参数类型必须注意可以接受的最大数。例如: 某个文本框能接受的
最大数为99。当使用该参数类型时, 设置第一个数为1, 递增的数为1, 但100 个
虚拟用户同时运行时,第100 个虚拟用户输入的将是100,这样脚本运行将会出错。
注意: 这里说的递增意思是各个用户取第一个值的递增数, 每个用户相邻的两次循
环之间的差值为1。举例说明: 假如起始数为1, 递增为5, 那么第一个用户第一
次循环取值1, 第二次循环取值2; 第二个用户第一次循环取值为6, 第二次为7;
依次类推。
●Vuser ID: 设置比较简单。在实际运行中,LoadRunner 使用该虚拟用户的ID 来代
替,该ID 是由Controller 来控制的。但是在VuGen 中运行时,Vuser ID 将会是–1。
File: 需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据( 下
面我们将会介绍)
●User Defined Function: 从用户开发的dll 文件提取数据。就目前我认为, 这种方式
没有必要。VuGen 支持C 语言的语法,在VuGen 中重新编写类似的函数应该不难。
上面的例子中, 我们取随机数即可。点“Properties… ..” 按钮, 进行属性设置窗口
添入随机数的取值范围为(1-50), 选择一种数据格式。在“属性” 中有以下几
个选项:
◆Each Occurrence:在运行时, 每遇到一次该参数, 便会取一个新的值
◆Each iteration:运行时, 在每一次循环中都取相同的值
◆Once:运行时, 在每次循环中, 该参数只取一次值
这里我们用的是随机数, 选择Each Occurrence 非常合适。
下面我们再介绍用数据库中的用户名来参数化登陆用户名。
框选住登陆名,点鼠标右键,弹出对话框,选择“替换为新参数”弹出对话框,此时参数名输入:name,参数类型选择File,如图
注意: 参数的文件名不要使用con.dat、pm.dat 或者lpt*.dat 等系统装置名下面我们将会连接数据库, 从数据表中选择用户名。点“数据向导” 按钮,显示如图
添入连接字符串, 点“创建” 按钮,选择事先配置好的ODBC连接。在SQL语句里输入select查询语句,出现如图窗口
提醒: 在参数数据显示区, 最多只能看到100 行, 如果数据超过100 行, 只能点“编辑” 按钮, 进入记事本看。
“选择下一行 ” 有以下几种选择:
●Sequential: 按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取
●Random: 在每次循环里随机的读取一个, 但是在循环中一直保持不变
●Unique : 唯一的数。注意: 使用该类型必须注意数据表有足够多的数。比如Controller 中设定20 个虚拟用户进行5 次循环, 那么编号为1 的虚拟用户取前5 个数, 编号为2 的虚拟用户取6-10 的数, 依次类推, 这样数据表中至少要有100 个数据, 否则Controller 运行过程中会返回一个错误。
“按编号”指选择列表中的那一列数据,从左到右分别是1、2、3依次
通常用在有关联性的数据上面。我们这里取值Sequential 即可。完成设置关闭即可
4.3 单机运行测试脚本
经过以上的各个步骤后, 脚本就可以运行了。运行脚本可以通过菜单或者工具栏来操作。
执行“ 运行” 命令后,VuGen 先编译脚本, 检查是否有语法等错误。如果有错误,VuGen
将会提示错误。双击错误提示,VuGen 能够定位到出现错误的那一行。为了验证脚本的正
确性, 我们还可以调试脚本, 比如在脚本中加断点等, 操作和在VC 中完全一样, 相信大家谁都不会感到陌生。如果编译通过, 就会开始运行。然后会出现运行结果。
2. 如何调试LoadRunner脚本
VuGen 包含两个选项来帮助调试 Vuser 脚本:“分步运行”命令和断点。这些选项不适用于 VBscript 和 VB 应用程序类型的 Vuser。
要查看“调试”工具栏,请执行下列操作:
右键单击工具栏区域,然后选择“调试”。“调试”工具栏将显示在工具栏区域
中。
“分步运行”命令
“分步运行”命令在运行脚本时一次运行一行。通过该命令,可以依次查看脚本
每一行的执行情况。
要分步运行脚本,请执行下列操作:
1 依次选择“Vuser” > “分步运行”,或者单击“调试”工具栏上的“步骤”按
钮。VuGen 将执行脚本的第一行。
2 继续单击“步骤”按钮来执行该脚本,直到脚本运行完成为止。
断点
通过断点可以使脚本在特定位置暂停执行。它可用于在执行期间的预定点处检查
该脚本对应用程序的影响。要管理书签,请参阅第 186 页上的“断点管理器”。
要设置断点,请执行下列操作:
1 将光标置于脚本中要停止执行的行上。
2 依次选择“插入” > “切换断点”,或者单击“调试”工具栏上的“断点”按
钮。也可以按键盘上的 F9 键。将在脚本的左边距显示“断点”符号 ( )。
3 要禁用断点,请将光标置于包含断点符号的行上,然后单击“调试”工具栏上的
“启用 / 禁用断点”按钮。“断点”符号中将会显示一个白点 ( )。禁用一个断点
后,执行将在下一个断点处暂停。再次单击该按钮可以启用断点。
要删除断点,请将光标置于包含断点符号的行上,然后单击“断点”按钮或者按
F9 键。
要运行包含断点的脚本,请执行下列操作:
1 照常运行脚本。
到达断点时, VuGen 将暂停脚本的执行。可以检查脚本运行到断点时的效果,
并进行必要的更改,然后从断点处重新启动脚本。
2 要继续执行,请依次选择“Vuser” > “运行”。
重新启动后,脚本将继续执行,直到遇到下一个断点或脚本完成。
断点管理器
可以使用断点管理器来查看和管理断点。通过断点管理器您可以操纵脚本中的所
有断点。
要打开断点管理器,请选择“编辑” > “断点”。
要跳至脚本中的断点处,请执行下列操作:
1 从列表中选择一个断点。
2 单击“在脚本中突出显示”。则将在脚本中突出显示该行。
注意,每次只能突出显示一个断点。
管理断点
可以通过断点管理器添加、删除、禁用断点或者为断点设置条件
要添加断点,请执行下列操作:
1 单击“添加”。将打开“添加断点”对话框。
2 选择“操作”,并指定要添加断点的行号。
3 单击“确定”。该断点将被添加到断点列表中。
要删除断点,请执行下列操作:
1 要删除单个断点,请选择该断点并单击“删除”。
2 要立即删除所有断点,请单击“全部删除”。
要启用 / 禁用断点,请执行下列操作:
1 要启用断点,请在“操作”列内选中操作的复选框。
2 要禁用断点,请在“操作”列内清除操作的复选框。
通过断点管理器您可以将断点设置为在某些条件下暂停执行。
3. loadrunner怎么脚本代码快速添加注释
选中后,CTRL+ALT+C
取消注释,CTRL+ALT+U
4. 如何使用LoadRunner进行Web性能测试
1、明确压力点,根据压力点设计多少种场景组合
2、把文档(包括多少种场景组合、场景与场景组合条件的对应表)写好
3、如果监测UNIX机器,在被监测的机器需要安装监测Unix的进程
4、让开发人员帮助我们准备测试数据或他们写相关的文档我们来准备数据
5、让开发人员做一个恢复数据的脚本,以便于我们每次测试的时候都能够有一个相同的环境
6、针对每一个模块包括四个子文件夹:如模块A下包括“脚本”“场景”“结果”“图表” 四个子文件夹,每个子文件夹储存对应的文件,如下表所示
其中:结果名“1场景”是在场景中的“Results Setting”中设置的,具体的设置见“建立场景”部分,这里也可以有另外一种方法:在打开模板设置,如下:
选中“Automatically save the session as:”并且在“%ResultDir%”后面填写你想保存的文件名,当你打开某个lrr文件时,系统自动在当前目录中生成一个文件保存分析图表,如下图所示:
生成测试脚本
1、 把登陆部分放到“vuser_init”部分,把需要测试的内容部分放到“Action”部分执行;但是如果是模拟多个用户登陆系统,则要把登陆部分放到Action部分来实现
2、 录制脚本后,想查询某个函数的原型,按“F1”键
3、 确认脚本中哪些参数是需要进行参数化的(最好能可以和开发人员一起确认)
4、 在脚本参数化时把函数web_submit_data()中的ITEMDATA后面的数据参数化,因为这些数据是传递给服务器的,当然也可以把一个函数中的所有相同变量都替换掉
5、 脚本中无用的部分用“/*”“*/”“//”注释掉,但最好不要删除
6、 调试脚本遵循以下原则:
确认在VU里SUSI(单用户单循环次数single user & single iteration)
确认在VU里SUMI(单用户多循环次数single user & multi iteration)
确认在controller中MUSI(多用户单循环次数multi user & single iteration)
确认在controller中MUMI(多用户多循环次数 multi user & multi iteration)
7、 事务的名称取的有意义便于事务之间的区分,把所有的事务名都记录在一起,便于在测试结果概要中区分它们,这要写成一个表:某次测试有哪些模块,每个模块中有哪些事务(见对应的“关系表”)
8、 在 “Parameter List”中可以选择参数类型“Random Number”,使某一个参数取设定的范围内的随机值
建立场景
1、 把场景名称编号,并制定出一份场景名称和场景条件组合的对应表。比如,场景m对应于“某一模块_xx个vu _分z台machine”(见“关系表”中的例子)
2、 根据上面的对应表把场景设置好,需要设置的要素如下:总体多少个用户、分多少个组、每个组有多少个用户、分几台机器运行、每个脚本迭代多少次、是否回放think time时间、检查Parameter List中每个参数设置是否正确、参数从表中取值间隔是否正确、是否选中“Initialize all Vusers before Run”
3、 测试结果应该保存为“m场景0,m场景1,…”
4、 把虚拟用户分散到几台机器上和在一台机器上面都要进行测试,因为有可以效果不同
5、 场景中如果有需要改动的地方,必须新建一个场景(建议使用“另存为”,然后再修改结果文件名,再选择相应的脚本),并把场景按顺序编号,先维护好场景与场景组合条件的对应表,以便以后的查找,并且在结果 “Results Setting”中设置的结果名与场景名相同。建议在“Results Setting”中选中“Automatically create a results directory for each scenario executeon”让它每次自动累加,不建议选中“Automatically overwrite existing results directory without prompting for confirmation”,因为我们不要覆盖掉以前的测试结果,把它保存下来以便有个根据。
6、 需要注意的地方:当在“Parameter List”中的“Select next row”选中“Unique”时,如果再在“Edit Schele\Schele by Scenario\Duration”中选中第二项“Run for XX after the ramp up has been completed”时系统就会报错,提示“Unique”类型不相符。
7、 在“Run-time Setting”设置中,“General”中的“Pacing”非常有用,可以设置每次迭代之间相隔多少时间,也可以是随机的取值
8、 建议:把“Parameter List”和“Run-time Setting”中的所有设置都搞熟悉,这样便于以后对脚本和场景进行设置
9、 设计“Parameter List”时的小技巧:即在“Allocate X values for each Vuser”时,尽量 把它的间隔在数据容许的范围内取大些,这样可以做从一次迭代到最大值迭代,而且对脚本没有什么影响
10、当一个脚本中有多个事务,在事务前面增加集合点时需要一点技巧。或者我们把脚本复制几个,或者我这样做:测试前面的事务的压力时,把后面的事务前的集合点设置为不激活状态;在测试后面的事务的压力时,把前面的事务的集合点设置为不激活状态,另外最好不选中Initialize all Vusers before Run,具体参见Controller中的“Scenario/Rendezvous”,及用户手册(按F1)
11、把持续时间从最后60秒改为整个场景的时间,右键单击某个图,选择“Configue”,修改Graph Time即可
12、每次从一个场景修改后保存为另一个场景时别忘记把结果保存文件名修改相对应的文件名。在设置结果保存文件名时有一个技巧:如果你打开这个窗口时,点击确定则系统会
默认以“4场景2”为基点向后加“4场景20”“4场景21”等等,但是如果你把结果文件名后面的数据去掉,改为“4场景”,点击确定后,系统会自动搜索是以“4场景”开头的文件名,并在它的后面继续增加,比如把它改为“4场景”时,下次结果保存在“4场景3”中。而且他在搜索的时候搜索以“4场景”开头的文件名,从0开始,有的话就不取代而跳过,没有的话就取代。
运行场景
1、 运行场景前需要注意的事项:每个组的虚拟用户数、迭代次数、think time、参数化时的取值间隔、执行恢复数据的脚本、确认虚拟机的LoadRunner Agent Service打开
2、 如果监测Unix,运行场景前需要启动监测Unix进程,启动的命令“rpc.rstatd”、查看这个进程是否启动的命令“rpcinfo –p”
3、 运行前使Generator机器处理Ready状态
4、 确认被监测的机器已经连接上去,并且添加自己所需要的计数器
5、 运行之前一定要确认系统中压力点的数据量是多少
6、 确认以上都正确时再运行测试场景
监视场景
打开 “Passed Transactions”或“Failed Transactions”,可以随时观察到事务的运行状态
分析测试结果
1、 打开Analysis后,把经过数据处理的结果图表保存到“图表”文件夹,并且文件名和场景名、结果名相同,这样便于以后的查阅。也可以省去每次进行数据处理的时间。
2、 可以通过点击界面上的 “View Run Time Setting”可以看到此场景运行时的一些场景设置
3、 在关联图表时可以自动调节每个元素的比例,点击右键,选择 即可
4、 每次测试结束后确认所做的操作是正确的,确认正确后再分析结果
5、 在结果文件夹中为每个场景建立一个文档,把每次运行时的情况记录下来以便于写测试报告,尤其运行错误的原因记录下来,并把开发人员所做的修改也记录下来以便知道开发人员做了些什么修改
6、 在分析运行结果时可以把几个结果合在一起进行比较,打开如下“Cross with Result…”
5. loadrunner怎么自定义参数并脚本获取参数
方法/步骤
使用loadrunner创建一个脚本的,然后进行点击loadrunner菜单中的“vuser”的选项。
弹出了下拉菜单中进行选中为“run-time settings”的选项即可。
进入到了run-time settings框后进行选中为additional attributes的选项。
进入到了additional attributes后,点击“add”添加按钮。
在列表中进行添加为argument name为test,argument value为123456
然后在脚本代码中进行为lr_error_message(lr_get_attrib_string("test"))
在进行脚本中代码即可后,会在log的信息中找到为该项信息,test对应值为123456