美文网首页
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