码农博客 即将到期,现将博客中部分文章转载到博客园。转载时略有删减。

一、为什么要使用检查点

为什么要使用检查点,那就要说明一下LR如何判断脚本是否执行成功。
LR判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为 200 OK ,那么VuGen 就认为脚本正确地运行了,并且是运行通过的。在绝大多数系统出错时会返回错误页面码? 不会一般系统都会返回一个消息提示框,来提升用户感受。例如,“网站繁忙,请稍后”。其实这个时候网站已经无法正确响应用户请求了,但是VuGen 脚本无法识别,会错误地认为网站还能正确访问,导致分析错误。所以这时需要一种检查点函数帮助验证请求发送出去后,服务器的返回是不是期望的内容,如果不是,那么就说明服务器返回无法提供正常的服务了。
另外,需要特别说明的是,检查点需要跟事务结合起来使用。

二、事务结束的四种状态

前面说到检查点一般跟事务结合使用。这样需要说明一下事务(transaction)。我认为事务是LR中非常非常重要的一个概念。因为完成一个事务所需要的时间是响应时间(Trans Response Time),一秒钟可以完成多少事务是TPS(Trans/Sec)。响应时间和TPS是性能测试中非常重要的两个指标。可以通过这两个指标来分析系统是否出现瓶颈。
LR中事务结束的时候需要带上一个状态码(Transaction Status)。LR中Transaction Status有四个, 分别为LR_PASS, LR_FAIL, LR_AUTO , LR_STOP。

  • LR_AUTO:事物的状态被自动设置,如果事务执行成功,状态设置为PASS,如果执行失败,状态设置为FAIL,如果由于异常中断,状态被设置成STOP.
  • LR_PASS:事务如果执行成功,代码的返回状态就是PASS。
  • LR_FAIL:事务如果执行失败,代码的返回状态就是FAIL。

一般情况下会选择LR_AUTO,让LR自动判断事务的状态。可是如上面所说LR判断脚本是否执行成功是根据服务器返回的状态来确定的,也就是只要服务器返回的HTTP状态为 200 OK ,事务执行后状态总是被置为LR_PASS。这样不科学的地方在于,LR提示成功的事务你不知道实际上它到底是成功的还是失败的。所以,这就需要检查点了。使用只有事务执行成功才会出现的文本或者图片(PS:虽然图片检查点我从来没用过)来作为事务是否执行成功的标准。

三、如何添加检查点

使用文本检查点(下面简称检查点)需要使用web_reg_find函数。函数的使用详见LR帮助手册,如果不会用可以下面的实战部分。
另外说明一下如果web_reg_find查找中文失败,完全可以查找英文,只要能实现检查点功能就可以了,如果执意要查找英文,请将Record-Options 中勾选support charset中的UTF-8后重新录制。

四、如何选择检查点

选择什么作为检查点,这是困扰了很久了一个问题。就拿登陆来说,并不是所有的系统登陆完成后系统跳转到登陆成功的页面。这里这需要借助运行时查看器(run-time viewer)来帮助我们查找合适的检查点。运行时查看器在选择工具(tools)-常规选项(general Options)-显示(Display) ,选择 打开运行时查看器和自动排列窗口。

PS:或者通过httpwatch等抓包工具查看返回http返回值查找检查点

五、实战

以我们公司网站www.huhoo.com登陆举例,录制登陆脚本后回放,回放的时候打开运行时查看器。可以看到登陆成功后发回这样的信息。

图1 登陆成功后返回信息

然后修改脚本,故意将用户名的密码弄错,重新回放

图2 登陆错误后返回信息
结合两张图可以看出,用”code”:0作为检查点比较合适。因为这样的文本在登陆失败时没有出现。但是如果用“msg”来作为检查点就不合适,因为不管登陆成功和失败都出现了这也的文本,不能作为检查登陆成功的标准。
检查点示例代码如下:

 web_reg_find("Text=\"code\":0","SaveCount=Code_Count", LAST );
 lr_start_transaction("login");
 web_submit_data("login.quick",
  "Action=http://www.huhoo.com/p/login.quick/",
  ……
  "Name=account", "Value=XXXXXX", ENDITEM,
  "Name=password", "Value=XXXXX", ENDITEM,
  LAST);

 if (atoi(lr_eval_string("{Code_Count}")) > 0){
     //lr_output_message("Log on successful.");
     lr_end_transaction("login", LR_PASS);
    }
 else{
    lr_error_message("Log on failed");
    lr_end_transaction("login", LR_FAIL);
    return -1;
 }

