51Testing软件测试论坛
标题:
学习loadrunner之一_事务
[打印本页]
作者:
Erica
时间:
2007-3-14 00:27
标题:
学习loadrunner之一_事务
Loadrunner
是一款负载测试工具,它有三个核心组件分别是
Virtual User Generator
、
Controller
、
Analysis
。
Virtual 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