51Testing软件测试论坛

标题: 学习loadrunner之一_事务 [打印本页]

作者: Erica    时间: 2007-3-14 00:27
标题: 学习loadrunner之一_事务
Loadrunner是一款负载测试工具,它有三个核心组件分别是Virtual User GeneratorControllerAnalysisVirtual User Generator 可以通过录制脚本准确的记录下来用户的每一步操作并且可以进行集合点设置、事务设置、参数化等操作从而为在Controller中执行特定的场景做准备。Controller顾名思义,它可以控制脚本的执行,通过把脚本放置在一个特定的场景中,模拟一批真实用户的操作过程,这些模拟的真实用户就叫做虚拟用户。通过这些虚拟用户可以对系统进行负载测试。Analysis应该是测试人员极为关注的一个组件,通过Controller执行完某一个场景之后,Analysis可以自动生成测试结果并通过图形的形式显示出来,测试人员只有借助这些图表才能准确分析出系统的瓶颈并且确定性能是否达到要求。

下面介绍一下如何进行集合点、检查点以及参数化的设置:
对于集合点、检查点的设置有两种方法,一种是在录制完脚本以后,手工在脚本中添加相关的关键字例如lr_start_transaction等,这种方法对脚本语言的理解能力要求较高。另一种是直接在录制的过程中添加集合点、检查点,这样lr就会自动把集合点、检查点的关键字添加到脚本中。

事务:就是用户某一步或者某几步操作的集合。当我们需要通过某一步或是某几步操作从而衡量服务器的性能的时候,这时我们就把这些操作设置成一个事务,当事务开始执行的时候lr就开始计时当事务运行结束计时停止,执行事务的时间会在在最后的结果中显示出来。
实例:登录sina网站,把点击“天气”设置成一个事务,衡量服务器处理处理该事务的性能。
1,点击红色的录制按钮,输入URL开始录制。弹出sina的首页,点击file:///C:/DOCUME%7E1/%E5%88%98%E5%A9%A7/LOCALS%7E1/Temp/msohtml1/01/clip_image001.jpg设置事物的开始位置,这时弹出事务开始对话框要求输入事务的名称,一般来讲我们都会把事务名称命名为容理解的名字,此处我们命名为“天气”
file:///C:/DOCUME%7E1/%E5%88%98%E5%A9%A7/LOCALS%7E1/Temp/msohtml1/01/clip_image002.jpg
点击OK完成事务的开始点设置。
2,在sina页面上点击“天气”的连接,出现天气页面
3,点击file:///C:/DOCUME%7E1/%E5%88%98%E5%A9%A7/LOCALS%7E1/Temp/msohtml1/01/clip_image003.jpg设置事务的结束点,这时弹出事务结束对话框
file:///C:/DOCUME%7E1/%E5%88%98%E5%A9%A7/LOCALS%7E1/Temp/msohtml1/01/clip_image004.jpg
lr根据匹配原则已经自动把事务名字一栏填入“天气”,我们只需要选择事务的状态。状态有三种LR_AUTO LR_PASS LR_FAIL LR_STOP
LR_AUTO:事物的状态被自动设置,如果事务执行成功,状态设置为PASS,如果执行失败,状态设置为FAIL,如果由于异常中断,状态被设置成STOP.
LR_PASS:事务如果执行成功,代码的返回状态就是PASS
LR_FAIL:事务如果执行失败,代码的返回状态就是FAIL
一般我们选择LR_AUTO 那么我们会有疑问什么时候我们选择PASS或者是FAIL呢?
Lr的帮助文档中有一条例子,可以很好的帮助我们理解
lr.start_transaction("GetStocks");
try {
String stocks[];
stocks = orStockServer1.getStockList();
if (stocks.length == 0)
             throw new Exception("No stocks returned/available");
lr.end_transaction("GetStocks", lr.PASS);
}
catch (Exception e1) {
      lr.end_transaction("GetStocks", lr.FAIL);
      lr.message(" An exception occurred : " + e1.toString() );
       }
代码说明:这时一个得到stocklist的例子,程序中设置了异常检查来确保getStockList()方法返回非零的长度。

同时我也进行了如下的脚本修改
………………
lr_start_transaction("天气");
    lr_think_time( 3 );
    web_add_cookie("mysinal=ai_erica;DOMAIN=weather.news.sina.com.cn");
    web_add_cookie("SINAGLOBAL=221.219.31.58.924471172571904604;DOMAIN=weather.news.sina.com.cn");
………………
lr_end_transaction("天气", LR_FAIL);
在最后我把该事物的结束状态设置为FAIL,然后运行该脚本,其实该事物的运行是没有任何错误的,完全可以运行成功,只是在最后我把事务的状态手工设置为FAIL。当脚本执行完后,查看EcecutionLog看到这样一条log语句:
Action.c(297): Notify: Transaction "天气" ended with "Fail"status (Duration: 5.1436).
那么这样做的意义是什么呢?为什么要设置事务结束状态呢?原因就是在Analysis中生成结果图表的时候我们就能看到这个名为“天气”的事务执行是失败的。如果语句是这样:
Action.c(297): Notify: Transaction "天气" ended with "Pass"status (Duration: 5.1436).
Analysis中生成结果图表的时候我们就能看到这个名为“天气”的事务执行是成功的。
设置事务结束状态的用途就在这里。试想Lr为什么能自动生成结果图表?无非就是Analysis通过一些定义好的API获取执行脚本过程中的返回值,从而显示出事务执行的正确还是错误,或是显示出响应时间等信息,然后调用GUI使我们很直观的看到测试结果。
作者: Erica    时间: 2007-3-14 00:34
发现图片都没有了,传一个附件好了.....sdlkfj2

