zoukankan      html  css  js  c++  java
  • web test LoadRunner web_reg_save_param / guanlian / server param response

    loadrunner 记录抓取服务器返回的关联数值并保存在log.txt

    //192.168.157.77

    文件:D:\TestCase\20121010_archive_manager\pspre.cn******.com\tc_dangan_shenqin_add_data20121102\action.c

    内容:

    Action()
    {
        char *pr;
        char *filename= "d://log.txt";
        long file;
        char *p;
    // 其他脚本代码 、、、
        web_reg_save_param("MyBusinessCodeList",
            "LB='businessCode' value ='",
            "RB='",
            "Ord=1",
            "NotFound=ERROR",
            "Search=All",
            LAST);
    // 其他脚本代码 、、、
        if ((file = fopen(filename, "at")) == NULL )
        {
            lr_error_message("Cannot open %s", filename);
            return -1;
        }
        //p = lr_eval_string("{MyBusinessCodeList}"); //打印单列参数化数据log
        p = lr_eval_string("{MyBusinessCodeList},{MyBusinessCodeList}"); //打印多列参数化等数据
        while ((*p != NULL) && fputc(*(p++), file) != -1); 
        fputc('\n',file);
        fclose(file);
        return 0;
    }

     

     

    http://hi.baidu.com/sherry19900326/item/e3df4533061d151b9dc65e7c

    Loadrunner关联(三)手动关联

    Loadrunner(三)手动关联

    手动关联的过程大致如下:

    第一步:录制测试 脚本,录制二遍

    第二步:使用WinDiff工具找出两次脚本的不同,判断是否需要进行关联

    第三步:确定插入关联的位置
    第四步:在VIEW TREE中使用web_reg_save_param函数手动建立关联
    第五步:将脚本中有用到关联的数据,用参数代替

    第六步:验证关联的正确性

     

    下面详细介绍:

    第一步:

    录制测试脚本,录制二遍

    这一步就不用多说了,相同的操作,录制两份,分别保存

    第二步:

    使用WinDiff工具协助找出需要关联的数据
    1.在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。
    2. 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文 字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。

    查看二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。

    注意:lr_thik_time部分的差异可以忽略

    找到不同的部分后,复制,然后打开Recording Log或是Generation Log,按Ctrl+F,在查找窗口中粘贴差异部分的内容,点击查找找到后,查看该部分的信息,确认是客户端的请求信息还是服务器回应的信息

    如果出现在$$$$$$ Request Header For Transaction With Id 3 Ended $$$$$$这个部分,那证明是客户端发出的请求,这里是不需要做关联的

    一般做的关联都是出现在****** Response Header For Transaction With Id 7 ******和****** Response Body For Transaction With Id 7 ******中的部分。

    在找到这个信息后,需要记录如下信息:

    a.记录这个不同数据之前的内容和之后的内容

    b.记录这个不同数据出现的位置,是Header还是Body

     

    第三步:

    确认插入关联的位置

    我们在日志 中找到了两次脚本的不同点的位置,根据这个位置,我们再确定是在哪个请求之后产生的,也就是说要定位发生不同点的response是由哪个request产生的,找到了这个请求的函数位置,我们就知道要往哪里做关联了

    一般情况下关联函数写到发出请求的函数之前就可以了

     

    第四步:

    插入关联函数

    在插入关联函数前,我们先介绍关联函数web_reg_save_param

     一个web_reg_save_param函数的例子:

    web_reg_save_param ("sessionid",

         "LB=Session_id:",

         "RB=;",

         "Search=Body",

         LAST);

    在这里我们只介绍几个常用参数的含义

    语法:int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

    参数说明:

    ParamName:存放得到的动态内容的参数名称

    list of Attributes:其它 属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写

    LB( Left Boundary ) :返回信息的左边界字串。该属性必须有,并且区分大小写。

    RB( Right Boundary ):返回信息的右边界字串。该属性必须有,并且区分大小写。

    Search :返回信息的查找范围。可以是Headers,Body,Noresource,All(缺省)。该属性质可有可无。

     

    那么如何插入该关联函数呢?

    1.将vugun切换到view tree模式下

    2.在左边的列表中,找到在上一步发出请求的函数,点击“右键”

    选择“insert before”

    3.在弹出的“add step”对话框的“find function”中输入“web_reg_save_param”,点击“ok”

    在“parameter name”中输入,关联函数的名称,这里最好有含义,“sessionid”

    在“left boundary”中输入,刚才记录下的不同点字符串的左面的几个字符,定义左边界,Session_id:

    在“right boundary”中输入,刚才记录下的不同点字符串的右面的几个字符,定义右边界,;

    在“search in”中,选择“body”

    点击“ok”

    4.回到脚本编辑模式下,查看该函数插入是否正确

    在发出请求的函数前应该看到:

    web_reg_save_param ("sessionid",

         "LB=Session_id:",

         "RB=;",

         "Search=Body",

         LAST);

     

    第五步:

    将脚本中有用到关联的数据,用参数代替

     

    如发出请求的参数如下,那么将原来服务器返回的动态值使用{ sessionid }来替换:

     web_submit_form("login.php_2",

         "Snapshot=t2.inf",

         ITEMDATA,

         "Name=login", "Value=wangjin", ENDITEM,

         "Name=password", "Value=wangjin", ENDITEM,

           "Name=Session_id","Value={ sessionid }", ENDITEM,

         "Name=Submit", "Value=Login", ENDITEM,

         EXTRARES,

         "URL=/media/images/border_bg_l.gif", ENDITEM,

         "URL=/media/images/header_bg.gif", ENDITEM,

         "URL=/media/images/th.gif", ENDITEM,

         LAST);

     

    第六步:

    验证关联的正确性

    回放脚本,验证关联的正确性

     

    loadrunner 关联函数的高级应用

    http://xitong.iteye.com/blog/1822319

    Action()

    {

    long file;

    char *filename="F:\\android\\data.txt";

    int cnt=1;

    int i=1;

    if((file=fopen(filename,"wb"))==NULL)

    {

    lr_output_message("打开文件失败");

    return 0;

    }

    web_reg_save_param("searchid",

    "LB=\"",

    "RB=\",",

    "Ord=All",

    "NotFound=ERROR",

    "Search=Body",

    "Convert=HTML_TO_URL",//将数据由HTML-encode数据转成URL-encode

    LAST);

     

    web_url("百度",

    "URL=http://suggestion.baidu.com/su?wd=load&p=3&cb=window.bdsug.sug&t=1295341253328",

    "Resource=1",

    "RecContentType=baiduapp/json",

    "Referer=http://www.baidu.com/",

    "Snapshot=t10.inf",

    LAST);

     

    for(i=1;i<=lr_paramarr_len("searchid");i++)//lr_paramarr_len("searchid")=atoi(lr_eval_string(searchid_count))

    {

    lr_save_string(lr_paramarr_idx("searchid",i),"userid");

     

    lr_output_message("%s",lr_eval_string("{userid}"));

     

    fwrite(lr_eval_string("{userid}"),strlen(lr_eval_string("{userid}")),1,file);

     

    fwrite( "\r\n",2,1,file );

     

    }

     

    lr_save_string(lr_paramarr_random("searchid"),"temp");

     

    lr_output_message("随即取的值是:%s",lr_eval_string("{temp}"));

    return 0;

    }

     

    end

  • 相关阅读:
    发布NBearV3最终测试版v3.2.5
    NBearV3教程——Web篇
    JUnit中的设计模式:命令模式
    HTTP协议 通信过程介绍
    JUnit中的设计模式:适配器模式
    《Head First设计模式》 读书笔记15 其余的模式(一) 桥接 生成器 责任链
    SQL基础:数据库规范化与三范式
    《Head First设计模式》 读书笔记13 复合模式 MVC模式
    Android Tab标签的使用基础
    Android设备上的传感器模拟工具:SensorSimulator
  • 原文地址:https://www.cnblogs.com/lindows/p/14390253.html
Copyright © 2011-2022 走看看