lr检查点

前言

  很久很久没有更新博客了。久到我都不记得上一次更新博客是什么时候,久到我们博客主机都过期了,一度我还想停掉这个博客。好在有simon的坚持才决定博客继续整下去。2013年对我来说是一个比较折腾的一年。一年之类换了两份工作。找工作的时候才发现理想与现实之间的差距是如此的巨大。期间经历了落差、失望、彷徨……

  最近一段时间给我们组成员培训LoadRunner,我自己也有所收获,也就有了这篇文章

  一、为什么要使用检查点

  为什么要使用检查点,那就要说明一下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) ,选择 打开运行时查看器和自动排列窗口。

  运行时查看器的使用我还得感谢我们组成员文武同学。我还老吐槽他老开着这没用的玩意干嘛,我承认我错了。

 五、实战

  以网站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;

}

  完整脚本下载:传送门

  说明:

  脚本中用户名,密码已经被我用XXX替换,如果想用此脚本做实验,请到虎虎官网www.huhoo.com注册用户,并将用户名写入脚本中。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-16 21:00:27

lr检查点的相关文章

LR有的JMeter也有之二“检查点”

好吧!接着上一篇文章的内容和思路,继续前进.   检查点:简单的来理解一下,上一章讲到,我们对用户名和密码进行了参数化,那么怎样来判断jmeter有没有正确调用test.dat里面的文件呢.当然,我们可以从结果图表中查看.但我还是想在"登录"这个地方进行一下检查. jmeter里面的检查点通过添加断言来完成. 1. 右键点击我们的"登录"页面---->添加---->断言---->响应断言 来设置一下断言页面,我们想断言什么呢?调用的用户名和密码是不

如何用好LoadRunner中的检查点

如何用好LoadRunner中的检查点转自:领测软件测试网[http://www.ltesting.net] 原文链接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946.html 如何用好LoadRunner中的检查点LR中检查点有两种:图片和文字. 常用检查点函数如下: 1)web_find()函数用于从 HTML 页中搜索指定的文本字符串; 2)web_reg_find()函

通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性

通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task,前3个Task执行超过1个小时,到了第4个Task的时候发生失败.如果下次执行的时候重新从第1个任务开始执行,那么又要花费1个小时等待 1-3 任务执行,无疑在效率上讲是非常低的.特别是在数据仓库的应用上,往往从数据源到Staging的过程中有千万级甚至亿级的数据要加载,加载完毕之后再进入到维度和事实表.如果

JMeter的“检查点”

好吧!接着上一篇文章的内容和思路,继续前进. 检查点:简单的来理解一下,上一章讲到,我们对用户名和密码进行了参数化,那么怎样来判断jmeter有没有正确调用test.dat里面的文件呢.当然,我们可以从结果图表中查看.但我还是想在"登录"这个地方进行一下检查. jmeter里面的检查点通过添加断言来完成. 1. 右键点击我们的"登录"页面---->添加---->断言---->响应断言 来设置一下断言页面,我们想断言什么呢?调用的用户名和密码是不是我

SSIS:通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性

通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整 个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task,前3个Task执行超过1个小时 ,到了第4个Task的时候发生失败.如果下次执行的时候重新从第1个任务开始执行,那么又要花费1个小 时等待 1-3 任务执行,无疑在效率上讲是非常低的.特别是在数据仓库的应用上,往往从数据源到 Staging的过程中有千万级甚至亿级的数据要加载,加载完毕之后再进入到维度和事实

关于oracle检查点及SCN的深入研究

一.检查点概述 大多数关系型数据库都采用"在提交时并不强迫针对数据块的修改完成"而是"提交时保证修改记录(以重做日志的形式)写入日志文件"的机制,来获得性能的优势.这句话的另外一种描述是:当用户提交事务,写数据文件是"异步"的,写日志文件是"同步"的.这就可能导致数据库实例崩溃时,内存中的DB_Buffer中的修改过的数据,可能没有写入到数据块中.数据库在重新打开时,需要进行恢复,来恢复DB Buffer中的数据状态,并确保已

oracle检查点及SCN号详解

一.CHECKPIONT分为三类: 1)局部CHECKPIONT: 单个实例执行数据库所有数据文件的一个CHECKPIONT操作,属于此实例的全部脏缓存区写入数据文件. 触发命令:SQL>alter system checkpoint local; 这条命令显示的触发一个局部检查点. 2)全局CHECKPIONT: 所有实例(对应并行数据服务器)执行数据库所有数据文件的一个CHECKPIONT操作,属于此实例的全部脏缓存区写入数据文件. 触发命令:SQL>alter system checkp

oracle检查点及oracle SCN知识详解

一.检查点概述 大多数关系型数据库都采用"在提交时并不强迫针对数据块的修改完成"而是"提交时保证修改记录(以重做日志的形式)写入日志文件"的机制,来获得性能的优势.这句话的另外一种描述是:当用户提交事务,写数据文件是"异步"的,写日志文件是"同步"的.这就可能导致数据库实例崩溃时,内存中的DB_Buffer 中的修改过的数据,可能没有写入到数据块中.数据库在重新打开时,需要进行恢复,来恢复DB Buffer 中的数据状态,并确

Oracle数据库检查点未完成的原因

最近在alter日志中发现 Checkpoint not complete 信息 产生此问题的原因具体分析: 首先说一下checkpoint 是什么? chkpoint是一个数据库的内部机制,它存在有两个目的: 1. 保证数据的一致性 系统发生检查点将出发DBWR进程将缓冲区中的脏数据块写入到数据文件,同时更新数据文件中的SCN号,记录联机重做日志文件中LRBA(low redo block address)的位置到控制文件中,当在写入过程中,突然实例崩溃,脏数据块没有完全写入到数据文件中.当实