移动性能测试 testerhome 性能测试 (直播贴)

心向东 · 2016年02月18日 · 最后由 百度MTC 回复于 2016年05月12日 · 2148 次阅读

昨天恒温说让做一下 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 了,该睡觉了,明天继续吧

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 12 条回复 时间 点赞

刚注册就赶上直播啊 火速围观

前排围观

不错,很好的一篇通俗易懂的文章!

那些不能访问的帖子估计是 testerhome 上的首个 id 发的大量的文章. 那个 id 是我的. 后来我把那个 id 删除了. 是从数据库里面直接删除的, ruby-china 的代码在遇到帖子的作者 id 不存在的时候会报一个错误.

#5 楼 @seveniruby 我把第一个 id 改成我的啦~

#6 楼 @lihuazhang 改成一个无关的 id 吧. 那个 id 发的帖子太多. 会影响算分的.

#7 楼 @seveniruby 没关系。不会影响积分。。

因为发的是接口数据. 没有走 js 解析. 所以 google analyse 的结果不受影响. 数据不变. 所以统计的流量没有什么异常.

东哥威武。。

学习了

4楼 已删除

#8 楼 @lihuazhang 恩. 从 13 年 10 月才算是 testerhome 的新生.

13楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册