昨天恒温说让做一下 testerhome 的性能测试,那么我们就开始吧

首先在做脚本之前我们先拟定一下用户的行为模型 (随便定的不要较真):

业务 比例
用户访问首页 30%
用户查看某个帖子 30%
用户查看发帖人信息 30%
用户搜索帖子 10%

有了用户模型那么我们就开始做脚本吧,我这里用 loadrunner 做脚本:


Action()
{
    lr_start_transaction("首页");
    web_reg_find("Search=Body",
        "Text=/account/sign_in",
        LAST);
    web_url("testerhome",
    "URL=https://testerhome.com/",
    "Referer=https://testerhome.com/",
    "Snapshot=t1.inf",
    "Mode=HTML",
    LAST );
    lr_end_transaction("首页", LR_AUTO);
    lr_start_transaction("查看帖子");
    web_reg_save_param("author",
        "LB=<a href=\"/",
        "RB=\"><img class=\"media-object avatar-48\"",
        "Search=Body",
        LAST);
    web_url("testerhome",
        "URL=https://testerhome.com/topics/{topic}",
        "Resource=0",
        "Referer=https://testerhome.com/",
        "Snapshot=t2.inf",
        "Mode=HTML",
        LAST);
    lr_end_transaction("查看帖子", LR_AUTO);
    lr_start_transaction("查看作者");
    web_reg_find("Search=Body",
        "Text=class=\"counter\"",
        LAST);
    web_url("author",
        "URL=https://testerhome.com/{author}",
        "Resource=0",
        "Referer=https://testerhome.com/topics/{topic}",
        "Snapshot=t3.inf",
        "Mode=HTML",
        LAST);
    lr_end_transaction("查看作者", LR_AUTO);
    lr_start_transaction("搜索");
    web_reg_find("Search=Body",
        "Text=class=\"panel-heading clearfix\"",
        LAST);
    web_url("testerhome",
        "URL=https://testerhome.com/search?q={search}",
        "Resource=0",
        "Referer=",
        "Snapshot=t4.inf",
        "Mode=HTML",
        LAST);
    lr_end_transaction("搜索", LR_AUTO);
    return 0;
}

写好后立马跑了一下发现怎么报错了

原来是有些帖子 因为历史原因 不能查看.好吧那么我就处理下我的数据
怎么处理呢?
一开始我打算写个脚本来一点点筛选可用的 topic 数据的,但是跑的好慢啊,最后决定还是用 controller 跑数据吧.

脚本

PS:在调用函数后面添加 lr_output_message 是为了筛选出可用的 topic 数据,不然测试结果中一堆 404 500 很难确认问题.

Action()
{
    web_url("testerhome",
        "URL=https://testerhome.com/topics/{topic}",
        "Resource=0",
        "Referer=https://testerhome.com/",
        "Snapshot=t2.inf",
        "Mode=HTML",
        LAST);
lr_output_message( "#%s", lr_eval_string( "{topic}" ) ); 
    return 0;
}

脚本数据设置 (unique 每个用户分配 100 条数据,准备跑 40 个用户,这样就能很快的筛选出前 4000 个主题中可用的 topic 了):

然后我们设置 controller:

runtime-setting(有些设置是为了能跑的更快):



OK 准备工作 OK 了,我们就开始跑吧.
过了 3 分多钟结果就出来了,好多 404 和 500,管理员到底删了多少帖子啊😰


我们要的数据也从 controller 中导出来了:

稍作处理数据就可以用了:

哦,顺便说下搜索 我差不多做了 20 个左右的常用关键词

顺便在准备数据的时候还有个插曲,testerhome 竟然挂了😰,应该不是我弄挂的吧.....

看了下时间已经 0:08 了,该睡觉了,明天继续吧


↙↙↙阅读原文可查看相关链接,并与作者交流