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

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

  使用LoadRunner做压力测试,大致如下几个流程:

  1、明确测试目标

  2、录制测试脚本

  3、脚本优化、调试

  4、场景运行

  5、分析测试结果

  当然这里都是概况性的标题,但从这里我们可以明确的是测试脚本是整个压力测试过程中的重点步骤,如果测试脚本都不能确保正确与否,后面的测试过 程就无从说起了。很多时候我们把脚本调试就简单的认为是脚本回放没有错误就认为脚本是没有问题的,这当然不能这么肯定,脚本调试是一个非常严谨的过程,我 大致归纳如下几步:

  1、明确每一行脚本的作用,也就是说每一行脚本执行的功能是什么;

  2、删减不需要的脚本语句,比如在录制过程由于LR默认设置导致录制之后出现很多冗余的脚本,这些个脚本对我们的测试过程没有用途的应该删除 掉,至于哪些是冗余就要具体分析了,所以说脚本录制完之后要分析脚本运行的过程,方能理解脚本执行的用途,不然在后面施压时运行错误,就会开始到处找问 题,而又找不出问题;

  3、查找存在的关联并进行相关设置

  4、设置检查点,设置检查点的目的就是为了验证页面每次运行之后是否正确,设置检查点的过程总要通过不能的回放来进行验证检查点设置是否正确。

  5、通过测试目标明确脚本执行的目标事务,并添加事务;

  6、对需要进行并打操作的功能设置集合点

  7、根据实际情况设置ThinkTime

  8、在以上所有脚本调试步骤完成之后,设置迭代次数,通过在Vuser中设置多次迭代来验证脚本在多次循环运行时是否存在错误

  注意:在Vuser中运行和回放脚本的过程,要密切关注replay log,也就是回放日志, 很多问题通常都暴露在回放日志中,只不过我们没有认真去检查,所以没发觉。因为大多数情况是我们在回放脚本之后只观察回放日志中有没有红色的错误提示信 息,如果没有我们就认为我们的脚本是ok的,其实不然,很多时候一些隐藏的错误就在回放日志中可以被发现,比如回放日志中的Warning信息,也就是警 告信息,这些信息一旦你不去理会它,它将在场景运行过程中开始频繁暴露出来,而在场景中报错之后我们就认为可能是系统有问题或者是测试过程存在其他问 题等等,而很难去考虑到是脚本的问题,是脚本在Vuser中调试就存在的问题。还有的时候一些问题在一次脚本回放中就不能被发现,他需要通过Vuser中 设置多次迭代才能在回放日志暴露出问题来,所以说我们通常的思维就是一旦测试脚本没有一次回放没有出现错误,就去场景中运行,结果在场景中哪怕是运行10 个用户都还会报错,这就是问题的根源所在。

  下面还是重点说说检查点吧,三种常用的文本检查web_reg_find的方法:

  1、 将脚本切换到树结构,在page view页面上找到你要check的文本内容, 并执行鼠标右键,选择Add a text check.

  2、 通过Vuesr界面去设置检查点,如图所示:

3、将脚本切换回代码界面, 在光标闪烁的上行,添加如下的代码:

  添加的代码根据你检查的方式不同而不同, 你可以选择其中之一即可。

  代码一:

  web_reg_find("Text=Payment Details",LAST);

  注:“Payment Details” 为你要检查的文本;

  脚本执行到此处,若在页面上找到了这几个字符串,那脚本继续执行下去;若没有找到,脚本将在此报错并且结束。

  代码二:

  web_reg_find("Text=Payment Details", "SaveCount=para_count", LAST); //check 的函数

  这里是要运行的页面脚本

  if (atoi(lr_eval_string("{para_count}"))>0)        //验证是否找到了页面上的要检查的字符串

  lr_output_message("Pass!");

  else

  lr_output_message("Failed!");

  注意:

  “Payment Details” 为你要检查的文本;

  脚本执行到此处,不管页面上是否存在你要检查的字符串,脚本都不会报错,而是执行下去。

  此段代码将找到的你要检查的字符串的个数,存为一个参数。 然后在页面代码的后面,通过检查这个参数的值是否大于0,来判断是否找到了你所要检查的字符串。

  注意:这里的测试结果均以200状态码返回,其失败的结果将在分析报告中进行分类标识。

  代码三:

  web_reg_find("Text=Payment Detdils", "Fail=NotFound",LAST);或者

  web_reg_find("Text=Payment Detdils", "Fail=Found",LAST);

  以上两段脚本就比较简洁,通过查询文本内容来决定此次运行的测试结果是否失败。

  注意:在使用检查点的时候我们还需要注意一些问题,通常我们都要设置一些中文检查点,但是LR默认不支持,如果你设置了中文检查点而报错,那你就应该注意了,在录制脚本的时候去掉默认设置的UTF-8选择,如下图所示:

  并且还设置启用图片和文本检查点,如下图所示:

  以上就是设置检查点的全过程,设置检查点的目的不只是为了验证我们的脚本没有错误,而更重要的是一个规范问题,如何使得测试结果更具有说服力,那就所有的测试脚本中都添加检查点设置。

