扫码关注本人公众号
image.png性能测试环境
操作系统:Windows
Web服务器软件:Apache
运行环境:PHP
Web应用:phpwind
数据库:MySQL
phpwind的访问地址如下:
http://192.168.0.153:8090/phpwind/index.php
性能测试方案
使用20个线程同时发帖,持续时间5分钟,测试下服务器的平均响应时间是多少?成功多少?失败多少?
1)录制发帖的LR脚本
2)修改LR脚本(添加addcookie,添加集合点,添加事务,文本检查,参数化)
3)调试LR脚本(确保回放成功)
4)创建并设计性能测试的场景
5)运行性能测试
6)测试报告
发帖的LR脚本的设计思路
1)非登录状态下,用户(游客)是没有权限发帖的。服务器返回的登录验证码(动态)是图片,不是文本,无法使用LR的关联技术进行关联。可以使用cookie绕过登录,欺骗服务器,让服务器认为用户已经登录进来,然后发帖。
image.png2)先缓存cookie数据(目的:后面发请求时,会自动发送这些cookie数据,服务器就会认为用户已经登录)
web_add_cookie("Bzi_winduser=msL4udGA%2BPNSm7bGPAdLhpDKMwseQABD2Z6iMxwPN%2FrtT65uQOO6cw%3D%3D;DOMAIN=192.168.0.153");
…
3)使用web_submit_data函数发送数据给服务器(发送请求)(模拟发帖)
4)帖子的内容不能重复,否则会被phpwind网站屏蔽,可以使用随机生成的字符串作为帖子的内容。
image.png
设计性能测试的LR脚本
LR脚本的代码如下:
Action()
{
int rand_num,i;//声明两个int类型的变量(c语言的变量)
char i_title[24]="";//声明随机字符序列(字符串):i_title
char i_content[128]="";//声明随机字符序列(字符串):i_content
//声明字符序列(字符串):StrTable
char StrTable[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (i=0;i<=9;i++){
rand_num=rand()%62;//生成一个0到61之间的随机整数
//从字符序列中下标为rand_num的位置取1个字符,并追加到i_name
strncat(i_title,StrTable+rand_num,1);
}
for (i=0;i<=99;i++){
rand_num=rand()%62;//生成一个0到61之间的随机整数
//从字符序列中下标为rand_num的位置取1个字符,并追加到i_name
strncat(i_content,StrTable+rand_num,1);
}
//将随机字符串的内容保存到LR变量i_title_value里面
lr_save_string(i_title,"i_title_value");
//将随机字符串的内容保存到LR变量i_content_value里面
lr_save_string(i_content,"i_content_value");
//打印随机字符串
lr_log_message("i_title== %s", i_title);
//将LR变量{i_name_value}的内容转成字符串,并打印
lr_log_message("i_title_value== %s", lr_eval_string("{i_title_value}"));
web_add_cookie("Bzi_lastvisit=1676%091531844535%09%2Fphpwind%2Fread.php%3Ftid%3D1%26fid%3D2; DOMAIN=192.168.0.153");
web_add_cookie("Bzi_Pw_verify_code=8a7b3ece77c27041dc9a5db50ee43f40; DOMAIN=192.168.0.153");
web_add_cookie("Bzi_visitor=EJF0Nj8fvoWsjWvbZOL7y6qsaJvkVlPRQwo8ny2uykZDOJxCI1whqt1BLxLE2LzfH7kNmQ6jT%2FdHGoc3MUhNeERdZYCTYsf6J%2FfNrk1B%2FkY%3D; DOMAIN=192.168.0.153");
web_add_cookie("csrf_token=e4233250ddbbd331; DOMAIN=192.168.0.153");
web_add_cookie("PHPSESSID=eaqejk6kcaqj3mtklv5pnv64b1; DOMAIN=192.168.0.153");
web_add_cookie("Bzi_winduser=hcUEN%2B3i2IZqpSSFne3zHlq7fDwr%2FEPnZWxN76AatVoIJ9dbCK0LFA%3D%3D; DOMAIN=192.168.0.153");
web_url("index.php_4",
"URL=http://192.168.0.153:8090/phpwind/index.php",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t6.inf",
"Mode=HTML",
EXTRARES,
"Url=themes/site/default/images/common/style_bg.png", "Referer=http://192.168.0.153:8090/phpwind/", ENDITEM,
"Url=themes/site/default/images/message/msg.wav", "Referer=", ENDITEM,
"Url=res/images/medal/icon/yuanchuangxieshou.gif", "Referer=http://192.168.0.153:8090/phpwind/", ENDITEM,
"Url=themes/site/default/images/common/core_icon.png", "Referer=http://192.168.0.153:8090/phpwind/", ENDITEM,
"Url=res/js/dev/pages/common/sidebarMain.js?v=20161021", "Referer=http://192.168.0.153:8090/phpwind/", ENDITEM,
"Url=res/js/dev/util_libs/lazySlide.js?v=20161021", "Referer=http://192.168.0.153:8090/phpwind/", ENDITEM,
"Url=res/images/face/face_middle.jpg", "Referer=http://192.168.0.153:8090/phpwind/", ENDITEM,
LAST);
lr_start_transaction("发帖");
lr_rendezvous("同时发送");
web_submit_data("index.php_7",
"Action=http://192.168.0.153:8090/phpwind/index.php?c=post&a=doadd&_json=1&fid=2",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/html",
"Referer=http://192.168.0.153:8090/phpwind/index.php?c=post&fid=2",
"Snapshot=t12.inf",
"Mode=HTML",
ITEMDATA,
"Name=atc_title", "Value={i_title_value}", ENDITEM,
"Name=atc_content", "Value={i_content_value}", ENDITEM,
"Name=pid", "Value=", ENDITEM,
"Name=tid", "Value=", ENDITEM,
"Name=special", "Value=default", ENDITEM,
"Name=reply_notice", "Value=1", ENDITEM,
"Name=csrf_token", "Value=e4233250ddbbd331", ENDITEM,
LAST);
web_find("web_find",
"What=\"state\":\"success\"",
LAST);
lr_end_transaction("发帖", LR_AUTO);
return 0;
}
回放脚本
服务器认为用户是登录状态,所以返回的是一个登录状态对应的页面。
image.png
设计性能测试场景
image.png运行测试
失败的事务数比较多,原因是帖子的内容重复了,被系统拦截。感觉是LoadRunner工具的bug,按道理内容不应该重复。
image.png
测试报告
发帖事务的平均响应时间:1.67 s
发帖成功数:768
发帖失败数:2098
LoadRunner工具的Bug导致帖子的内容重复,从而被系统拦截。发帖失败的原因是帖子内容重复了。
另外,并发的情况下,系统并没有彻底地进行拦截,我们发现系统里面存在内容重复的帖子,由此可见,该问题是phpwind网站的一个Bug.
image.png
用户的等级已经是风云使者
image.png
查看帖子的内容
image.png
网友评论