LR 自定义脚本

/ 测试开发 / 0 条评论 / 60浏览
下面给楼主2个例子,参考以下,然后主要压测的时候需要开发提供相关接口文档,或者自己录制。
左侧的Name都是开发提供的接口参数名称,Value是相应的参数值。Action为开发给的测试地址。
PS:注意在测试的时候设置Controller的Run time seting  Pacing的值为With a fixed delay of X seconds。还要注意在压测的时候观察服务器的CPU利用率已经内存使用情况。
        web_submit_data("insert",
                "Action= http://116.211.23.121/app/Jigsaw/GetResult.ashx",
                "Method=GET",
                "Referer= http://116.211.23.121/home.aspx",
                                 "Mode=HTML",
                ITEMDATA,
                "Name=uid","Value={myUid}",ENDITEM,
                "Name=id","Value=4",ENDITEM,
                "Name=time","Value=00:00:{ss}",ENDITEM,
                "Name=piecewn","Value={myPiecewn}",ENDITEM,
                "Name=piecehn","Value={myPiecehn}",ENDITEM,
                LAST);

char str[1000];
strcpy(str,"SNSID=7999&UserID=1&CommentsTypeID=1&CommentsID=1&AuthorID=1&CommentsContent=1");
web_custom_request("Publish",
     "Url= http://10.240.248.103:7006/Comment/{IID}",
     "Method=POST",
     "Referer= http://10.240.248.103:7006/Comment/{IID}",
     "Mode=HTTP",
     str,
    LAST);
使用 Grafana、collectd 和 InfluxDB 打造现代监控系统
http://www.linuxidc.com/Linux/2015-04/116123.htm
几种测试脚本编写socket  / http
http://ajita.iteye.com/blog/1728243/
这也是一种写法,可以跟web_submit_data互换。这种写法更利于拼接参数。
======================完整实例==============================
Action()
{
     web_reg_find("Search=Body", //定义查找范围
                    "SaveCount=result", //定义查找计数变量名称
                    "Text=领取成功", //定义查找内容
                    LAST);

          //发送请求
        web_submit_data("GetActivativeCode",
                "Action= http://192.168.101.181:8931/project/libao/bf.asp",
                "Method=POST",
                "Referer= http://192.168.101.181:8931/project/libao/bf.asp",
                    "Mode=HTML",
                ITEMDATA,
                    "Name=Jcode","Value=4",ENDITEM,
                    "Name=Account","Value=zhzh1986",ENDITEM,
                LAST);

        if (atoi(lr_eval_string("{result}")) > 0) //判断如果Welcome字符串出现次数大于0
               lr_output_message("Log on successful."); //在日志中输出Log on successful
          else
            //如果出现次数小于等于
               lr_error_message("Log on failed"); //在日志中输出Log on failed
        return 0;
}

解决中文问题
     char tmp[50];
     lr_convert_string_encoding("深圳市一康智科技有限公司", LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "str");
     strcpy(tmp, lr_eval_string("{str}"));
     lr_save_string(tmp,"sorvalue");

     lr_start_transaction("get");
 
     web_reg_find("Search=Body",//这里说明在Body的范围内查找 
                    "SaveCount=ret_Count",//这里表示把返回值的个数放在变量ret_Count里 
                    "Text={sorvalue}",//这里表示查找的内容是"mobile" 
                    LAST);
ContiPerf  - http://iamzhongyong.iteye.com/blog/1757180
ab  - apache server  - http://archive.apache.org/dist/httpd/
ab -n 600 -c 50  http://10.18.121.56:8080/index.php?r=request/get //-t

linux perf监控
因为单用户数的40qps和20并发用户数下的40qps是两个不同的概。
前者说明该应用可以在一秒内串行执行40个请求,
而后者说明在并发20个请求的情况下,一秒内该应用能处理40个请求
qps(tps):每秒钟request/事务 数量
并发数: 系统同时处理的request/事务数
响应时间:  一般取平均响应时间
qps(tps)= 并发数/平均响应时间 
  • Time per Request:用户平均等待时间
  • Time per Request (across all concurrent request): 服务器平均请求处理时间