时间: 2024-10-28 09:50:54

LoadRunner设置检查点的几种方法介绍的相关文章

suse下设置IP的两种方法

/Files/yzhxhwt/DB_51aspx.rar 第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 uproute add default gw 192.168.1.2 释义:#IP配置,包括子网掩码,看情况修改eth0和192.168.1.22 #网关修改 ,看情况修改192.168.1.2 第二种SUSE Linux IP设置方法 在suse操作系统中每个网卡都有一个配置文件,在/etc/sysc

C#读写txt文件的两种方法介绍 v

C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出. byte[] byData = new byte[100]; char[] charData = new char[1000]; public void Read() { try { FileStream file = new FileStream("E:\\test.txt", Fi

[分享]Ubuntu 中设置源的几种方法

Ubuntu里的许多应用程序软件包,是放在网络里的服务器上,这些服务器网站,就称作“源”,从源里可以很方便地获取软件包, 下面的方法选一种即可,我们来看这个练习: 1.简单设置源 8)连接好网络后先换源,在左边的快速启动面板中点击“软件中心”按钮,再把鼠标移到最上边出现菜单栏,点“编辑-软件源”: 2)先出来一个密码输入框,输入自己密码后,点绿色“OK”按钮确定,进入源面板: 3)进入源面板后,把几个勾都打上,点击下面的下拉列表,选择 server for 中国(china),即中国的源: 4)

Kettle_设置变量的两种方法

一个复杂的kettle作业一般包括很多子作业和转换,在主作业Start后通常会添加一个[设置变量]的流程,该流程的功能是为所有流程的公共变量设置通用值.       主作业添加的[设置变量]针对的是所有流程,如果需要运行某个在作业,就需要将其引用的变量值改为常量才能运行,想当年麻烦,本文介绍两种方法规避该问题 方法一:在子作业中添加设置变量流程 下图中table changlog exists?流程使用变量${cl},但是设置${cl}变量的值在主作业执行,所以执行本作业时会报错  解决方法:在

为maven插件设置参数的三种方法

很多的maven插件都提供了丰富的可选参数,用户可以通过设置特定的参数值来控制maven插件的行为.设置插件参数的方法主要有三种,分别是命令行设置,POM文件中为插件设置全局参数和POM文件中为插件设置任务参数. 第一种,命令行设置.这种设置方式是在使用命令行调用maven生命周期阶段或者插件目标时设置插件参数的方法,其形式是"-D参数键=参数值",可以设置多个,每个参数键值对都要使用"-D"参数,相互之间以空格分隔.这种设置方式将参数设置为Java系统属性,mav

iphone 设置全局变量的几种方法

一般的软件 都有一个 登陆的功能,然后根据登陆的UserID 查看不同的信息,这也就意味着UserID 是一个 全局变量,之后的类我们都需要用到,所以 这也就需要定义 全局变量来解决问题,这里提供2种方法: 第一种 把全局变量设置到AppDelegate中 使用很简单,在AppDelegate.h文件中 写入你需要的变量,在AppDelegate.m中加入 @synthesize +你刚刚在 .h中加入的变量 需要使用的时候倒入 头文件 添加以下代码: AppDelegate *delegate

iOS设置圆角的四种方法

一.设置CALayer的cornerRadius cornerRadius属性影响layer显示的background颜色和前景框border,对layer的contents不起作用.故一个imgView(类型为UIImageView)的image不为空,设置imgView.layer的cornerRadius,是看不出显示圆角效果的,因为image是imgView.layer的contents部分. 这种情况下将layer的masksToBounds属性设置为YES,可以正确的绘制出圆角效果.

php设置时区的两种方法

php5后都要自己设置时区,要么修改php.ini的设置,要么在代码里修改. 在PHP.INI中设置时区 date.timezone = PRC 在代码中设置时区 1 date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai'   亚洲/上海 2 date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆” 3 date_default_timezone

虚拟主机设置伪静态的三种方法

如今,很多站长都有使用香港虚拟主机来搭建网站,比较常见的有Linux香港虚拟主机.Windows香港虚拟主机. 值得一提的是,为了有利于网站的收录,很多站长使用香港虚拟主机搭建好网站后,一般都会进行伪静态设置.那么,在使用香港虚拟主机的话,网站的伪静态是怎么设置的?这里就来简单的了解下. 目前,Windows香港虚拟主机采用的是IIS服务器,而Linux香港虚拟主机采用的是Apache服务器.因此,如果要想设置伪静态的话,我们需要在其相应的配置文件中进行设置,对应关系如下: 1.iis7.iis