LoadRunner函数大总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LoadRunner函数大总结相关的知识,希望对你有一定的参考价值。

参考技术A lr_save_string("aaa","param"):将字符串“aaa”或者一个字符串变量,转变成LR的参数param
lr_save_int(123,”param”);将数字123,转变为LR的参数param

lr_eval_string("param"):取出参数param中的值,可嵌套在其他函数里使用

strcmp:字符串比较函数,若两个值相等,则返回0
strcpy:字符串拷贝函数,可以把一个字符串拷贝到一个字符数组中
strcat:字符串拼接函数,可以把一个字符串拼接到一个字符数组中

lr_convert_string_encoding(lr_eval_string("msg"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"afterEncodeMsg");
将LR中的参数msg,从utf-8编码转换为system_local编码(LR本地编码),最后保存到LR的参数afterEncodeMsg中

lr_paramarr_random("param_arry"):从参数数组param_arry中随机取一个值,注意param_arry不需要加
int size;
size = lr_paramarr_len("param_arry"):获取参数数组param_arry的长度,并保存到C语言的变量size里
int value;
value = lr_paramarr_idx("param_arry",1):获取参数数组param_arry中第1个值,并保存到C语言的变量value里

6、web_url():get接口,一般通过录制生成

7、web_custom_request():post接口,可以测试http接口或者webservice接口

8、web_submit_data():post接口,可以测试文件上传类型接口

9、atoi(lr_eval_string("param")):将LR参数param转换为数字

10、web_reg_save_param:关联函数,一定要写在请求之前

11、web_reg_find:文本检查点函数,一定要写在请求之前

13、 web_save_timestamp_param:将当前的时间戳保存成一个参数

14、web_add_cookie函数:新增cookie

15、web_add_header函数,新增header信息

web_custom_request函数,需要新增header(Content-type:text/xml)

1、lrs_create_socket("socket0", "TCP", "RemoteHost=127.0.0.1:8888", LrsLastArg),创建socket连接

2、lrs_send("socket0", "buf0", LrsLastArg),发送buf中的数据

3、lrs_receive("socket0", "buf1", LrsLastArg),接收服务器返回的数据,并保存到一个buf1中

4、lrs_save_param("socket0",NULL,"RecivedData",0,-1),获取服务器返回的数据,并保存到一个参数中RecivedData,最后两个参数,偏移量和length

5、lrs_save_searched_string("socket0",NULL,"RecivedData","LB/BIN=|","RB/BIN=|",1,0,-1),获取服务器返回的数据,并指定了左右边界
过滤出想要的数据,保存到一个参数中,最后三个参数分别为,取值序号、偏移量、保存长度

6、lrs_close_socket("socket0"),关闭链接

7、lrs_set_recv_timeout2:设置结束数据超时时间

Loadrunner 11检查点使用方法总结

在使用Loadrunner 11进行性能测试中,有时需要对性能测试中的功能是否全部正确进行判断。这里就需要用到“检查点”,本文总结了常用三种协议下检查点的使用方法,希望阅读本文后的小伙伴们能够掌握其使用方法,并灵活应用在实际项目中。

1. HTTP协议

HTTP协议中检查点有两种:图片和文字。这两种检查点可用以下三个函数实现:web_find()、web_reg_find()和web_image_check(),下面介绍三种函数的使用方法。

1.1  web_find()函数

函数的作用是“在页面中查找相应的内容”,常用参数及含义如下:

web_find("web_find",   //定义该查找函数的名称

"RightOf=a",      //定义查找字符的右边界

"LeftOf=b",       //定义查找字符的左边界

"What=name",     //定义查找内容

LAST);

使用该函数注意以下事项:

  • 位置

该函数在页面内容显示出来以后,在页面中进行查找,所以只能写在要查找内容之后

  • 录制模式

该函数只能在基于HTML模式录制的脚本中进行查找

  • 必须启用内容检查选项

在Runtime setting->Preferences里面,把Enable image and text check选中,否则不执行该查找函数

技术分享

启用内容检查选项

  • 在VB和JAVA语法中不支持该函数

该函数还有以下缺点:

  •  执行效率较低
  •  不返回查找结果情况,如果想在执行该函数后根据查找结果做进一步操作时,没有返回值可以依据。
  • 例如:在页面中查找“登录成功”的字符串,如果找到该字符串在日志中输出“登录成功”,如果找不到该字符串,则在日志中输出“登录失败”,此时使用该函数没有依据来做此判断,但使用web_reg_find()函数,使用它其中的SaveCount可以进行判断,具体方法我们下面介绍。

1.2 web_reg_find()函数

函数的作用是“在缓存中查找相应的内容”,常用参数及含义如下:

web_reg_find("Search=Body",  //定义查找范围

"SaveCount=count",            //定义查找计数变量名称

"Text=test",                 //定义查找内容

LAST);

使用该函数注意以下事项:

  • 位置

该函数写在要查找内容的请求之前,通常情况下写在如下六个函数之前:Web_castom_request();web_image();web_link();web_submit_data();web_submit_form();web_url()

  • 使用技巧

该函数中的“SaveCount”参数可以记录在缓存中查找内容出现的次数,我们可以使用该值,来判断要查找的内容是否被找到,下面举个例子来说明:(引用LR的帮助中的例子)


Action()
{


// Run the Web Tours sample
web_url("MercuryWebTours",

"URL=http://localhost/MercuryWebTours/",


"Resource=0",


"RecContentType=text/html",


"Referer=",


"Snapshot=t1.inf",


"Mode=HTML",


LAST);



// Set up check for successful login by looking for "Welcome"


web_reg_find("Text=Welcome",


"SaveCount=Welcome_Count",


LAST);



// Now log in


web_submit_form("login.pl",


"Snapshot=t2.inf",


ITEMDATA,


"Name=username", "Value=jojo", ENDITEM,


"Name=password", "Value=bean", ENDITEM,


"Name=login.x", "Value=35", ENDITEM,


"Name=login.y", "Value=14", ENDITEM,


LAST);



// Check result


if (atoi(lr_eval_string("{Welcome_Count}")) > 0)


//判断如果Welcome字符串出现次数大于0


{ lr_output_message("Log on successful."); }


//在日志中输出Log on successful


else


//如果出现次数小于等于0


{lr_error_message("Log on failed");}


//在日志中输出Log on failed


return(0);


}

 

1.3  web_image_check()函数

函数作用:在页面中查找一个具体的图片,常用参数及含义如下:

web_image_check("web_image_check", //函数标题

"Alt=", //图标说明

"Src=", //图片链接地址

LAST);

使用该函数注意以下事项:

  • “Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值
  • 该函数是在缓存中查找相应的内容,所以要放在查找内容之前
  • 使用该函数时,同样需要在Vuser->Run-Tme Settings中勾选Enable Image and text check

下面是应用实例:

#include "web_api.h"

Action()

{

web_url("www.google.cn","URL=http://www.google.cn/","Resource=0","RecContentType=text/html", "Referer=", "Snapshot=t1.inf", "Mode=HTML", EXTRARES, LAST); web_image_check("web_image_check", "Src=/intl/zh-CN/images/logo_cn.gif", "Alt=Google", LAST); return 0;
}

LoadRunner执行后日志记录如下:

Action.c(20): "web_image_check" succeeded (1 occurrence(s) found. Alt="Google", Src="/intl/zh-CN/images/logo_cn.gif")   [MsgId: MMSG-27192]Action.c(20): web_image_check was successful   [MsgId: MMSG-26392]

1.4 插入函数的方法

  • 手工写入,在需要插入函数的位置手工写入该函数
  • 光标停留在要插入函数的位置,在INSERT菜单中,选择New step,在列表中选择或查找要插入的函数,根据提示填写必要的参数
  • 在Tree view模式下,在树状菜单中选中要插入函数的位置,右键,选择Insert after或Insert before,根据提示填写必要的参数

1.5小结

  • WEB_FIND与WEB_REG_FIND函数类型不同,WEB_FIND是普通函数,WEB_REG_FIND是注册函数
  • WEB_FIND使用时必须开启内容检查选项,而WEB_REG_FIND则不没有此限制
  • WEB_FIND只能只用在基于HTML模式录制的脚本中,而WEB_REG_FIND没有此限制
  • WEB_FIND是在返回的页面中进行内容查找,WEB_REG_FIND是在缓存中进行查找
  • WEB_FIND在执行效率上不如WEB_REG_FIND

 

2.    SocketWebservice协议

 

由于Socket协议与Webservice协议中检查点设置方法基本一致,本文主要以实例来逐一说明。

实例1Socket协议

Socket协议测试脚本如下:

#include "lrs.h"

Action()
 

{
    int sc=0;

    lr_start_transaction("BIG1");
    
    //建立socket链接
    
    sc = lrs_create_socket("socket1","TCP","RemoteHost=192.168.85.247:26001",LrsLastArg);
    
    if (sc == 0)
    
    lr_output_message("Socket  was successfully created ");
    
    else
    
    lr_output_message("An error occurred while creating the socket, Error Code: %d", sc);
    
    //发送socket请求,接收socket返回结果
    
    lrs_send("socket1", "buf0", LrsLastArg);
    
    lrs_receive("socket1", "buf1", LrsLastArg);
    
    //保存socket返回结果至参数Res_BIG1中
    
    lrs_save_param_ex("socket1", "received", "buf1", 0, lrs_get_last_received_buffer_size("socket1"),NULL, "Res_BIG1");
    
    //关闭socket链接
    
    lrs_disable_socket("socket1", DISABLE_SEND);
    
    lrs_close_socket("socket1");
    
    //判断Res_BIG1参数中是否有"content-length: 10"字段
    
    if((strstr(lr_eval_string("<Res_BIG1>"),"content-length: 10"))==NULL)
    
    {
    
    lr_error_message("-------%s",lr_eval_string("<Res_BIG1>"));
    
    lr_end_transaction("BIG1",LR_FAIL);
    
    }
    
    else
    
    {
    
    lr_output_message("-------%s",lr_eval_string("<Res_BIG1>"));
    
    lr_end_transaction("BIG1",LR_PASS);
    
    }
    
    return 0;

}

实例2Webservie协议

Webservice性能测试脚本如下:

Action()

{
    lr_start_transaction("SaveSession");
     
    web_service_call( "StepName=SubmitNLSMS",
    
    BEGIN_ARGUMENTS,
    
    "inputXML=<mobileno>{UserNO}</mobileno><smscontent>hi </smscontent>",
    
    END_ARGUMENTS,
    
    BEGIN_RESULT,
    
    "SubmitNLSMSRequestResult=SubmitSMSResult1", //保存返回结果至参数中
    
    END_RESULT,
    
    LAST);
    
    //判断返回结果
    
    if((strstr(lr_eval_string("{SubmitSMSResult1}"),"Hello World"))==NULL)
    
    {
    
    lr_error_message("-------%s",lr_eval_string("{UserNO}"));
    
    lr_error_message("-------%s",lr_eval_string("{SubmitSMSResult1}"));
    
    lr_end_transaction("SaveSession",LR_FAIL);
    
    }
    
    else
    
    {
    
    lr_output_message("-------%s",lr_eval_string("{UserNO}"));
    
    lr_output_message("-------%s",lr_eval_string("{SubmitSMSResult1}"));
    
    lr_end_transaction("SaveSession",LR_PASS);
    
    }
    
    return 0;

}

 

2.1 小结

使用“检查点”,首先需要得到“返回结果”,将该返回结果保存至参数中

对返回结果进行判断,这里可能需要用到lr_eval_string(), atoi(), strstr()等函数

相关函数说明:

  • lr_eval_string()函数作用是取得参数值,将字符串变量中的参数值替换为当前的参数值并将这个字符串返回
  • atoi()函数的作用是将一个ASCII字符串转换为整型
  • strstr()函数格式为strstr(str1,str2),其中str1: 被查找目标string expression to search,str2:要查找对象The string expression to find.该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL.

以上是关于LoadRunner函数大总结的主要内容,如果未能解决你的问题,请参考以下文章

LoadRunner 性能测试总结,LoadRunner 性能测试实例

Loadrunner配置总结

loadrunner,怎么根据判断结果,执行含有不同参数的代码段

Loadrunner 问题总结

loadrunner小飞机的脚本录制和相关函数

loadrunner性能测试的时候,测试的事务响应时间比实际情况的值还要大。这个是啥原因?