Loadrunner检查点使用总结

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

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的帮助中的例子)

// Run the Web Tours sampleweb_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

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

{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
  1. 2.    SocketWebservice协议

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

实例1Socket协议

Socket协议测试脚本如下:

#include "lrs.h"Action()

{intsc=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检查点使用总结

时间: 2024-10-29 03:18:43

Loadrunner检查点使用总结的相关文章

【转】loadrunner检查点设置

转自:http://www.cnblogs.com/fnng/archive/2013/03/10/2953257.html 判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为 200 OK ,那么VuGen 就认为脚本正确地运行了,并且是运行通过的.在绝大多数系统出错时会返回错误页面码? 不会一般系统都会返回一个消息提示框,来提升用户感受.例如,“网站繁忙,请稍后”.其实这个时候网站已经无法正确响应用户请求了,但是VuGen 脚本无法识别,会错误地认为网站还能正

LoadRunner检查点使用小结

LR中检查点有两种:图片和文字. 常用检查点函数如下: 1)web_find()函数用于从 HTML 页中搜索指定的文本字符串: 2)web_reg_find()函数注册一个请求,以在下一个操作函数(如 web_url)检索到的HTML网页上搜索指定的文本字符串: 3)web_image_check()函数用于从HTML页面中查找指定的图片: 4)web_global_verfication()属于注册函数,注册一个在web页面中搜索文本字符串的请求,与web_reg_find只在下一个Acti

LoadRunner检查点

web_reg_find("Text=ABC", "SaveCount=abc_count", LAST);51Testing软件测试网V?2Rs.J Gmdweb_url("Step",  "URL=...", LAST);)LN4E4U7u~8C0if  (strcmp(lr_eval_string("{abc_count}"), "0") == 0) lr_output_messa

9 jmeter之检查点

jmeter有类似loadrunner检查点的功能,就是断言中的响应断言. 1.响应断言(对返回文字结果进行相应的匹配)右击请求-->添加-->断言-->响应断言-->添加"要测试的模式"为${searchtxt}. 2.断言持续时间(判断响应时间不能超过多少毫秒)右击请求-->添加-->断言-->断言持续时间. 3.Size Assertion(返回数据大小判断)右击请求-->添加-->断言-->Size Assertion

Loadrunner中web_reg_save_param函数的除关联外的使用方法,检查点找不到内容

web_reg_save_param函数主要是使用在关联中,而关联大部分时候loadrunner的自动关联不奏效的时候,才会使用. 而我要说的是这个函数两个不同的使用方法,当然可能有更好的办法,或许我说的也不全对,欢迎来纠正,嘿嘿~~~ 第一种:设置检查点时,可以用来排查为什么检查点失败. 在性能测试测试中,我们必须要设置文本或是图片检查点,来提高我们测试脚本可信度.没有检查点怎么能确认我们的脚本这个请求是正确的呢~~你说是吧~? 但我们经常会有遇到,根据response设置了检查点,但是死活不

LoadRunner例子:检查点为参数的一个例子

LoadRunner例子:检查点为参数的一个例子 检查点是LoadRunner的一个功能,用来验证业务功能的正确性.如果检查的内容是变化的,脚本该如何写呢? 问题提出:LoadRunner订票网站例子中,创建一个虚拟用户脚本,在登陆完成之后,设立一个检查点,来检查"welcome, xxx".其中xxx为登陆的用户名称. 解决方法: 1)使用web_find() 做检查点 Action(){ //连接字符串,把welcome和用户名组合成一个字符串 char teststring[10

Loadrunner关联取参及设置检查点

Loadrunner关联取参及设置检查点: 获取post的响应值当作参数存储,要在此post请求之上添加 1 web_reg_save_param("sign", 2 "LB=md5码是:[", 3 "RB=]", 4 "Search=All", 5 LAST); 6 7 8 web_submit_data("tomd5", 9 "Action=http://v49.pclady.com.cn:8

LoadRunner设置检查点的几种方法介绍

前段时间在群里跟大家讨论一个关于性能测试的 问题,谈到如何评估测试结果,有一个朋友谈到规范问题,让我颇有感触,他说他们公司每次执行压力测试的时候,都要求脚本中必须有检查点存在,不然测试结果 将不被认可,这是他们公司的规范.其实,在做压力测试过程,我们很容易忽略很多东西,而且随着自身的技术演变,我们很容易去丢失掉一些很好的习惯,当我们 再碰到这些问题的时候,我们才发现其实是我们太粗心大意了,所以说好的习惯要保持.这次我刚好也要接手一些性能工作,因此就如何规范设置检查点来谈谈一些基本的流程和方法.

Loadrunner手动编写包含检查点、关联等元素的脚本实例

一.前言: 本文适合初学者,包含很多细节,也作为自己的备忘.有不准确之处,欢迎指正. 二.准备: 1.以虚拟机中的Linux系统作为服务器,开启bugfree服务. 2.以fiddler作为抓包工具,辅助脚本开发. 3.脚本流程:bugfree登录--创建bug--解决bug. 三.实现过程: 3.1 脚本主体 创建空白脚本后,结构如下图,压力测试中一般我们将登录单独放在vuser_init中.这里为了整个流程更清晰,脚本全部写在Action中. 值得注意的是,我们设置脚本迭代次数,只对Acti