LoadRunner 8事物

添加事物

Action()
{
    lr_start_transaction("openindex");
    web_url("WebTours",
        "URL=http://127.0.0.1:1080/WebTours/",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t3.inf",
        "Mode=HTTP",
        LAST);
    lr_end_transaction("openindex", LR_AUTO);
    return 0;
}
运行结果:Action.c(4): 通知: Transaction "openindex" started.
Action.c(6): web_url("WebTours") 已成功,312 个正文字节,164 个标头字节      [MsgId: MMSG-26386]
Action.c(15): 通知: Transaction "openindex" ended with "Pass" status (Duration: 0.4420 Wasted Time: 0.3987).

lr_end_transaction的4中状态

LR_PASS LR_FAIL 自定义事物成功和失败。也可以用 lr_set_transaction_status_by_name(LR_FAIL,"openindex"); 函数自定义事物状态

Action()
{
    int status ;
    lr_start_transaction("openindex");
    //web_url 成功返回0 失败返回1
    status =web_url("WebTours",
        "URL=http://127.0.0.1:1080/WebTours1/", //不存在的网址
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t3.inf",
        "Mode=HTTP",
        LAST);
    if (status==0) {
        lr_end_transaction("openindex", LR_PASS);
    }else{
        lr_end_transaction("openindex", LR_FAIL);
    }
    return 0;
}运行结果:网址不存在
Action.c(6): 通知: Transaction "openindex" ended with "Fail" status (Duration: 0.4105 Wasted Time: 0.3801).
如果网址存在,请求成功:
Action.c(15): 通知: Transaction "openindex" ended with "Pass" status (Duration: 0.3951 Wasted Time: 0.3687).

LR_AUTO

Action()
{
    lr_start_transaction("openindex");
    web_url("WebTours",
        "URL=http://127.0.0.1:1080/WebTours/1", //不存在的网址
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t3.inf",
        "Mode=HTTP",
        LAST);
    lr_end_transaction("openindex", LR_AUTO);
    return 0;
}
运行结果:
Action.c(4): 通知: Transaction "openindex" ended with "Fail" status (Duration: 0.4072 Wasted Time: 0.3774).
Action()
{
    lr_start_transaction("openindex");
    web_url("WebTours",
        "URL=http://127.0.0.1:1080/WebTours/", //网址正确
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t3.inf",
        "Mode=HTTP",
        LAST);
    lr_set_transaction_status_by_name(LR_FAIL,"openindex"); //手动设置事务失败
    lr_end_transaction("openindex", LR_AUTO);
    return 0;
}
结果:
Action.c(14): 通知: Transaction "openindex" ended with "Fail" status (Duration: 0.4284 Wasted Time: 0.3811).

LR_STOP

事物返回时间的详细解释

Action.c(14): 通知: Transaction "openindex" ended with "Fail" status (Duration: 0.4284 Wasted Time: 0.3811).

Duration(持续时间):事物开始一共的时间。包括Wasted Time、代码浪费时间。在Analysis获取的是 Duration-Wasted Time时间。

Wasted Time(浪费的时间):LR为了支撑,工具内部的时间。事物的统计。用lr_start_timer()  lr_end_timer()函数获取。

Action()
{
    lr_start_transaction("openindex");
    web_url("WebTours",
        "URL=http://127.0.0.1:1080/WebTours/", //网址正确
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t3.inf",
        "Mode=HTTP",
        LAST);
    //lr_think_time(3);
    lr_output_message("Duration:%lf;Wasted Time=%lf",lr_get_transaction_duration("openindex"),lr_get_transaction_wasted_time("openindex"));
    lr_end_transaction("openindex", LR_AUTO);
    return 0;
}
运行结果:
Action.c(13): Duration:0.389529;Wasted Time=0.361978
去掉lr_think_time注释

Action.c(13): Duration:3.384649;Wasted Time=0.352630   //Duration多了3秒
  Action.c(14): 通知: Transaction "openindex" ended with "Pass" status (Duration: 3.3882 Think Time: 2.9994 Wasted Time: 0.3526).

程序消耗时间:

Action()
{
    merc_timer_handle_t timer;
    char save[1000];
    double wasteTime;
    int i;
    lr_start_transaction("openindex");
    web_url("WebTours",
        "URL=http://127.0.0.1:1080/WebTours/",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t3.inf",
        "Mode=HTTP",
        LAST);
    timer=lr_start_timer();
    for(i=0;i<1000;i++){
        sprintf(save,"this is the way we wasteTime in a script %d",i);
    }
    wasteTime=lr_end_timer(timer);    //lr_wasted_time(wasteTime*1000); //把浪费的时间加到WastedTime.因为wasteTime是秒。lr_wasted_time接收的是毫秒。所以好*1000
    lr_output_message("Duration:%lf;Wasted Time=%lf",lr_get_transaction_duration("openindex"),lr_get_transaction_wasted_time("openindex"));
    lr_end_transaction("openindex", LR_AUTO);
    return 0;
}
运行结果:
Action.c(22): 通知: Transaction "openindex" ended with "Pass" status (Duration: 3.0407 Wasted Time: 0.3701). 持续时间包括了程序时间。去掉 lr_wasted_time注释。运行结果Action.c(23): 通知: Transaction "openindex" ended with "Pass" status (Duration: 3.7046 Wasted Time: 3.6650). 可以看到for循环运行的时间,被加到了Wasted Time

