事务(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;
}