学习loadrunner有一段时间了,今天想整理记录下来,能写出来也算是对自己的一种检验吧~。欢迎拍砖......
作者: duola1119    时间: 2007-3-14 08:35
不错.顶一下.向大家介绍一个测试执行语句的新工具"infrared".大家可以搜索一下.
作者: wangyong3552128    时间: 2007-3-14 08:43
向你学习。

infrared,是什么工具,好下吗??
作者: fish_yy    时间: 2007-3-14 09:28
总结的很好哦:)
作者: mtangshan    时间: 2007-3-15 21:22
不错,顶
作者: 19thangel    时间: 2007-3-16 10:14
谢谢楼主


不过贴的好像是硬盘图把  -_-b
作者: lovsnow    时间: 2007-3-16 16:31
不错不错,对LR的研究开始深入了。
作者: rickyzhu    时间: 2007-3-17 15:53
不错,支持这样的原创作品
作者: freshman0216    时间: 2007-5-28 15:58
谢谢楼主讲解
这几天忙测试真需要
作者: john2006    时间: 2007-5-29 14:20
thx
作者: nedved1020    时间: 2007-5-29 15:10
3q
作者: suoyi    时间: 2007-5-30 16:12
非常感谢楼主共享~~
作者: hbxtly    时间: 2007-5-30 16:36
向楼主学习,定期总结自己学到的东西!
作者: bingbingyang11    时间: 2007-5-30 17:35
想问下楼主,lr的帮助文档应该不是用户手册吧?
我在用户手册里看到很少关于事务的介绍,更别说是举例子了
那,在哪可以下载到楼主所说的帮助文档呢?
作者: lotuskbl    时间: 2007-5-30 19:18
标题: 我下载不了
为什么我下载不了啊????sdlkfj9 sdlkfj9 sdlkfj9
系统给我提示:对不起,管理员设置了当您的综合技术指数低于 0 的下限时不能进行此操作,请返回。
作者: freshman0216    时间: 2007-5-31 15:48
TO:lotuskbl

你多回帖发帖就可以下载了
作者: lotuskbl    时间: 2007-6-1 13:31
谢谢freshman0216
作者: ymtest    时间: 2007-6-5 15:28
谢谢楼主,下来看看
作者: xoch421    时间: 2007-6-5 18:01
感谢!
作者: zhurenrr    时间: 2007-6-5 18:14
谢谢
作者: zhengweihua    时间: 2007-6-6 10:15
多谢LZ
作者: nick_liu    时间: 2007-6-6 11:50
好东西  我一定要顶起~!
作者: janne09    时间: 2007-6-6 12:49
顶一下。
作者: wubei    时间: 2007-6-6 13:49
多谢楼主!~
作者: wei_jc    时间: 2007-6-6 16:28
谢谢分享
作者: k5907    时间: 2007-8-12 11:40
sdlkfj5
作者: wang_jxiang    时间: 2007-8-14 15:45
3Q
作者: alextowxm    时间: 2007-8-14 16:07
有没有集合点的总结 我想借鉴借鉴 现在学习中
作者: syd    时间: 2007-8-14 16:49
感谢楼主整理资料,有实例理解的更明白。
作者: washice    时间: 2007-8-14 17:33
看看斑竹的内容
作者: iceblue2006    时间: 2007-10-17 17:17
晕死了,技术指数不够啊
要看的东西太了!
谢谢楼主!
作者: kofee    时间: 2007-11-12 19:27
谢谢LZ经验
作者: marysnow    时间: 2008-1-22 02:25
很不错,感谢楼主分享,能否再详细介绍一下集合点和事务的结合使用啊.
作者: zdnpyl    时间: 2008-1-24 16:15
太好了,谢谢楼主!
作者: FENHUA927    时间: 2008-1-24 17:44
谢谢楼主分享。。。。
作者: haveen    时间: 2008-1-24 17:44
谢谢哦学习了
作者: iori    时间: 2008-1-25 09:25
感谢
作者: zlpxm    时间: 2008-1-25 13:17
原帖由 Erica 于 2007-3-14 00:27 发表

同时我也进行了如下的脚本修改
………………
lr_start_transaction("天气");
    lr_think_time( 3 );
    web_add_cookie("mysinal=ai_erica;DOMAIN=weather.news.sina.com.cn");
    web_add_cookie("SINAGLOBAL=221.219.31.58.924471172571904604;DOMAIN=weather.news.sina.com.cn");
………………
lr_end_transaction("天气", LR_FAIL);


这个web_add_cookie的修改不是很懂耶,根据什么改的啊?
作者: wxq031    时间: 2008-2-2 11:20
标题: ceshixinshou
xiexie
作者: wzdancer    时间: 2008-4-28 14:05
写的很好!感谢!
作者: blueteer    时间: 2008-4-28 16:51
很有用阿,顶哦
作者: dujun    时间: 2008-4-28 17:10
好东西啊
作者: 婧子    时间: 2008-4-28 20:18
先谢过,看看
作者: hctest    时间: 2008-4-29 11:35
haode




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2