性能测试LoadRunner② 优化测试脚本

  

录制脚本中更多操作:

检查点、关联、参数化输入、函数


1.文本检查、插入检查点:

   在进行压力测试时,为了检查Web 服务器返回的网页是否正确,VuGen 允许我们插入Text 检查点,这些检查点验证网页上是否存在指定的Text,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。检查点的含义和unittest中的断言功能基本上一致。

   通过菜单—查看—快照,可以查看到http数据视图,选择检查的文本,选择添加文本检查步骤,即可添加一个检查点。

  • step1:在快照中找到需要检查的文字
    在这里插入图片描述
  • step2:插入检查点
    在这里插入图片描述在这里插入图片描述
  • step3:生成检查点
web_reg_find("Search=Body",
  "Text=Welcome, <b>zxy</b>, to the Web Tours reservation pages.",
  LAST);
  • step4:编译Compile,并重演Replay查看是否成功。
       若编译失败,说明在登录成功前进行检查,需添加参数,先等待登陆成功,后进行检查。“SaveCount=reservation_Count” 类似等待。
web_reg_find("Search=Body",
  "Text=Welcome, <b>zxy</b>, to the Web Tours reservation pages.",
  "SaveCount=reservation_Count",
  LAST);

2.关联:

   参数化时需要关联。很多时候,一个项目的请求所以带的参数会来源于前面请求返回的结果,而我们录制的内容,则只是完整地记录当时的请求参数,这通常不是我们想要的。

   例检查点文本中的zxy。就是根据输出来显示的,我们可以获取该值来供后续使用。选择test,通过创建关联,可以创建一个关联,创建完毕。

  • step1:在快照中找到需要关联的文字
    在这里插入图片描述
  • step2:创建关联
    在这里插入图片描述
/*Correlation comment - Do not change!  Original value='zxy' 
	Name ='CorrelationParameter' Type ='Manual'*/
    web_reg_save_param_ex(
        "ParamName=CorrelationParameter",
        "LB=blockquote>Welcome, <b>",
        "RB=<",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/login.pl*",
        LAST);

3.参数化输入

   需要先进行关联。如果用户在录制脚本过程中,填写提交了一些数据,如要增加数据库录。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为更真实的模拟实际环境,需要各种各样输入。参数化输入是不错的方法。
   用参数表示用户的脚本有两个优点:
      ① 可以使脚本的长度变短。
      ② 可以使用不同的数值来测试你的脚本。
      例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。
      在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。
   参数化包含以下两项任务:
      ① 在脚本中用参数取代常量值。
      ② 设置参数的属性以及数据源。
      参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。

   例如在上面的注册的例子中,我们已经注册了test用户,那么再次注册就会失败。也就是说Loadrunner脚本再次运行就会失败。找到以下的代码块,在username中选中“zxy”字符串点击右键选择“使用参数替换”,就可以进行参数设置。

  • step1:选择需要参数化的输入值
    在这里插入图片描述

  • step2:填写参数化输入名,确定使用参数替换。允许替换所有zxy为参数化输入名。
    在这里插入图片描述在这里插入图片描述参数化输入结果如下:
    在这里插入图片描述

  • step3:添加参数
    在这里插入图片描述
    两种添加方式如下,勾选Select next row、Upadate value on。
    在这里插入图片描述

  • step4:编译Compile,并重演Replay查看是否成功。
        若编译失败,需添加参数。“NotFound=warning” 。

/*Correlation comment - Do not change!  Original value='{username}' 
	Name ='CorrelationParameter' Type ='Manual'*/
    web_reg_save_param_ex(
        "ParamName=CorrelationParameter",
        "LB=blockquote>Welcome, <b>",
        "RB=<",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/login.pl*",
        "NotFound=warning" ,
        LAST);
  • step5:output中,若只一个参数运行一次,需修改设置。
    在这里插入图片描述在这里插入图片描述

参数列表zxy,test1,test2。
另外,参数化设置中两个选项:
   Select next row(Sequential、Random、Unique),
   Update value on(Each iteration、Each occurrence、Once)。
   Each iteration:按照参数顺序依次取,zxy,test1,test2。
   Each occurrence:每次随机选取参数,test1,zxy,test2
   Once:每次只取第一个参数,zxy。


4.插入函数

   VuGen 中可以使用C 语言中比较标准的函数和数据类型,语法和C 语言相同。下面简单介绍一下比较常用的函数和数据类型。

   在脚本页面,通过右键-插入-新建步骤可以查看函数列表
   运行时输出参数名zxy,test1,test2。

