精华内容
下载资源
问答
  • 在loadrunner中添加事务
    千次阅读
    2020-07-29 22:53:05

    LoadRunner中的事务

    一、事务(Transaction)的简介
    1、定义
    事务是指服务器响应虚拟用户请求所用的时间,可以衡量一系列操作所用的时间。一个完整的事务由事务开始、一个或多个业务操作/ 任务、事务结束构成。

    2、原因
    从性能测试的角度出发,事务可以帮助我们衡量不同的操作对被测系统所造成的影响,知道不同的操作所花费的时间。

    3、事务的作用
    Loadrunner运行到该事务的开始点时,loadrunner就会开始计时,直到运行到该事务的结束点,计时结束后。这个过程中得到的时间即为一个事务时间,通常事务时间所反映的是一个操作过程的响应时间。

    4、函数构造
    事务开始函数共包括一个参数,参数是事务的名称
    lr_start_transaction(“事务的名称”);

    事务结束函数共包括两个参数,第一个参数是事务的名称,第二个参数是事务的状态。
    lr_end_transaction(“事务的名称”,事务的状态);
    事务状态分为四种:
    LR_PASS:返回“pass”返回代码
    LR_FALL:返回“Fail”返回代码
    LR_STOP:返回“stop”返回代码
    LR_AUTO:自动返回检测到的状态

    Duration表示事务的完成响应时间,wasted time包括事务中函数自身执行所消耗的时间

    5、注意事项
    在应用事务的过程中,不要将思考时间(lr_think_time函数)放在事务开始和事务结束之间,否则在设置允许回放思考时间的前提下,思考时间将被算入事务的执行时间,从而影响了对事务正确执行时间的分析和统计。

    二、实例
    脚本如下:

    int a;
    //关联
    web_reg_save_param("session",
    		"LB=name=userSession value=",
    		"RB=>",
    		"Ord=1",
    		LAST);
    		   
    //打开网站
    web_url("打开网站","URL=http://192.168.181.1:1080/webtours/",LAST);
    
    //添加检查点,来验证业务是否成功,如果存在要检查的内容那么就给一状态LR_PASS,否则给LR_FAIL	
    web_reg_find("Search=All",
    		"SaveCount=number",
    		"Text=Welcome, <b>{username}</b>",
    		LAST);
    		
    //事务函数
    lr_start_transaction("login");
    
    web_submit_data("登录",
    		"Action=http://192.168.181.1:1080/webtours/login.pl",
    		"Method=POST",
    		"TargetFrame=",
    		"Referer=",
    		"Mode=HTML",
    		ITEMDATA,
    		"Name=userSession", "Value={session}", ENDITEM,
    		"Name=username", "Value={username}", ENDITEM,
    		"Name=password", "Value={pwd}", ENDITEM,
    		"Name=login.x", "Value=36", ENDITEM,
    		"Name=login.y", "Value=8", ENDITEM,
    		"Name=login", "Value=Login", ENDITEM,
    		"Name=JSFormSubmit", "Value=off", ENDITEM,
    		LAST);
    		
    if(atoi(lr_eval_string("{number}"))>0){
        //事务结束,返回状态为pass
    	lr_end_transaction("login",LR_PASS);
    }else{
       //事务结束,返回状态为fail
    	lr_end_transaction("login",LR_FAIL);
    	}
    
    更多相关内容
  • Loadrunner添加事务

    2021-08-30 17:18:09
    关于脚本的事务 我们一个脚本可能要做很多操作,我们为了分清脚本某一段代码具体是做什么,所以,执行某个操作的前后需要添加事务,用来标志事务的开始与结束,这样可以使脚本更清晰。当然,对于不同的...

    转自:https://www.cnblogs.com/fnng/archive/2012/07/29/2613982.html

    先贴一个脚本:

    完整代码:

    View Code

    重点代码部分:

    复制代码

    Action()
    {
    
    
        web_url("webhp", 
            "URL=http://www.google.com.hk/webhp?hl=zh-CN&sourceid=cnhp", 
            "Resource=0", 
          .....
        lr_start_transaction("登陆");    //设置事务开始
    
        web_submit_data("ServiceLoginAuth", 
            "Action=https://accounts.google.com/ServiceLoginAuth", 
            "Method=POST",       
       ........
    
        web_file("web_find","defnngj@gmail.com",LAST);  //设置检查点
    
        lr_end_transaction("登陆",LR_AUTO);    //设置事务结束
    
        return 0;
    }

    复制代码

    上面的一段代码是我录制的一个google登录的过程,详细过程描述:

    1、进入google首页

    2、点击右上角的登录链接,跳转到登录页面

    3、设置登录事务开始,输入用户名密码,点击登录

    4、登录成功后跳转后google 首页,右上角出现登录的用户名,设置事务结束。

    检查点

      在上面的操作中,我设置了一个检查点,web_fiind  ,判断后我是否登录成功一个重点的标志是在google首页右上角是否出现我的用户名。所以,我根据这个特点设置检查点,来检查登录是否成功。设置检查点的函数有三个,

    web_find()函数: 在页面中查找相应内容

    web_reg_find()函数: 在缓存中查打相应的内容

    web_image_check()函数:在页面中查找具体图片。

      他们的具体用法,你们可以在脚本的编写中,光标定位在函数中,按F1 查看帮助文档或参考其它文档。

    关于脚本中的事务

      我们在一个脚本中可能要做很多操作,我们为了分清脚本中某一段代码具体是做什么,所以,在执行某个操作的前后需要添加事务,用来标志事务的开始与结束,这样可以使脚本更清晰。当然,对于不同的事务需要分开录制。比如,某电子商务网站的浏览商品与交易。他们的比例是不同的,对于比较复杂的场景,是多个事务按不同的比例并行的。设置80%的用户浏览商品,20%的用户进行交易。

      当然,事务与事务之间是会有依赖关系的。如果我们把访问首页定为一个事务,登录定为一个事务,浏览商品定为一个事务,交易定为一个事务。那么我们要想录制(编写)交易的事务,那么前面三个事务是先觉条件。所以,我们知道录制一个脚本的目的是哪个操作,然后在其前后添加事务标识。

          对80%的用户浏览商品,20%用户交易,交易的前提是先浏览一个商品,也就是所有用户(100%)都浏览了商品,只有20%的用户去交易。这样是合乎逻辑的。

    事务函数                                                                         

      在上面的脚本中我们用到了lr_start_transaction()函数和 lr_end_transaction()函数来标识一个事务的开始与结束,除些之外,loadrunner还提供了许多与事务相关的函数,这里介绍几个常用的。

    1、lr_set_transaction_instance_status 用于设置事务的状态,事务的状态包括:LR_PASS、 LR_FAIL 、  LR_AUTO 、  LR_STOP  。可以在脚本中根据条件设置事务的状态,例如,根据检查点返回的结果来设置事务为通过还是失败。

    if(event == GENERAL_ERROR)
            lr_set_transaction_instance_status(LR_FAIL);
        lr_end_transaction("登陆",LR_AUTO);

    2、 lr_fail_trans_with_error与lr_set_transaction_instance_status 类似,都可以用于设置事务的状态,区别在于lr_fail_trans_with_error除了可以设置的状态,还可以输出错误日志信息。

    if(status != SUCCESS)
            lr_fail_trans_with_error("an error has occurred:%s",my_get_error_string(status));
        lr_end_transaction("登陆成功",LR_AUTO); 

    3、lr_get_transaction_status与前两个函数的作用相反,用于获取事务的状态。

    复制代码

    if (lr_get_transaction_status() == LR_FAIL)
        {
            //由于web_url请求失败了,所以没有必要继续执行下去,因些设置事务状态为FAIL
            lr_end_transaction("登陆失败",LR_FAIL);
            return;
        }

    复制代码

    4、lr_get_transaction_duration 用于获取事务所消耗的时间。这个就比较有意思了。

      我们登录百度首页,插入一个事务,然后访问百度注册页面。下面计算访问注册页面的时间。

    完整脚本:

    复制代码

    Action()
    {
        double trans_time;  //定义变量
    
        web_url("www.baidu.com", 
            "URL=http://www.baidu.com/", 
            "Resource=0", 
            "RecContentType=text/html", 
            "Referer=", 
            "Snapshot=t14.inf", 
            "Mode=HTML", 
            EXTRARES, 
            "Url=http://s1.bdstatic.com/r/www/cache/aoyun/img/i-1.0.1.png", ENDITEM, 
            "Url=/favicon.ico", "Referer=", ENDITEM, 
            "Url=http://s1.bdstatic.com/r/www/img/bg-1.0.0.gif", ENDITEM, 
            "Url=http://nsclick.baidu.com/v.gif?pid=201&pj=www&rsv_sid=1289_1328_1262_1228_1344_1342_1186_1281_1178_1287_1320_1294_1330&fm=behs&tab=tj_reg&un=&path=http%3A%2F%2Fwww.baidu.com%2F&t=1343538345708", ENDITEM, 
            "Url=https://passport.baidu.com/favicon.ico", "Referer=", ENDITEM, 
            LAST);
    
        lr_start_transaction("访问注册页");  //定义事务开始
    
        web_link("???", 
            "Text=???", 
            "Ordinal=2", 
            "Snapshot=t15.inf", 
            EXTRARES, 
            "Url=../img/breadbg.gif", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F", ENDITEM, 
            "Url=../js/pass_api_reg.js?v=20120711", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F", ENDITEM, 
            "Url=../img/v2/regbtn-split.gif", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F", ENDITEM, 
            "Url=../cgi-bin/genimage?0013435383780156BF1F30CF18D2332EA927154DCDAB3B6B40F9E25197273F556454857E2FADF7BA23531BE59EEDE0EF92F2F006F8D595B88A907E318D2A249CBAB109FCDB3AB38ED4453F3BC149C6A5FD6240B97D598BA84EE3CEEE3F4359D3469309D88EE55C19B04251D2212171720B476D0A0D6277787DD43D9BA29E426A82BFD90E248FA15A32F1838B3E15D63B8CFE4E3DC6EAD4F23FE0DB457E5AE6B82DACCB79EE9EF289", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F", ENDITEM, 
            "Url=../img/v2/reg_input_bg.gif", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F", ENDITEM, 
            LAST);
    
        trans_time=lr_get_transaction_wasted_time("访问注册页");  //获得消耗时间
    
        if (trans_time) {
            lr_output_message("The duration up to the submit is %f seconds",trans_time);  //打印数输出消耗实时间
        }else{
            lr_output_message("the duration cannot be determined. ");
        }
    
        lr_end_transaction("访问注册页",LR_AUTO);  //事务结束
    
        return 0;
    }

    复制代码

    重点代码部分:

    复制代码

    Action()
    {
        double trans_time;  //定义变量
    
        web_url("www.baidu.com", 
            "URL=http://www.baidu.com/", 
           .....
    
        lr_start_transaction("访问注册页");  //定义事务开始
    
        web_link("???", 
            "Text=???", 
            "Ordinal=2", 
            "Snapshot=t15.inf", 
         ......
    
        trans_time=lr_get_transaction_wasted_time("访问注册页");  //获得消耗时间
    
        if (trans_time) {
            lr_output_message("The duration up to the submit is %f seconds",trans_time);  //打印数输出消耗实时间
        }else{
            lr_output_message("the duration cannot be determined. ");
        }
    
        lr_end_transaction("访问注册页",LR_AUTO);  //事务结束
    
        return 0;
    }

    复制代码

    运行结果:

    复制代码

    .......
    Action.c(39): The duration up to the submit is 0.029588 seconds
    Action.c(45): Notify: Transaction "访问注册页" ended with "Pass" status (Duration: 5.0300 Wasted Time: 0.0296).
    Ending action Action.
    Ending iteration 1.

    复制代码

    39:持续时间长达0.029588秒的提交

    45:通知:交易”访问注册页”结束,“通过”状态(持续时间:5.0300 浪费时间:0.0296)。

      从上面的结果中发现,我们设置lr_get_transaction_wasted_time函数的时间0.029588 与事务结束浪费的时间 0.0296 非常接近。 这是因为我把 lr_get_transaction_wasted_time函数插入在了事务结果的前面,其实,我们可以将lr_get_transaction_wasted_time插入在事务执行过程的任意位置来计算消耗时间。

    展开全文
  • 事务(Transaction)用于模拟用户的一个相对完整的、有意义的业务操作过程,例如登录、查询、交易、转账,这些都可以作为...我们录制脚本的过程,可以通过录制面板的事务按钮来添加事务。 同样以loadrunner 自带W

    事务(Transaction)用于模拟用户的一个相对完整的、有意义的业务操作过程,例如登录、查询、交易、转账,这些都可以作为事务,而一般不会把每次HTTP请求作为一个事务。

    拿笔者所测试的邮箱系统为例,对于邮箱来说更基本且用户使用最多的应用就是收发邮件功能,我们可以拿发邮件看作一个事务:打开写信页,填写收件人,主题,内容,点击发信。在做性能需求分析的时候也就是把系统的业务抽离出来,在性能脚本中用事务来描述。

    我们在录制脚本的过程中,可以通过录制面板的事务按钮来添加事务。
    在这里插入图片描述
    同样以loadrunner 自带WebTours为例,操作步骤:

    1、打WebTours首页

    2、点击事务开始按钮,输入“登录”

    3、输入用户名密码点击登录按钮

    4、点击事务结束按钮,确定。(注意:事务的开始与结束的名称一定要一致)

    脚本如下:

    Action()
    {
    
        web_url("WebTours", 
            "URL=http://127.0.0.1:2080/WebTours/", 
            "Resource=0", 
            "RecContentType=text/html", 
            "Referer=", 
            "Snapshot=t3.inf", 
            "Mode=HTML", 
            EXTRARES, 
            "Url=../favicon.ico", "Referer=", ENDITEM, 
            LAST);
    
        lr_start_transaction("登陆");    //事务开始函数
    
        web_submit_data("login.pl", 
            "Action=http://127.0.0.1:2080/WebTours/login.pl", 
            "Method=POST", 
            "Referer=http://127.0.0.1:2080/WebTours/nav.pl?in=home", 
            "Mode=HTML", 
            ITEMDATA, 
            "Name=userSession", "Value=110409.949777238fzHQcVVpHQVzzzzHDtAHfpcHAHf", ENDITEM, 
            "Name=username", "Value=test", ENDITEM, 
            "Name=password", "Value=123456", ENDITEM, 
            "Name=JSFormSubmit", "Value=on", ENDITEM, 
            LAST);
    
        web_submit_data("login.pl_2", 
            "Action=http://127.0.0.1:2080/WebTours/login.pl", 
            "Method=POST", 
            "RecContentType=text/html", 
            "Referer=http://127.0.0.1:2080/WebTours/nav.pl?in=home", 
            "Snapshot=t4.inf", 
            "Mode=HTML", 
            ITEMDATA, 
            "Name=userSession", "Value=110409.949777238fzHQcVVpHQVzzzzHDtAHfpcHAHf", ENDITEM, 
            "Name=username", "Value=test", ENDITEM, 
            "Name=password", "Value=123456", ENDITEM, 
            "Name=JSFormSubmit", "Value=on", ENDITEM, 
            "Name=login.x", "Value=51", ENDITEM, 
            "Name=login.y", "Value=12", ENDITEM, 
            LAST);
    
        lr_end_transaction("登陆",LR_AUTO);   //事务结束函数
    
        return 0;
    }
    

    查看运行结果:

    Action.c(15): Notify: Transaction "登陆" started.
    Action.c(17): web_submit_data("login.pl") was successful, 795 body bytes, 225 header bytes      [MsgId: MMSG-26386]
    Action.c(29): web_submit_data("login.pl_2") was successful, 795 body bytes, 225 header bytes      [MsgId: MMSG-26386]
    Action.c(45): Notify: Transaction "登陆" ended with "Pass" status (Duration: 0.5704 Wasted Time: 0.0152).
    

    通过运行结果我们可以很清晰地看到本次事务是pass的,整个脚本的持续时间和事务的消耗时间等。

    插入事务的方法:

    插入事务操作可以在录制脚本过程中,也可以在录制结束后进行。可以在脚本中找到需要添加事务的部分,直接插入:


    lr_start_transaction(“事务”);

    lr_end_transaction(“事务”,LR_AUTO);


    注意:1、开始与结束函数必须成对出现
       2、事务的名称必须一样。

    当然,我们也可以将鼠标定位到要插入事务的位置,通过菜单栏来插入事务(insert—>start transaction/end transaction)

    在这里插入图片描述
    到些,loadrunner 脚本的一些基本设置已经介绍完了。你疑问,是不是少了很重要的概念,参数化。

    学习资源分享

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
    在这里插入图片描述
    这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
    在这里插入图片描述

    展开全文
  • 做性能需求分析的时候也就是把系统的业务抽离出来,性能脚本中用事务来描述。 举例 把登录当成一个事务 把退出当成一个事务 录制脚本后: 注意:1、开始与结束函数必须成对出现 2、事务的名称必须一样。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

    文章目录


    事务

    事务(Transaction)用于模拟用户的一个相对完整的且有意义的业务操作过程,例如登录/查询/交易/转账账,这些都可以作为事务,但是一般不会把每次的HTTP请求作为一个事务。
    对一个事务进行更详细的性能分析。
    以邮箱系统为例,对于邮箱来说更基本且用户使用最多的应用就是收发邮件功能,我们可以拿发邮件看作一个事务:打开写信页,填写收件人,主题,内容,点击发信。在做性能需求分析的时候也就是把系统的业务抽离出来,在性能脚本中用事务来描述。
    在这里插入图片描述

    举例

    把登录当成一个事务
    把退出当成一个事务
    录制脚本后:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    注意:1、开始与结束函数必须成对出现
       2、事务的名称必须一样。

    展开全文
  • LoadRunner如何插入事务(Transaction) ?
  • 事务:是一个点,我们为了衡量某个操作的性能,需要操作的开始和操作的结束位置插入...作用:loadrunner运行到该事务的开始点时,loadrunner就会开始计时,直到运行到该事务的结束点,计时结束,通俗的讲loadrunne...
  • Loadrunner概念之事务

    2020-03-31 22:10:49
    事务是指服务器响应虚拟用户请求所用的时间,它...1)手工插入:直接脚本输入事务开始函数和结束函数 2)菜单插入:【Insert】>【Start Transaction…】、【End Transaction…】 其中,事务的结束状态...
  • LoadRunner场景-事务与集合点

    千次阅读 2018-09-27 22:13:30
    1.2:LoadRunner如何添加事务 1:如下代码 我们需要对 eb_submit_data()这个登陆接口添加事务 统计响应时间 我们有两种方法去添加  方法一:自动添加 steup1:鼠标移动到需要统计响应时间的接口函数上面 点击...
  • LoadRunner - 添加事务

    2017-08-16 10:25:00
    事务(Transaction)用于模拟用户的一个相对完整的、有意义的业务操作过程,例如登录、查询、交易、转账,这些都可以作为事务,而一般不会把每次HTTP请求作为一个事务。  拿笔者所测试的邮箱系统为例,对于邮箱来...
  • 》》》推荐阅读《《《1、性能测试学习笔记-场景设计2、性能测试的重要意义3、性能分析流程及方法4、应用系统性能调优之性能分析一、基本介绍在Loadrunner的使用,对于Run-time Settings下的browser emulation设置...
  • vuser_init : 存放初始...Loadrunner采用脚本定义「事务」 来完成这一需求。(说白了,就是分析局部代码的性能) 定义事务(确保你的脚本是可通过编译的) 点击此处定义事务 (插入事务开始标记) 点此定义事务.
  • 事务(Transaction)用于模拟用户的一个相对完整的、有意义的业务操作过程,例如登录、查询、交易、转账,这些都可以作为事务,而一般不会把...做性能需求分析的时候也就是把系统的业务抽离出来,性能脚本中用事务...
  • loadrunner12 添加检查点-文本检查点
  • Loadrunner 脚本录制、设置事务添加检查点、参数化以及添加关联 说明:本文使用loadrunner自带的HP Web Tours Application,录制web脚本没有概念性的解释,直接开始 一、打开web Server,见下图 启动后,...
  • 一、loadrunner录制原理 (1)录制:录制url或应用程序发出的请求和服务器响应,把它记录下来生成脚本 (2)回放:模拟真实用户发出请求 二、函数组成 (1)init,录制初始化,执行一次 (2)action,重要...
  • 事务,叫transaction,是用来业务操作的响应时间,在LoadRunner中,需要做的操作就是请求的出发前添加一个事务开始的计数器,请求结束的地方添加一个事务结束的计数器,Vugen会自动计算函数间的时间差。...
  • loadrunner 设置事务、集合点和断言 需要并发的地方设置集合点,集合点必须放在事务前面 lr_rendezvous("create_shitika"); 事务 ,把操作一个动作的完整请求放在一个事务里面 lr_start_transaction("create_card...
  • MySQL 事务本文所说的 MySQL 事务都是指 InnoDB 引擎下,MyISAM 引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一...
  • MySQL 事务本文所说的 MySQL 事务都是指 InnoDB 引擎下,MyISAM 引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一...
  • 目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 并发测试/压力测试 添加集合点 并发测试/压力测试 LoadRunner集合点适用于并发测试,主要关注大用户量并发的时候,分为两种情况:一种是所用用户都发...
  • MySQL 事务本文所说的 MySQL 事务都是指 InnoDB 引擎下,MyISAM 引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一...
  • 事务创建方法: 录制时添加 手动添加 自动创建事务: 手工添加在事务头尾写函数,如把注册作为一个事务: 运行成功:
  •  事务又称为Transaction,在LoadRunner中的定义如下:An end-to-end(browser-to-browser) measurement of one or more user actions within action file。中文理解如下:事务(Transaction)是这样一个点,我们为了...
  • loadrunner --- 添加事务

    千次阅读 2019-06-12 22:53:03
    事务的定义 事务是为了衡量某个操作的性能,需要操作的开始和结束的为位置插入这样一个范围,这就定义了要给transaction。 作用 ...通俗的讲,LoadRunner中事务就是一个计时计时标识,LoadR...
  • loadrunner学习笔记-添加事务

    千次阅读 2018-05-08 14:30:06
    事务(Transaction)定义:transaction是这样一个点,为了衡量某个操作的性能,需要操作的开始和结束为止插入这样一个范围,就定义为trancsaction原因:从性能测试的角度出发,我们需要知道不同的操作花费的时间,...
  • 在LoadRunner中事务是指用户客户端做一种或多种业务所需要的操作集(actions),通过事务开始和结束函数可以标记完成该业务所需要的操作内容(脚本section);定义事务来衡量服务器的性能,例如,你可以定义一个事务...
  • 测试人员可以将一个或者多个操作步骤定义为一个事务。 可以通俗的理解事务为“人为定义的一系列请求(请求可以是一个或者多个)”。 程序上,事务表现为被开始...添加事务的方法很简单,只需要把需要的代码包...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,899
精华内容 1,559
热门标签
关键字:

在loadrunner中添加事务