事务Transaction

上一篇 / 下一篇  2010-05-22 22:09:08 / 个人分类:LoadRunner

LoadRunner来说事务是非常非常重要的概念,具体如下所述:
1、事务是LoadRunner度量系统性能指标的唯一手段;
2、事务能够用于度量高风险业务流程的性能指标;
3、事务能够度量在一组操作中每一步的性能指标;
4、通过事务计时实现了不同压力负载下的性能指标对比;
5、通过事务计时可以帮助定位性能瓶颈;
性能测试的 角度出发,我们需要知道不同的操作所花费的时间,这样我们就可以衡量不同的操作对被测系统所造成的影响。

在脚本中插入事务的方法:
方法一:脚本生成后,手动插入事务;
注:事务命名必须具有实际意义,最好能表征步骤的业务含义,如login命名为"登陆",withdraw命名为"取款"等等。
方法二:在脚本录制过程中插入Start Transaction和End Transaction(推荐这种方法)
方法三:通过Run-time Settings中的Automatic Transactions自动生成事务
注:该种方法插入的事务仅能在LoadRunner Controller中的图表和报告中看到在脚本的log中看不到。

事务函数:
lr_start_transaction 为性能分析标记事务的开始
lr_end_transaction 为性能分析标记事务的结束
lr_start_sub_transaction 标记子事务的开始
lr_end_sub_transaction 标记子事务的结束以便进行性能分析
lr_start_transaction_instance 启动嵌套事务(由它的父事务的句柄指定)
lr_end_transaction_instance 标记事务实例的结束以便进行性能分析
lr_get_transaction_duration 获取事务的持续时间(按事务的名称)
lr_get_trans_instance_duration 获取事务实例的持续时间(由它的句柄指定)
lr_get_transaction_think_time 获取事务的思考时间(按事务的名称)
lr_fail_trans_with_error 将打开事务的状态设置为 LR_FAIL 并发送错误消息
lr_get_trans_instance_wasted_time 获取事务实例浪费的时间(由它的句柄指定)
lr_get_transaction_wasted_time 获取事务浪费的时间(按事务的名称)
lr_resume_transaction 继续收集事务数据以便进行性能分析
lr_resume_transaction_instance 继续收集事务实例数据以便进行性能分析
lr_set_transaction_instance_status 设置事务实例的状态
lr_set_transaction_status 设置打开事务的状态
lr_set_transaction_status_by_name 设置事务的状态
lr_stop_transaction 停止事务数据的收集
lr_stop_transaction_instance 停止事务实例

例子:
Action()
{
    long parent_trans_handle;
    long child1_handle;
    long child2_handle;
    double trans_time;
    int rc;
 //lr_start_transaction_instance(const char *transaction_name,long handle);
 //This function returns a unique long number which identifies the specific transaction instance. On error, a negative number is returned.
    parent_trans_handle =lr_start_transaction_instance("ParentTransaction",0);
    lr_output_message ("Parent transaction instance handle is %ld.", parent_trans_handle);
    web_url("web_url",
              "URL=http://www.51testing.com",LAST);
 //lr_get_trans_instance_status(long transaction_handle);
    rc = lr_get_trans_instance_status(parent_trans_handle);
    lr_output_message("Parent Transaction status is %d.", rc);
    if (rc == LR_FAIL) {
 //lr_end_transaction_instance(long parent_handle,int status);
     lr_end_transaction_instance(parent_trans_handle, LR_FAIL);
     return;
    }
//lr_start_transaction_instance(const char *transaction_name,long handle);
    child1_handle =lr_start_transaction_instance("ChildTransInstance", parent_trans_handle);
    lr_output_message("First child transaction instance handle is %ld.",child1_handle);
http://www.51testing.com/?114582/
    web_url("web_url",
        "URL=http://www.51testing.com/html/blog.html",LAST);
//lr_get_trans_instance_duration(long trans_handle);
    trans_time = lr_get_trans_instance_duration(child1_handle);
    lr_output_message("First child instance time is %lf seconds.",trans_time);
//get_trans_instance_think_time(long trans_handle);
    trans_time =lr_get_trans_instance_think_time(child1_handle);
    lr_output_message ("First child instance think time is %lf seconds.",trans_time);
 //get_trans_instance_wasted_time(long trans_handle);
 trans_time = lr_get_trans_instance_wasted_time (child1_handle);
    lr_output_message("irst child instance waste time is %lf seconds.", trans_time);

// tart_transaction_instance(const char *transaction_name,long handle);
  child2_handle = lr_start_transaction_instance("ChildTransInstance",parent_trans_handle);
  lr_output_message("Second child instance handle is %ld.", child2_handle);

      web_url("web_url",
        "URL=http://www.51testing.com/?114582/",LAST);
//lr_get_trans_instance_duration(long trans_handle);
    trans_time =lr_get_trans_instance_duration(child2_handle);
    lr_output_message("Second child instance duration is %lf seconds.",trans_time );
    lr_end_transaction_instance(child2_handle, LR_PASS);
    lr_end_transaction_instance(child1_handle, LR_PASS);
   trans_time =lr_get_trans_instance_duration(parent_trans_handle);
    lr_output_message ("Parent Transaction duration is %lf seconds.",trans_time );
    lr_end_transaction_instance(parent_trans_handle, LR_PASS);

    return 0;

}


TAG:

 

评分:0

我来说两句

Open Toolbar