• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

LoadRunner中的事务--好友冰岩友情原创

发布: 2008-7-30 22:02 | 作者: 阳光 | 来源: 本站原创 | 查看: 1387次 | 进入软件测试论坛讨论

领测软件测试网

MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务又称为Transaction,在LoadRunner中的定义如下:An end-to-end(browser-to-browser) measurement of one or more user actions within action file。中文理解如下:事务(Transaction)是这样一个点,我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这就定义了一个transaction

事务的作用:LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在LoadRunner的运行结果中会有反映。通俗的讲LoadRunner中的事务就是一个计时标识,LoadRunner在运行过程中一旦发现事务的开始标识,就开始计时,一旦发现事务的结束表示,则计时结束,这个过程中得到的时间即为一个事务时间。通常事务时间所反映的是一个操作过程的响应时间。

下面我们说说为什么在LoadRunner中使用事务。为什么使用事务的原因是多种多样的,总结下来如下五点所示:

1事务是 LoadRunner 度量系统性能指标的唯一手段;(没有事务则没有办法衡量系统的响应时间,也许有人说LoadRunner可以通过编程来计时得到,不错如果你编程能力够强是能够实现的,但肯定不如LoadRunner中的事务用的简单而且方便)

2、事务能够用于度量高风险业务流程的性能指标;

3、事务能够度量在一组操作中每一步的性能指标;

4、通过事务计时实现了不同压力负载下的性能指标对比;

5、通过事务计时可以帮助定位性能瓶颈;

性能测试的角度出发,我们需要知道不同的操作所花费的时间,这样我们就可以衡量不同的操作对被测系统所造成的影响,那么我们如何知道不同的操作所花费的时间,这就用到了事务,我们在操作之前插入一个事务开始标识,在操作完成后插入一个事务结束表示,这样我们就知道了这个操作所花费的时间。

接着我们说说如何使用事务,以及事务应该应用在什么地方。

使用事务有如下几种方法:

1、方法一:脚本生成后,手动插入事务;方法:在LoadRunner脚本中点击鼠标:右键,选择“InsertStart Transaction”弹出一个对话框,输入一个事务名字(注:事务名字可以为中文、可以为英文,也可以中英文混合,但推荐的做法是起一个容易理解的名称,例如想知道登录所花费的时间,则插入事务可以命名为login或登录);“Start Transaction”插入完成后,还需要插入一个“End Transaction”,用以标识事务结束;注:Start TransactionEnd Transaction需要成对出现,如果仅插入Start Transaction则脚本编译会提示错误;此外,还可以通过LoadRunner vugen中的“Insert”菜单插入Start TransactionEnd Transaction

2、方法二:在脚本录制过程中插入Start TransactionEnd Transaction;在脚本录制过程中,通过录制工具条上的Start TransactionEnd Transaction图标插入事务,如下图所示:

3、方法三:通过Run-time Settings 中的Automatic Transactions自动生成事务,如下图所示:

注:该种方法插入的事务仅能在LoadRunner Controller中的图表和报告中看到在脚本的log中看不到。

以上为事务的插入方法,无论是那种方法,插入事务后,我们都可以在脚本中看到如下两个函数:lr_start_transaction("事务")  lr_end_transaction("事务", LR_AUTO),前一个为事务开始函数,后一个为事务结束函数,括号中引号中的内容为事务名称。

事务举例:如下为一个LoadRunner所生成的脚本。

    web_url("Folder.jsp_4",

              "URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://172.17.16.5/xpc71/LoginAction.do",

              "Snapshot=t10.inf",

              "Mode=HTML",

              LAST);

       web_url("TemplateAdminAction.do",

              "URL=http://172.17.16.5/xpc71/TemplateAdminAction.do?forwardID=1",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://172.17.16.5/xpc71/LoginAction.do",

              "Snapshot=t11.inf",

              "Mode=HTML",

              LAST);

 

       web_submit_form("ScheduleCreationAction.do",

              "Snapshot=t12.inf",

              ITEMDATA,

              "Name=PTName", "Value=test", ENDITEM,

              "Name=headerTempID", "Value=ttte", ENDITEM,

              "Name=selectHeader", "Value=1", ENDITEM,

              "Name=schTempID", "Value=preProductionDetailTemplate", ENDITEM,

              LAST);

 

