美文网首页
LoadRunner工具性能测试实战

LoadRunner工具性能测试实战

作者: 测试老杨 | 来源:发表于2018-07-23 13:24 被阅读166次

扫码关注本人公众号

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.png

2)先缓存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

相关文章

网友评论

      本文标题:LoadRunner工具性能测试实战

      本文链接:https://www.haomeiwen.com/subject/wuzdmftx.html