首先在做脚本之前我们先拟定一下用户的行为模型 (随便定的不要较真):
业务 | 比例 |
---|---|
用户访问首页 | 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 竟然挂了,应该不是我弄挂的吧.....