我们插入事务之后如下所示:

 

    lr_start_transaction("事务");

    lr_start_transaction("事务1");

    lr_start_transaction("事务2");

 

    web_url("Folder.jsp_4",

              "URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://172.17.16.5/xpc71/LoginAction.do",

              "Snapshot=t10.inf",

              "Mode=HTML",

              LAST);

       lr_end_transaction("事务", LR_AUTO);

       web_url("TemplateAdminAction.do",

              "URL=http://172.17.16.5/xpc71/TemplateAdminAction.do?forwardID=1",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://172.17.16.5/xpc71/LoginAction.do",

              "Snapshot=t11.inf",

              "Mode=HTML",

              LAST);

       lr_end_transaction("事务1", LR_AUTO);

 

       web_submit_form("ScheduleCreationAction.do",

              "Snapshot=t12.inf",

              ITEMDATA,

              "Name=PTName", "Value=test", ENDITEM,

              "Name=headerTempID", "Value=ttte", ENDITEM,

              "Name=selectHeader", "Value=1", ENDITEM,

              "Name=schTempID", "Value=preProductionDetailTemplate", ENDITEM,

              LAST);

       lr_end_transaction("事务2", LR_AUTO);

解释:

Ø        “事务”统计的时间为

web_url("Folder.jsp_4",

                     "URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",

                     "Resource=0",

                     "RecContentType=text/html",

                     "Referer=http://172.17.16.5/xpc71/LoginAction.do",

                     "Snapshot=t10.inf",

                     "Mode=HTML",

                     LAST);

所执行的时间;

Ø        “事务1”统计的时间为:

       web_url("Folder.jsp_4",

              "URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://172.17.16.5/xpc71/LoginAction.do",

              "Snapshot=t10.inf",

              "Mode=HTML",

              LAST);

       web_url("TemplateAdminAction.do",

              "URL=http://172.17.16.5/xpc71/TemplateAdminAction.do?forwardID=1",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://172.17.16.5/xpc71/LoginAction.do",

              "Snapshot=t11.inf",

              "Mode=HTML",

              LAST);

所执行的时间;

Ø        “事务2”统计的时间为:

       web_url("Folder.jsp_4",

              "URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://172.17.16.5/xpc71/LoginAction.do",

              "Snapshot=t10.inf",

              "Mode=HTML",

              LAST);

web_url("TemplateAdminAction.do",      

"URL=http://172.17.16.5/xpc71/TemplateAdminAction.do?

forwardID=1",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://172.17.16.5/xpc71/LoginAction.do",

              "Snapshot=t11.inf",

              "Mode=HTML",

              LAST);

 

       web_submit_form("ScheduleCreationAction.do",

              "Snapshot=t12.inf",

              ITEMDATA,

              "Name=PTName", "Value=test", ENDITEM,

              "Name=headerTempID", "Value=ttte", ENDITEM,

              "Name=selectHeader", "Value=1", ENDITEM,

"Name=schTempID", "Value=preProductionDetailTemplate", ENDITEM,

              LAST);

所执行的时间;

从上文我们可以看出事务之间可以嵌套使用,相互之间没有影响,事务计时仅仅以事务名称为标识。

总结:

        使用LoadRunner transactions可以度量:

    业务流程中每一步所花费的时间

    整个业务流程所花费的时间

    业务流程中每一步的性能指标可以自动度量

        可以在录制过程中和录制完成后增加LoadRunner transactions

        利用 “automatic LoadRunner transactions” 可以很方便的度量每一步的性能指标。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: loadrunner LoadRunner Loadrunner 事务 原创 好友 友情


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网