LoadRunner检查点实战的更多相关文章

  1. LoadRunner检查点实战之运行查看器

    一.为什么要使用检查点 为什么要使用检查点,那就要说明一下LR如何判断脚本是否执行成功.LR判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为 200 OK ,那么Vu ...

  2. LoadRunner检查点学习实例

    LoadRunner只会检测脚本中事务的执行状态,而实际的事务执行结果则需要通过检查点来完成. 例如一个登录事务,LR只关心事务本身的执行状态,也就是说哪怕实际操作密码错误产生登录失败的业务操作,其事 ...

  3. LoadRunner ---检查点

    判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为 200 OK ,那么VuGen 就认为脚本正确地运行了,并且是运行通过的.在绝大多数系统出错时会返回错误页面码? 不 ...

  4. 【转】loadrunner检查点设置

    转自:http://www.cnblogs.com/fnng/archive/2013/03/10/2953257.html 判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTT ...

  5. Loadrunner VuGen实战---基本组成、录制流程、协议、脚本优化、参数化(三)

    一.3大基本组件:VuGen.Controller.Analysis 1.VuGen:录制.编写脚本. 2.Controller:性能测试场景设计以及监控的地方. 3.Analysis:生成图表报告的 ...

  6. Loadrunner检查点使用总结

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

  7. 转:LoadRunner检查点使用小结

    LR中检查点有两种:图片和文字. 常用检查点函数如下: 1)web_find()函数用于从 HTML 页中搜索指定的文本字符串: 2)web_reg_find()函数注册一个请求,以在下一个操作函数( ...

  8. loadrunner检查点设置失败,日志中SaveCount无法被正常统计出来

    在脚本正确的情况下的web_reg_find检查点检查失败,SaveCount无法被正常统计出来. 在检查项Text为中文的情况下, ******(我是被录制下来的代码) web_reg_find(& ...

  9. LoadRunner检查点使用小结

    LR中检查点有两种:图片和文字. 常用检查点函数如下: 1)web_find()函数用于从 HTML 页中搜索指定的文本字符串: 2)web_reg_find()函数注册一个请求,以在下一个操作函数( ...

随机推荐

  1. 使用getJSON()方法异步加载JSON格式数据

    使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为: jQuery. ...

  2. 如何配置svn服务器

    如果你已经安装好了VisualServer服务器,现在让我们一起来配置svn服务器吧. 工具/原料 VisualServer 配置VisualServer 找到VisualServer Manager ...

  3. chrome中tcmalloc的使用

    chrome中内存分配采用了第三方库tcmalloc,这个库主要提供给应用程序内存管理方面的优化,按资料说内存存取速度会从300ns降到50ns.更具体的关于这个tcmalloc的信息大家可以查网上的 ...

  4. idea15 如何设置代码不自动折叠

    IDEA默认情况下,如果方法体中只有一行,这个方法体会折叠起来,就像这种

  5. 纯后台生成highcharts图片有哪些方法?

    比如说,领导抛给你一个需求,把一些数据做成图表,每天通过邮件发送,让领导能在邮件中就看到图片,你会有什么思路呢?本人使用的是phantomjs这个神器,它的内核是WebKit引擎,不提供图形界面,只能 ...

  6. 4、JPA table主键生成策略(在JPA中table策略是首推!!!)

    用 table 来生成主键详解 它是在不影响性能情况下,通用性最强的 JPA 主键生成器.这种方法生成主键的策略可以适用于任何数据库,不必担心不同数据库不兼容造成的问题. initialValue不起 ...

  7. JS模块化编程

    AMD:异步模块定义,适合客户端环境,不会阻塞运行.客户端受网络影响比较大. CommonJs:适用于服务器端规范,可以同步加载,只受硬盘读写的影响.

  8. 通俗易懂的讲解iphone视图控制器的生命周期

    IOS 视图控制器的生命周期非常非常重要,所以我有必要写个文章来和大家一起探讨问题. 今天在学习视图控制器的生命周期,也看了一下网上的一些资料,但总觉得不是那么好理解,首先我们来看一张图: 先粗略讲一 ...

  9. perl基本语法

    标量 标量是 Perl 中最简单的数据类型.大多数的标量是数字(如 255 或 3.25e20)或者字符串(如 hello或者盖茨堡地址). 数字 perl中所有数字内部的格式都是双精度浮点数. 浮点 ...

  10. hdu 4143 A Simple Problem (变形)

    题目 题意:给n,求x; 直接枚举肯定超时, 把给的式子变形, (y+x)(y-x) = n; 令y-x = b, y+x = a; 枚举b, b 的范围肯定是sqrt(n),  y = (a+b)/ ...