if( strcmp( lr_eval_string ("{username}"),"zxy" ) ==0 ){
    lr_log_message("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    lr_output_message("username=%s",lr_eval_string("{username}"));
    lr_log_message("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
}else{
    lr_log_message("this user is not zxy!!!!!!!!!!");
}

   字符串函数,由于在 VuGen 脚本中使用最多的还是字符串,所以字符串函数在脚本中使用非常频繁。具体的语法请参考帮助说明。
strcmp 比较两个字符串
strcat 连接两个字符串
strcpy 拷贝字符串

   输出函数,输出函数在调试脚本时非常有用。
lr_output_message ( );
lr_log_message( );
  控制脚本流程
if { } else { }


⭐LoadRunner 提供的标准函数

  1. lr_eval_string 该函数功能是得到参数(参数化输入中)当前的值
exg: lr_output_message("temp = %s", lr_eval_string("{WCSParam2}"));
  1. lr_save_string 该函数功能是把一个字符串保存到参数中
exg: lr_save_string("439","WCSParam3");
web_reg_save_param("BODY",
    "LB=\"MESSAGE\":{\"",
    "RB=\":",
    LAST);
  1. 控制脚本流程if { } else { } for{ } while{ }
if(strcmp(lr_eval_string("{BODY}"),"msginfo")==0)
{
    lr_end_transaction("柜员登陆",LR_PASS);
}
else
{
    lr_output_message("BODY=[%s]",lr_eval_string("{BODY}"));
    lr_end_transaction("柜员登陆",LR_FAIL);
}

📄最终Action.c

Action()
{

    web_url("WebTours", 
        "URL=http://127.0.0.1:1080/WebTours", 
        "Resource=0", 
        "RecContentType=text/html", 
        "Referer=", 
        "Snapshot=t1.inf", 
        "Mode=HTML", 
        LAST);

    lr_think_time(5);

    lr_start_transaction("login_transaction");

    lr_rendezvous("login_zvous");

    web_reg_find(
    	"Search=Body",
        "Text=Welcome, <b>{username}</b>, to the Web Tours reservation pages.",
        "SaveCount=reservation_Count",
        LAST);

/*Correlation comment - Do not change!  Original value='{username}' 
	Name ='CorrelationParameter' Type ='Manual'*/
    web_reg_save_param_ex(
        "ParamName=CorrelationParameter",
        "LB=blockquote>Welcome, <b>",
        "RB=<",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/login.pl*",
        "NotFound=warning" ,
        LAST);

    web_submit_form("login.pl", 
        "Snapshot=t2.inf", 
        ITEMDATA, 
        "Name=usern" 
        "ame", "Value={username}", ENDITEM,
        "Name=password", "Value=12" 
        "3", ENDITEM,
        "Name=login.x", "Value=76", ENDITEM, 
        "Name=login.y", "Value=8", ENDITEM, 
        LAST);


if( strcmp( lr_eval_string ("{username}"),"zxy" ) ==0 ){
    lr_log_message("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    lr_output_message("username=%s",lr_eval_string("{username}"));
    lr_log_message("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
}else{
    lr_log_message("this user is not zxy!!!!!!!!!!");
}

    lr_end_transaction("login_transaction",LR_AUTO);

    lr_think_time(5);


    web_image("SignOff Button", 
        "Alt=SignOff Button", 
        "Snapshot=t3.inf", 
        LAST);

    return 0;
}

运行时设置

   当完善了测试脚本后,需要对VuGen 的“运行时设置” 进行配置。在“解决方案资源管理器”视图中选择“运行时设置”,常用的设置内容如下:
   1、常规-其他-错误处理:一般不需要改动,但是在Controller运行时,可以设置“出现错误时仍继续”,来统计错误率
   2、常规-其他-自动事务:当我们手工设置了事务时,建议取消该项,以免Controller运行时事务太多
   3、常规-运行逻辑-迭代数:根据需要变动,一般在调试脚本时可以设置为多次迭代
   4、常规-日志:在调试阶段可勾选“启动日志记录”,脚本稳定时可取消该项
   5、常规-思考时间:忽略时会对服务器造成更大的压力,而增加思考时间可以更好的模拟用户使用
   6、internet协议-首选项-启用图像或文本检查:不勾选“启用图像或文本检查”,web_find和web_image_check设置的检查点在运行时无效
   7、工具-选项-脚本-回放:如果勾选“回放期间显示运行时查看器”,则在运行时会启动浏览器

单机运行测试脚本
   经过以上的各个步骤后,脚本就可以运行了。运行脚本可以通过菜单或者工具栏来操作。
   执行“运行”命令后,VuGen 先编译脚本,检查是否有语法等错误。如果有错误,VuGen将会提示错误。双击错误提示,VuGen 能够定位到出现错误的那一行。为了验证脚本的正确性,我们还可以调试脚本,比如在脚本中加断点等。
   如果编译通过,就会开始运行。然后会出现运行结果。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cyril-zxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值