LoadRunner检查点实战

标签: 测试人生 LoadRunner 性能测试 检查点 | 发表时间:2013-11-14 10:23 | 作者:backtracker
出处:http://www.neversaydie.cc

前言

很久很久没有更新博客了。久到我都不记得上一次更新博客是什么时候,久到我们博客主机都过期了,一度我还想停掉这个博客。好在有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注册用户,并将用户名写入脚本中。

转载请注明来源: 码农博客 LoadRunner检查点实战
本文链接地址: http://www.neversaydie.cc/loadrunner-checkpoint-in-action/

相关 [loadrunner 检查] 推荐:

LoadRunner检查点实战

- - 码农博客
久到我都不记得上一次更新博客是什么时候,久到我们博客主机都过期了,一度我还想停掉这个博客. 好在有simon的坚持才决定博客继续整下去. 2013年对我来说是一个比较折腾的一年. 找工作的时候才发现理想与现实之间的差距是如此的巨大. 期间经历了落差、失望、彷徨……. 最近一段时间给我们组成员培训LoadRunner,我自己也有所收获,也就有了这篇文章.

loadrunner教程

- - 行业应用 - ITeye博客
[内部资料]LoadRunner培训初级教程. 一 LoadRunner简介. 1.1 Loadrunner介绍. 是 HP Mercury Interactive. LoadRunner 通过模拟一个多用户并行工作的环境来对应用程序进行负载测试. 使用最少的硬件资源,这些虚拟用户提供一致的、可重复并可度量的负载,像实际用户.

如何做LoadRunner结果分析

- - 互联网 - ITeye博客
  LoadRunner 最重要也是最难理解的地方--测试结果的分析.其余的录制和加压测试等设置对于我们来讲通过几次操作就可以轻松掌握了.针对 Results Analysis 我用图片加文字做了一个例子,希望通过例子能给大家更多的帮助.这个例子主要讲述的是多个用户同时接管任务,测试系统的响应能力,确定系统瓶颈所在.客户 要求响应时间是1 个人接管的时间在5S 内..

LoadRunner录制Web协议的脚本

- - 互联网 - ITeye博客
1、  打开虚拟用户生成器,选择File----New,会出来一个对话框,如下. 选择Web(HTTP/HTML)协议,点击OK. 2、  点击工具栏内的“Start Record”按钮开始录制. 3、  在跳出来的对话框中输入要录制的url地址,如 http://www.51testing.com,然后点击OK正式开始录制.

LoadRunner做性能测试 从设计到分析执行

- - CSDN博客推荐文章
  测试中报错的信息解决:. Failed to connect to server "域名:80": [10065] No Route to Host.   这种错误信息有两种情况,一是交换机堵塞,一是服务器网络堵塞或者CPU无法响应(网卡中断处理不过来了).   从服务器端检查下iptables 是否开启,看看 /proc/sys/net/ipv4/ip_conntrack_max 是多少.

检查清单(20200510)

- - coderbee笔记
入参基本校验:金额不能小于0、不能大于余额、不能大于应还总额等. 请求参数用 POJO 接收,POJO 的属性要添加基本校验注解,Controller 方法要用. 正则表达式:用正则表达式进行参数校验时,不能写太复杂的,因为 Java 的正则引擎采用的是贪婪匹配模式. 超时限定:为了防止外部服务出现响应缓慢而拖累调用方,调用方必须设置连接超时、读超时等.

C++检查内存泄露

- - CSDN博客推荐文章
说明,我使用的ide是vs2008. 内存泄露的检测一般在debug模式下进行. 2.在需要检查内存泄露的cpp头部加上. 4.然后就可以在输出中看泄露情况了. 举个例子,例子中我用newEx表示的上述宏定义中的new. 输出中显示的内容(debug下运行程序,然后点叉叉关闭程序).   Data: <                > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD .

Solr4.2.1 拼写检查组件

- - 寒江孤影
在做搜索时一般可以在用户输入检索条件时使用suggest,而在点击完搜索时,使用拼写检查,二者结合给可以用户带来比较好的用户体验. suggest与spellcheck看似功能一样,出发点是不一样的,使用条件也不一样,spellcheck是在没有搜索出结果时才有的功能,搜索词正确是没能spellcheck结果的,而suggest是任何情况下都有结果的.

检查素数的正则表达式

- Wesley - 中文热文榜|最新
hawk 在 GoogleReader 说. 还有 ffan, football, 推荐,查看全部 33 个推荐 34 次分享. 酷壳 - CoolShell.cn发表于2010-07-23 08:22:27. 一般来说,我们会使用正规表达式来做字符串匹配,今天在网上浏览的时候,看到了有人用正则表达式来检查一个数字是否为素数(质数),让我非常感兴趣,这个正则表达式如入所示:.

自己动手,检查睾丸

- ZX - 果壳网 guokr.com - 果壳网
睾丸是男人的象征,但也是男人的软肋. 除了外伤,还有很多疾病会在睾丸上悄然降临,让男人痛不欲生. 难言之“隐”的极致可能是隐睾症了,这通常是由于在胚胎发育后期或出生后某侧睾丸未能下降至阴囊所致. 不过,物极必反,尽管隐睾症隐到了极致,但却是最容易被患者发现的睾丸异常情况(少了一个甚至两还能保持淡定岂非太极品了……).