此刻开始,这里成为了我的心情日记。技术性的话题会慢慢变少.......我想跳出技术圈........

发布新日志

  • Fight中航班(动态数据)的获取-借助数组

    2007-10-25 11:26:41

    //目的:参数化如下图中的值

    //运行结果:

    //Action.c(97): 错误 -27979: 找不到请求的表单    [MsgId: MERR-27979]

    //Action.c(97): web_submit_form("reservations.pl_2") 最高严重级别为“ERROR”,0 个正文字节,0 个标头字节     [MsgId: MMSG-26388]

     

    //--------------------------------------------------------------------------------------------------

     

    Action()

    {

           //declare variables

       int i, ItemNumCount, RandNum;

       char* temp;

       char RandNumStr[20];

       char namestr[20];

     

    web_reg_save_param("ItemId", "LB=value=", "RB=>", "ORD=ALL", LAST);

     

           web_url("welcome.pl",

                  "URL=http://127.0.0.1:1080/mercuryWebTours/welcome.pl?page=search",

                  "Resource=0",

                  "RecContentType=text/html",

                  "Referer=http://127.0.0.1:1080/mercuryWebTours/nav.pl?page=menu&in=home",

                  "Snapshot=t3.inf",

                  "Mode=HTML",

                  LAST);

     

           lr_think_time(7);

     

           web_url("FormDateUpdate.class",

                  "URL=http://127.0.0.1:1080/mercuryWebTours/FormDateUpdate.class",

                  "Resource=0",

                  "RecContentType=text/html",

                  "Referer=",

                  "Mode=HTML",

                  LAST);

     

           web_url("CalSelect.class",

                  "URL=http://127.0.0.1:1080/mercuryWebTours/CalSelect.class",

                  "Resource=0",

                  "RecContentType=text/html",

                  "Referer=",

                  "Mode=HTML",

                  LAST);

     

           web_url("Calendar.class",

                  "URL=http://127.0.0.1:1080/mercuryWebTours/Calendar.class",

                  "Resource=0",

                  "RecContentType=text/html",

                  "Referer=",

                  "Mode=HTML",

                  LAST);

     

           lr_think_time(13);

     

           web_submit_data("reservations.pl",

                  "Action=http://127.0.0.1:1080/mercuryWebTours/reservations.pl",

                  "Method=POST",

                  "RecContentType=text/html",

                  "Referer=http://127.0.0.1:1080/mercuryWebTours/reservations.pl?page=welcome",

                  "Snapshot=t4.inf",

                  "Mode=HTML",

                  ITEMDATA,

                  "Name=advanceDiscount", "Value=0", ENDITEM,

                  "Name=depart", "Value=Denver", ENDITEM,

                  "Name=departDate", "Value=10/26/2007", ENDITEM,

                  "Name=arrive", "Value=London", ENDITEM,

                  "Name=returnDate", "Value=10/27/2007", ENDITEM,

                  "Name=numPassengers", "Value=2", ENDITEM,

                  "Name=seatPref", "Value=Window", ENDITEM,

                  "Name=seatType", "Value=Business", ENDITEM,

                  "Name=.cgifields", "Value=roundtrip", ENDITEM,

                  "Name=.cgifields", "Value=seatType", ENDITEM,

                  "Name=.cgifields", "Value=seatPref", ENDITEM,

                  "Name=findFlights.x", "Value=40", ENDITEM,

                  "Name=findFlights.y", "Value=11", ENDITEM,

                  LAST);

     

           lr_think_time(6);

     

        //get the count of ItemId_array

       ItemNumCount = atoi(lr_eval_string("{ItemId_count}"));

      

       for (i=1;i <=ItemNumCount;i++) {

       sprintf(namestr, "{namestr_%i}", i);}

      //save namestr to  String Tempnamestr

      lr_save_string(lr_eval_string(namestr), "Tempnamestr");

     

        //Generate a Random Number

      RandNum = 1 + rand() % ItemNumCount;

     

      //Save Random Number to String

      itoa (RandNum,RandNumStr,20);

     

      //Display Random Number in Log

      lr_output_message("Random Number Generated is :%s", lr_eval_string(RandNumStr));

     

      //Saves RandNumStr into random_value and then into temp

      lr_save_string(RandNumStr, "random_value");

      temp = lr_eval_string(lr_eval_string("{ItemNumArray_{random_value}}"));

      lr_save_string(temp, "RandItemNum");

     

       //Use RandNumStr variable in a web_submit_form step

           web_submit_form("reservations.pl_2",

                  "Snapshot=t5.inf",

                  ITEMDATA,

                  //"Name=outboundFlight", "Value=021;437;10/26/2007", ENDITEM,

                  "Name=outboundFlight", "Value={RandItemNum}", ENDITEM,

                  "Name=reserveFlights.x", "Value=22", ENDITEM,

                  "Name=reserveFlights.y", "Value=9", ENDITEM,

                  LAST);

     

           lr_think_time(52);

     

           web_submit_form("reservations.pl_3",

                  "Snapshot=t6.inf",

                  ITEMDATA,

                  "Name=firstName", "Value=L", ENDITEM,

                  "Name=lastName", "Value=LM", ENDITEM,

                  "Name=address1", "Value=Peking 99", ENDITEM,

                  "Name=address2", "Value=Peking/China/100000", ENDITEM,

                  "Name=pass1", "Value= L", ENDITEM,

                  "Name=pass2", "Value=C", ENDITEM,

                  "Name=creditCard", "Value=2245657889090-054320", ENDITEM,

                  "Name=expDate", "Value=06/10", ENDITEM,

                  "Name=saveCC", "Value=on", ENDITEM,

                  "Name=buyFlights.x", "Value=32", ENDITEM,

                  "Name=buyFlights.y", "Value=16", ENDITEM,

                  LAST);

     

           return 0;

    }

     

     

  • 2007年10月18日 LR参数之Unique Number参数类型

    2007-10-18 15:13:37

    今天上午就Unique Number的参数类型做了一个比较细致的关注。发现了几个问题。先看看我整理的一个表格:

    参数类型

    Unique Number

    更新值的时间

    Each iteration

    当超出值时

    Continue with last value

    Block size per vuser

    100

    参数名称

    启动(初始值)

    数值格式(Number format)

    P1

    20071017

    %01d

    P2

    20071001

    %02d

    P3

    20071000

    %02d

    场景12个虚拟用户 迭代1  运行结果:参数被替换2次值 向系统插入了2条记录

    记录1    P1=20071017

    P2=20071001

    P3=20071000

    记录2  P1=20071117

    P2=20071101

    P3=20071100

    场景22个虚拟用户 迭代2  运行结果:参数被替换2次值  插入4条记录

    迭代1

     

     

    记录1    P1=20071017

    P2=20071001

    P3=20071000

    记录2  P1=20071117

    P2=20071101

    P3=20071100

    迭代2

     

     

    记录1    P1=20071018

    P2=20071002

    P3=20071001

    记录2    P1=20071118

    P2=20071102

    P3=10071101

    注:记录中标有红色的数字是与初始值不同之处

    问题:

    1、在这个方案中,参数号码格式起作用了么?起了什么作用?

    2、参数被替换时是不是遵循一定的规律,如果是,是什么?不是以末位数自增的方式么?(实践证明不是)

    3、这个Block size per vuser的具体意义是什么?如果起始值是100,Block size per vuser设置为50,那么数据可选范围是100~149这个我能理解,可是比如我这个表格中,P1的启动值是20071017,设置的Block size per vuser是100,我个人的理解是:P1的取值应该在20071017~20071116.可是P1去能取得2007101118.难道我的理解是错误的。

     ============2007年10月23日=============

    这几天因为需要负责有个项目的验收,所以也没有能够及时看同仁们对我在论坛上的回复,很感激大家的积极发言。对参数的数据分配和更新时间等属性已经理解。但是对当超出值时: Continue with last value 这个,我感觉在上述的试验中仍没有起到作用,还是不明白原因

     

     

  • 2007年10月18日 回答原来参数化的问题

    2007-10-18 11:59:28

    首先感谢qiguojie的回复http://www.51testing.com/?6343/action_viewspace_itemid_64571.html

    ,对我就问题的重新理解帮助很大!

    其次,来解答几个之前理解有误的几个问题:

    1、实际插入到系统中的记录数与迭代的次数有关系。插入记录数与迭代次数相同。

    ---在参数被参数化的值对系统来说都说有效数据的情况下,插入到系统的记录数应该是虚拟用户数*迭代数。插入记录数与迭代次数不一定相等。

    注意:从日志中查询到的参数被替换的值,对于系统来说,未必都是合法的数据。这与你设计的参数属性有关。要注意这个有效性!

    2、从日志上看,参数被替换的参数为: 虚拟用户数*迭代次数。但是通过系统中插入的数据显示说明:在每次迭代过程中,所有的用户都提交相同的值(针对变量在脚本中只出现1次的情况)---不管设置为每次迭代还是每次出现。。。

    ----理解有误,当时没有检测被替换的参数值是否有效,只是关系了被替换的次数。

    3、虚拟用户采用什么方式选取日志中被替换的参数,目前偶还不清楚。恳请大侠们赐教!

    ---只要设置的参数属性和指定的参数数据范围服务系统的设计标准,那么日志中被替换的参数值都会被成功的写入到系统中。

    4、只要有失败的用户,就没有向系统插入数据

    ----进过重新执行验证,不是成功的用户也不插入,是参数化的某个字段值是从数据库中读取。在设置参数属性是忽略了数据的有效性,使得在被替换的参数值中,数据对于系统来说是不存在的。故无法插入到系统中

    5、实际插入到数据库中的记录和迭代次数有关系么?----同1的解答

    6、如果某个参数的更新值时间设置为每次迭代,那么是不是在同一次迭代中,不论设置多少个虚拟用户,都执行相同的参数值?---在参数数据足够的情况下,每个虚拟用户用的参数值都不相同。当然这与设计的参数属性也有关系。

    7、虚拟用户如何选择不同的参数值到实际的系统中呢?这个如何实现?---上面已经有解答。实属理解错误

  • 2007年10月15日 继续原来参数化的问题(疑问一之续二)

    2007-10-15 16:20:25

    首先,通过验证,得出以下结论:

    1、实际插入到系统中的记录数与迭代的次数有关系。插入记录数与迭代次数相同。

    2、从日志上看,参数被替换的菜蔬为: 虚拟用户数*迭代次数。但是通过系统中插入的数据显示说明:在每次迭代过程中,所有的用户都提交相同的值(针对变量在脚本中只出现1次的情况)---不管设置为每次迭代还是每次出现。。。

    3、虚拟用户采用什么方式选取日志中被替换的参数,目前偶还不清楚。恳请大侠们赐教!

    其次,描述一下这次过程的又增加的一些疑问:

    1、设置文件类型参数的属性 如下

     

    补充:参数化对象为向系统录入数据的一个表单内容中的某些字段

    文件类型参数的属性

     

    Select column

    By number:1

    Select next row

    Unique

    Update value on

    Each iterarion

    When out of valies

    Continue with last value

    Allocate Vuser value in the Controller

    Automatically allocate block size

    备注

    该参数一共有6个可选值

     

    场景设置

     

    虚拟用户数/Action迭代次数

    运行结果

    10/1

    表中参数“invoiceNo”的记录数量不足,无法为 Vuser 提供唯一数据。有4个用户运行失败。系统中没有插入数据。日志中共有6个参数替换。

    3/3

    表中参数“invoiceNo”的记录数量不足,无法为 Vuser 提供唯一数据。1个用户运行失败。数据库中没有插入数据。日志中共有6次参数替换。

    2/3

    成功。向系统中插入了3条记录。日志中有参数替换总共6次的记录。

     

    问题:1、只要有失败的用户,就没有向系统插入数据 2、设置的File

    When out of valies

    Continue with last value

    没有起到作用?否则按理来说:当不再有唯一的数据时进行的操作:使用最后的值继续超出值的虚拟用户应该取最后一次的值继续执行并且能成功运行才对啊?

  • LoadRnner参数化之疑问二

    2007-10-12 16:20:46

    以下问题是最近关注和研究的

    问题1:下拉框如何实现参数化?特别是具有父子关联性的下拉框(子选择框的内容随父选择框选择内容的变化而相应变化)

    问题2:附件能够参数化么?如何实现?

    问题3:用数据库中的值进行参数化(论坛上好像有人谈过,但我没有实践过,想尝试一下oracle)即:LR中脚本参数化时从数据库中提取数据

    问题4:验证:LR参数化的时候能不能从一个EXCEL文件中读取数据的问题

  • LoadRnner参数化之疑问一之续一

    2007-10-12 16:03:17

     

    参数说明

    TBillNo

    tranID

    realCode

    TBillDate

    invoiceNo

    contractNo

    inUnitecode

    参数类型

    都是Unique Number

    Date

    file

    file

    Unique Number

    更新值的时间

    每次迭代

    每次出现

    每次迭代

    每次出现

     每次迭代

    每次迭代

    每次迭代

    当超出值时

    都是contimue with lase value

    File类型还有一个属性:选择下一行:Unique

    原误以为:应该数据库中多了10条不相同的记录

        疑点:1.实际插入到数据库中的记录和迭代次数有关系么?2.如果某个参数的更新值时间设置为每次迭代,那么是不是在同一次迭代中,不论设置多少个虚拟用户,都执行相同的参数值?3.虚拟用户如何选择不同的参数值到实际的系统中呢?这个如何实现?

     

     

  • LoadRnner参数化之疑问一

    2007-10-12 15:57:33

         今天才发现,我以前的很多所谓的‘以为’都是错误的。因为没有仔细查看过,只是按照自己的想法认为就是那样,其结果就没有进一步看问题,也不再思考,以为自己的想法是符合逻辑的,一定是正确的。。。很多时候看到某些内容觉得很容易理解、清晰明了了,就不再去亲自动手去实践。。。此时此刻,才真正领悟了‘没有实践就没有发言权’‘实践是检验真理的唯一标准’的真理!

          言归正传,记录一下今天遇到的问题---暂时没有明白怎么回事?希望看到此文章的同仁们能够给予指点迷津,感激不尽!

          No1:

         执行环境:LR8.1 SP2  参数化类型有日期、文件、唯一编码  设置的变更参数有每次迭代和每次出现(但这个应该不会影响什么,因为脚本没有重复的变量即一个变量只出现了1次)  设置的虚拟用户为5个  Action迭代2次   参数化对象是一张录入表单  所有参数化内容值的设置都大于10条

        运行结果:1.向系统插入了2条数据

                2.日志文件(5个,每个中有2个迭代)---通过‘显示Vuser日志’查看的结果

    日志记录

    TBillNo

    tranID

    realCode

    TBillDate

    invoiceNo

    contractNo

    inUnitecode

    1-1

    201

    201

    201

    2007-10-15

    FP2007101202

    FP2007101202

    201

    1-2

    202

    202

    202

    2007-10-15

    FP2007101201

    FP2007101201

    202

    2-1

    401

    401

    401

    2007-10-15

    FP2007101206

    FP2007101201

    401

    2-2

    402

    402

    402

    2007-10-15

    FP2007101202

    FP2007101202

    402

    8-1

    1

    1

    1

    2007-10-15

    FP2007101205

    FP2007101205

    01

    8-2

    2

    2

    2

    2007-10-15

    FP2007101203

    FP2007101204

    02

    9-1

    101

    101

    101

    2007-10-15

    FP2007101204

    FP2007101203

    101

    9-2

    102

    102

    102

    2007-10-15

    FP2007101203

    FP2007101203

    102

    10-1

    301

    301

    301

    2007-10-15

    FP2007101202

    FP2007101204

    301

    10-2

    302

    302

    302

    2007-10-15

    FP2007101201

    FP2007101203

    302

    插入到系统中的数据

    TBillNo

    tranID

    realCode

    TBillDate

    invoiceNo

    contractNo

    inUnitecode

     

    202

    202

    202

    2007-20-15

    FP2007101201

    FP2007101201

    202

     

    2

     

     

     

    FP2007101203

    FP2007101204

    02

     (参数的相关设置我疑问一续一的文章中上传,附到这文章中,出现问题了,页面不正常了,不知道什么原因)

        

Open Toolbar