性能测试工具LoadRunner篇

1 LoadRunner包含以下组件:
  • Virtual User Generator 录制最终用户业务流程并创建自动化性能测试脚本,即Vuser脚本。
  • Controller 组织、驱动、管理并监控负载测试。
  • Load Generator 通过运行Vuser产生负载。
  • Analysis 用于查看、剖析和比较性能结果。
  • Launcher 使您可以从单个访问点访问所有LoadRunner组件。
2 术语
  • 场景 场景文件根据性能要求定义每次测试期间发生的事件
  • Vuser 在场景中,LoadRunner用虚拟用户(或称Vuser)代替真实用户。Vuser模拟真实用户的操作来使用应用系统。一个场景可以包含数十、数百万乃数千个Vuser。
  • Vuser脚本 Vuser脚本描述Vuser在场景中执行的操作
  • 事务 要评测服务器性能,需要定义事务。事务代表要评测的终端用户业务流程

事务是指用户在客户端做一种或多种业务所需的操作集,通过事务函数可以标记完成该业务所需要的操作内容;另一方面事务可以用来统计用户操作的响应时间,事务响应时间是通过记录用户请求的开始时间和服务器返回内容到客户时间的差值来计算用户操作响应时间的
对于软件来说,通过事务得到的系统响应时间也是由非常多的部分组成的,一般来说响应时间由网络时间、服务器处理时间、网络延迟三大部分组成。

3 负载测试一般包括5个阶段:规划、创建脚本、定义场景、执行场景和分析结果。
  • 规划负载测试:定义性能测试要求,例如并发用户数量、典型业务流程和要求的响应时间。
  • 创建Vuser脚本:在自动化脚本中录制最终用户活动。
  • 定义场景:使用LoadRunner Controller设置负载测试环境。
  • 运行场景:使用LoadRunner Controller驱动、管理并监控负载测试。
  • 分析结果:使用LoadRunner Analysis创建图和报告并评估性能。
4 主要函数
  • web_url()函数:可以模拟用户请求,它也是在脚本中最常使用的函数之一;
    基本语法为:web_url(“在测试结果中显示的名称”,“URL=需要访问的超链地址”,LAST);
  • web_link()函数:用来模拟用户单机一个超链接的操作;
    基本语法为:web_link(“在测试结果中显示的名称”,“TEXT=需要单击的超链接名”,LAST);
    如果一个页面中有多个同名的链接,使用Ord关键词,例如:Ord=2,单击页面上的第二个链接
  • web_submit_form()函数:会自动检测在当前页面上是否存在form,然后将后面的ITEMDATA数据进行传送;
  • web_submit_data()函数:无须前面的页面支持,直接发送给对应页面相关数据即可;
  • Web_add_cookie()函数:主要负责为Vuser脚本添加一个cookie信息;
  • web_custom_request()函数:用来自定义HTTP请求规则;
  • lr_output_message()函数:将内容输出到Replay Log中,例如// 输出整数型的内容
    lr_output_message(“%d”,x);// 输出字符串的内容 lr_output_message("%s",x)
  • lr_eval_string()函数:可以从参数中取得对应的值,并转换成一个字符串
    基本语法为:lr_eval_string("{参数名}")
    例如获得一个字符串的第一个字母的ASCII码:Lr_eval_string("{param}")[0]
  • atoi()函数:将字符串转换为整数
  • lr_advance_param()函数:手工将参数的值下移一位
  • lr_load_dll()函数:用来实现调用外部dll扩展脚本的功能
    参数和变量的最大区别在于:参数必须在双引号中才能应用,而变量如果使用双引号则变成了一个字符串,所以使用lr_eval_string()函数的时候也是使用双引号来调用的
  • lr_save_string(“http://www,51testing.com”,“website”)函数:将一个字符串保存为一个参数
  • lr_save_init()和lr_save_datetime()函数:把数字和日期写入一个参数
4.1 参数数组函数
创建一个访问网站的参数数组,可以编写一下代码:
lr_save_string("www.google.com","website_1");
lr_save_string("www.baidu.com","website_2");
lr_save_string("www.163.com","website_3");
lr_save_string("www.sina.com","website_4");
lr_save_string("4","website_count");
  • lr_paramarr_idx()函数:可以取出参数数组中某个编号的值
    例如char * siteval;
    sitaval = lr_paramarr_idx(“website”, 2);得出结果www.baidu.com,
    也可以使用lr_eval_string("{website_2}");得出结果www.baidu.com,
  • lr_paramarr_len()函数:可以获取整个参数数组的长度
  • lr_paramarr_random()函数:是从参数列表中随机选择一个参数

例如:遍历整个参数数组中的所有内容

int arrid;
for(arrid = 1;arrid <= lr_paramarr_len("website");arrid++)
{
    lr_output_message( lr_paramarr_idx("website",arrid));
}
4.2 关联函数
  • web_reg_save_param()函数:可以完成对服务器返回的保存操作
    关联函数的作用是通过一种规则将服务器的返回保存在一个参数中
  • web_set_max_html_param_len()函数:可以自定义关联返回值存放的参数的最大长度
  • lr_save_var()函数:可以对一个参数值进行偏移和长度设置
    lr_save_string(“I come from shanghai”,“city”);
    lr_save_var(lr_eval_string("{city}"),6,0,“result”);//从city这个参数中取6位长度的内容保存到result参数中
    lr_save_var(lr_eval_string("{city}")+7,4,0,“result”);//从city这个参数的第7位开始取4个长度的内容保存到result参数中
  • strtok()函数:作用是通过某个分隔符来切分内容
  • web_reg_find()文本检查点函数:提供了一种对服务器返回内容进行查询的功能,和关联的不同之处在于检查点函数只能返回检索到内容的次数。
  • web_image_check()函数:可以检查页面上的图片,例如web_image_check(“函数标题”)
4.3 事务相关函数
  • lr_start_transaction(“mainpage”)函数:插入事务函数
  • lr_end_transaction(“mainpage”,LR_AUTO)函数:结束事务函数
    子事务
    Lr_start_sub_transaction(“子事务名”,“父事务名”)
    Lr_end_sub_transaction(“子事务名”,“子事务状态”)

事务状态有以下4种:
LR_AUTO:LR_AUTO是指事务的状态由系统自动根据默认规则来判断,结果为PASS/FAIL/STOP。
LR_PASS:LR_PASS是指事务是以PASS状态通过的,说明事务正确地完成了,并且记录下对应的时间,这个时间就是指做这件事情所需要消耗的响应时间。
LR_FAIL:LR_FAIL是指事务以FAIL状态结束,该事务是一个失败的事务,没有完成事务中脚本应该达到的效果,得到的时间不是正确操作的时间,这个时间在后期的统计中将被独立统计。
LR_STOP:LR_STOP将事务以STOP状态停止。

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

  • lr_get_transcation_duration(“事务名”):获得对应事务达到该函数运行位置时持续的时间,返回double类型
  • lr_get_transcation_wasted_time(“事务名”):获得对应事务达到该函数运行位置时的wasted时间,返回double类型
  • lr_wasted_time(毫秒):为一个事务添加wasted时间,无返回
  • lr_stop_transaction(“事务名”):将一个事务暂停,该函数后的操作都不会被记入事务时间
  • lr_resume_transaction(“事务名”):将暂停的事务恢复
  • wen_get_int_property()函数:获得一个下载操作的响应时间
  • lr_think_time()函数:提供一种模拟用户等待的方式
  • lr_rendezvous()函数:是集合点函数

你可能感兴趣的:(LoadRunner工具篇)