"每秒点击次数",即使运行场景过程中虚拟用户每秒向Web服务器提交的HTTP请求数。通过它可以评估虚拟用户产生的负载量,如将其和"平均事务响应时间"图比较,可以查看点击次数对事务性能产生的影响。通过对查看"每秒点击次数",可以判断系统是否稳定。系统点击率下降通常表明服务器的响应速度在变慢,需进一步分析,发现系统瓶颈所在
 "吞吐率 Throughput "图,是每秒服务器处理的HTTP申请数
指标:
1.  例如在半个小时内,使用系统的用户数为10000,那么取10%作为并发用户数基本就够了 
2. 假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1;如果某笔业务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就是1000了
3.  另外咨询很多专家做过的性能测试项目,基本都没有超过5000用户并发
4.  系统的最大TPS是一定的(在一个范围内),但并发用户数不一定,可以调整
 建议性能测试的时候,不要设置过长的思考时间,以最坏的情况下对服务器施压
无论有无思考时间(T_think),测试所得的TPS值和并发虚拟用户数   (U_concurrent)、Loadrunner读取的交易响应时间(T_response)之间有以下关    系(稳定运行情况下):TPS=U_concurrent / (T_response+T_think)。
 在内网,由于你可以轻易获得极大的带宽,更容易看到极限下服务器的表现,发现整个系统中潜在的瓶颈
迭代(Iteration):是在场景执行时某个虚拟用户执行完一次后,再在一次执行,叫迭代
lr_think_time:是虚拟用户在执行脚本是,停留在那不执行的等待时间,比如说登陆系统后等一段时间后在进行操作
http://www.testwo.com/blog/4935DURATION参数是优先于ITERATION的

LR集合点(要求促销或者)
http://blog.sina.com.cn/s/blog_4a8d7b4901000bnb.html

log文件:
我们要在Vuser->runtime settings->log中设置,勾选always send messages,这样我们才能写出Log,在我们的脚本所在的文件夹中,有两个文件很重要,mdrv.log.txt和output.txt文 件,lr_log_message只会把信息输到mdrv.log文件中,而lr_output_message则会写进以上两个文件.

    28.LR中如何忽略Socket接收数据的验证

在LR中对Socket进行性能测试时,LR会自己判断lrs_receive回来的数据的长度,而如果长度不符的话会有时间延迟的情况(这是性能测试完全不能接受的事情),如果做到这一点呢,经过反复尝试,发现一种简单的方法(用*代替具体的长度):
类似于将:
recv buf1 12
"Hello, Denny"
改为:
recv buf1 *
"Hello, Denny"
===================================== recv buf1 -1
LR Script目录:
C:\Program Files (x86)\HP\LoadRunner\scripts\Tutorial
data.ws文件怎么建立
data.ws参数化:
http://lovesoo.org/how-to-use-loadrunner-to-write-socket-protocol-script.html

LR 定义方法  Md5- uuid
http://www.365testing.com/bbs/thread-41172-1-1.html
http://blog.163.com/jack_test/blog/static/166620663201061392531173/

webservice 结果比较
http://blog.csdn.net/he_jian1/article/details/41802033
json http
http://www.51testing.com/html/91/559891-849444.html
lr_think_time(3); //单位是秒
服务器资源监控
http://www.51testing.com/html/33/564333-850623.html
LoadRunner java http://www.51testing.com/html/04/446304-250061.html
压力测试注意事项:http://my.oschina.net/feichexia/blog/477523
=============================================================
 【峰值QPS和机器计算公式】
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器

问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)

问:如果一台机器的QPS是58,需要几台机器来支持?
答:139 / 58 = 3
============================================================