需要注意的

1)事务中不要插入日志函数

2)不要插入集合点函数

3)尽量不要插入思考时间

时间: 2024-07-30 10:13:33

LoadRunner 8事物的相关文章

LoadRunner去除事物中的程序的执行时间

大家在性能测试过程中,经常会用到程序处理或组织数据,以达到一定的测试目的,但是程序本身执行会消耗一些时间,这部分消耗的时间是包含在响应时间里面,此时,响应时间=正常响应时间+程序执行消耗时间.那么如何来保证响应最接近真实,LoadRunner提供了一组函数,减去程序消耗时间,达到测试目的.函数(绿色标注)如下: double time_elapsed = 0.00, duration = 0.00, waste = 0.00,trans_time = 0.00,waste_time = 0.00

MYSQL数据库服务磁盘IO高问题分析与优化

压力测试过程中,如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大,TPS逐渐降低等.而问题定位分析通常情况下,最优先排查的是监控服务器资源利用率,例如先用TOP 或者nmon等查看CPU.内存使用情况,然后在排查IO问题,例如网络IO.磁盘IO的问题. 如果是磁盘IO问题,一般问题是SQL语法问题.MYSQL参数配置问题.服务器自身硬件瓶颈导致IOPS吞吐率问题. 今天主要是讲解MYSQL 参数配置不合理导致在高并发下磁盘IO问题,而MYSQL整体监控优化方案后面会整理<如何轻

LoadRunner中响应时间与事物时间详解

1. 响应时间 事务是指用户在客户端做一种或多种业务所需要的操作集,通过事务函数可以标记完成该业务所需要的操作内容:另一方面事务可以用来统计用户操作的响应时间,事务响应时间是通过记录用户请求的开始时间和服务器返回内容到客户端时间的差值来计算用户操作响应时间的,如图1所示. 图1  事务响应时间计算方式 这里的响应时间不包含客户端GUI时间(例如浏览器解释页面所消耗的时间). 前面说响应时间是用户请求发出和服务器返回之间的时间差,那么得到这个时间就够了吗? 例如:现在有一场跑步比赛.当比赛完成后,

LoadRunner通过验证参数判断事物的成功与失败

if(atoi(lr_eval_string("{Param_DiscountID}")) > 0){ //lr_message("多机多酒:%s",lr_eval_string("{Param_DiscountID}")); lr_end_transaction("多机多酒", LR_PASS); } else{ lr_end_transaction("多机多酒", LR_FAIL); } 如果在c

LoadRunner性能测试添加事物

1.  在需要定义事务的操作前面,通过菜单或者工具栏插入. 2.  出现以下对话框: 3.  输入该事务的名称.注意:事务的名称最好要有意义,能够清楚的说明该事务完成的动作.插入事务的开始点后,下面需要在需要定义事务的操作后面插入事务的"结束点".同样可以通过菜单或者工具栏插入. 4.  出现以下对话框: 5.  5 默认情况下,事务的名称列出最近的一个事务名称.一般情况下,事务名称不用修改.事务的状态默认情况下是LR_AUTO.一般情况下,我们也不需要修改,除非在手工编写代码时,有可

loadrunner简单小知识

1 参数篇 在使用loadrunner时,参数化是必须的,我们设置完之后,对于这些数据是怎么取的是否清楚,下面我们将简单介绍一下 说明:1.有10个用户,从wxg1,wxg2,wxg3,wxg4,wxg5,wxg6,wxg7,wxg8,wxg9,wxg10,运行10次 2.wxg1,wxg2--wxg10,之间省略 wxg3--wxg9;wxg1,wxg1--wxg1,之间省略wxg1 2 线程与进程的区别 设置一个用户迭代1次时,会有一个mmdrv.exe进程,当一个用户迭代10次时,用线程.

LoadRunner测试50人同时登陆下单

LoadRunner测试50人同时登陆下单 一.LoadRunner简介 LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试.企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期. LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能. 二.名词解释 1.集合 集合点的意思时等到特定的用户数后再一起执行某

性能测试工Loadrunner使用经验总结

1. 引言 1.1. 简介 loadrunner是一种预测系统行为和性能的负载测试工具,它可以轻松创建虚拟用户.创建真实的负载.定位性能问题.重复测试保证系统的高性能 1.2. 组成 1.1.1. Vuser Generator c语言脚本开发的 1.1.2. Controller 指挥官的作用,控制执行场景 1.1.3. Analysis 收集测试数据,进行结果分析的 1.3. 文档说明 本博客是结合我所在公司性能测试过程中使用loadrunner工具,总结出的经验文档,包括了安装.编写脚本.

loadrunner中并发数与迭代的区别

你的理解的虚拟用户应该是 迭代次数 ,录制脚本时只会有1个虚拟用户,1个虚拟用户可以有多次 迭代,也就是 重复执行 Action里面的内容,在场景设置的时候,如果你说的10时在runtime-setting的Run Logic里面设置的,那就是1个虚拟用户 迭代 10次,并且要求你设置的场景Duration的类型为Run until Completion 时,这个设置才会起作用,如果Duration的类型是Run for <时间>, 这个意思就是1个用户在这段时间内不停执行Action里面的操