1、集合点:插入集合点是为了衡量在加重负载的情况下的性能情况。在计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而达到计划中的需求。
2、事务(Transaction):为了衡量的性能,我们需要定义事务。比如:我们在脚本中有一个数据查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LoadRunner 运行在脚本中插入不限数量的事务。问题:事务的start_transaction与end_transaction是否可以嵌套?
3、参数化输入如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。参数化输入是一种不错的方法。
4、参数化包含以下两项任务: 资源来自"岁月联盟"
① 在脚本中用参数取代常量值。
信息来自"岁月联盟"
② 设置参数的属性以及数据源。(注:不是所有的函数都可以参数化的。)
5/参数的类型。 ["岁月联盟"]
DateTime:很简单,在需要输入日期/时间的地方,可以用DateTime 类型来替代。其属性设置也很简单,选择一种格式即可。当然也可以定制格式。 "岁月联盟"提供
Group Name:暂时不知道何处能用到,但设置比较简单。在实际运行中,LoadRunner使用该虚拟用户所在的Vuser Group 来代替。但是在VuGen 中运行时,Group Name将会是None. "岁月联盟"
Load Generator Name:在实际运行中,LoadRunner 使用该虚拟用户所在Load Generator 的机器名来代替。
Syue.com
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 中重新编写类似的函数应该不难。问题:是否可以对参数化File类型时,只建一个连接,就是说用select * from tableName 后得到一个表,而这个表中的许多列都可能在参数化过程中用到,如用户名/密码两列,是否可先用select * from userTabel 得到数据库中的全部数据,然后将不同的参数进行参数化就方便多了,而且可用相同的设置。
(注意:在参数数据显示区,最多只能看到100 行,如果数据超过100 行,只能点“Edit”按钮,进入记事本看。)
Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取 [来源"岁月联盟"]
Random:在每次循环里随机的读取一个,但是在循环中一直保持不变 [本文来自"岁月联盟"]
Unique :唯一的数。 内容来自"岁月联盟"
(注意:使用该类型必须注意数据表有足够多的数。比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。) 信息来源"岁月联盟"
Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录。通常用在有关联性的数据上面。
6、检查点为了检查Web 服务器返回的网页是否正确,VuGen 允许我们插入Text/Imag 检查点,这些检查点验证网页上是否存在指定的Text 或者Imag,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。推荐最好能在录制过程中添加Text/Imag 检查点。(注意:这里要搜索的字符串可以使用正则表达式。)
7、可以调试脚本,比如在脚本中加断点等,操作和在VC 中完全一样 信息来源"岁月联盟"
8、运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator 机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。创建运行场景使用Controller.
"岁月联盟"
9、优化Controller 和Load Generators 计算机如果控制机(Controller machine)和Load Generators 计算机运行的都是2000,那么下面两个简单的技巧可以提高性能1)在Load Generators 计算机上,依次进入“控制面板”——“系统”——选择“高级”标签页,点“性能选项”按钮,选择优化“后台服务”选项,这样可以提高性能,从而可以在每个Load Generators 上运行更多的虚拟用户2)在Controller 计算机上,按照以上的步骤,进入“性能选项”窗口,不过这里选择优化“应用程序”
10、用于运行 Vuser 脚本的 C 解释器仅支持 ANSI C 语言。它不支持 Microsoft对 ANSI C 的任何扩展。
11、常用方法lr_set_transaction_status 设置打开事务的状态lr_set_transaction_status_by_name 设置事务的状态
lr_stop_transaction 停止事务数据的收集lr_stop_transaction_instance 停止事务(由它的句柄指定)数据的收集
lr_get_host_name 返回执行 Vuser 脚本的主机名lr_get_master_host_name 返回运行 LoadRunner Controller 的计算机名
lr_save_datetime 将当前日期和时间保存到参数中
lr_eval_string_ext 检索指向包含参数数据的缓冲区的指针lr_eval_string_ext_free 释放由 lr_eval_string_ext 分配的指针 资源来自"岁月联盟"
lr_debug_message 将调试信息发送到输出窗口lr_error_message 将错误消息发送到输出窗口 www.Syue.com
lr_get_debug_message 检索当前消息类lr_log_message 将消息发送到日志文件lr_output_message 将消息发送到输出窗口lr_set_debug_message 设置调试消息类lr_vuser_status_message 生成带格式的输出,并将其写到 ControllerVuser 状态区域lr_message 将消息发送到 Vuser 日志和输出窗口
lr_peek_events 指明可以暂停 Vuser 脚本执行的位置lr_think_time 暂停脚本的执行,以模拟思考时间(实际用户在操作之间暂停以进行思考的时间)lr_continue_on_error 指定处理错误的方法lr_rendezvous 在 Vuser 脚本中设置集合点