zoukankan      html  css  js  c++  java
  • 初识Loadrunner

    一. socket脚本

    lrs_startup(257);

    lrs_create_socket("socket1", "TCP", "RemoteHost=192.168.86.239:9503", LrsLastArg);

    lrs_set_recv_timeout(120, 0);

    lrs_set_socket_options("socket1", LRS_NO_DELAY, "TRUE");

    lrs_send("socket1", "buf1", LrsLastArg);

    lrs_receive("socket1", "rbuf1", LrsLastArg);

    lrs_close_socket("socket1");

    lrs_cleanup();

    二. Loadrunner函数大全

    1258个函数

    https://files.cnblogs.com/qingxia/LoadRunner%E5%87%BD%E6%95%B0%E5%A4%A7%E5%85%A8%E4%B9%8B%E4%B8%AD%E6%96%87%E8%A7%A3%E9%87%8A.pdf

    三. 调试优化脚本

       1.设置断点
       
        相信大家都不陌生,LR也是可以设置断点的,在需要设置断点的语句前按F9快捷键,断点就设置好了,程序运行到断点语句后会暂停,这时我们可以用F10单步调试程序。
       
        2.打开EXtended Log
       
        只是设置断点是不够的,我们还得知道具体发生了什么事情,Log告诉了我们一切,默认的Log是standard Log,这时远远不够的。我们要extended log,打开路径为runtime settings-->log-->extended log.把parameter substitution和data returned by server和advanced trace大家根据需要勾选吧。

        3.注释掉多余的语句

        很多回放时出错的脚本都是因为多余的语句。因为LR在录制的时候,LR生成的语句很多不是我们想要的。不要过分相信LR了,它生成的语句也是有很多BUG的。

    四. log文件在哪看

    (1)在vgen中,我们必须写输出函数输出信息,将我们所想要了解的信息用函数输出,主要有这么几个函数输出信息:lr_output_message,lr_error_message,lr_log_message.这些函数请参阅 help-->function reference.
       
        其次,我们要在Vuser->runtime settings->log中设置,勾选always send messages,这样我们才能写出Log,在我们的脚本所在的文件夹中,有两个文件很重要,mdrv.log.txt和output.txt文件,lr_log_message只会把信息输到mdrv.log文件中,而lr_output_message则会写进以上两个文件。    

    (2)在controller中,很多朋友都会想知道多次迭代,参数是否正确的导入了呢,我们依旧查看log,我们在执行结束后,查看结果目录的Log文件夹,如果是负载生成器运行的话,则在tmp目录。不过,还想提醒朋友们,在controller我们也要设置runtime settings才行,而且每个用户组的runtime settings,设置的方法是:在controller的Run标签页中,Vusers...->Details...->runtime settings按钮,点击它,设置的方法与在vgen中一样的。

    五. 网例 —— 数据包乱码

    【说明:】今天用socket协议录制脚本后,发现数据包中都是乱码。经过自己的琢磨,最终把所有乱码都给格式化成十六进制。感触最深的就是只要懂的字符类型长度就能真正的理解清楚loadrunner中发送的数据包内容是啥。然后就可以完全自己灵活控制数据包的值和数据包的操作。

    1、基础知识
    (1)需要知道所测试软件中的包结构。
    (2)知道二进制流;
    (3)知道Big Endian 与 Little Endian
    (4)知道字符类型的长度
    (5)知道:当两台采用不同字节序的主机通信时,在传输数据之前双方都必须 对其进行字节序转换,转为网络字节序后才能进行传输.

    2、实例说明:

    如某包体中有两个值,定义如下:

    struct msgHead
    {
    int id,
    char name
    }

    假设我们要发送的包体就包括这两个字段。并且id=81001 ,name=A

    那么在loadrunner的data.ws文件中或者自己自定义的数据包中的值分别如下:

    /*********************************
    send buf0   5

    "\x69\x3C\x01\x00"//说明:十进制:81001  十六进制:13C69 按照高低位存储:69 3c 01 00

    "\x41"   //说明: ascii码A 对应十进制是65 ,65转化成十六进制是41  
    *********************************/

    3、注意

    通过上面的例子,不管你录制后的数据包显示什么样的乱码。

    都可以用以上方法,根据包结构中定义的长度,一个个给解析出来。

  • 相关阅读:
    php计算utf8字符串长度
    php和js字符串的acsii码函数
    快速排序的php实现
    bzoj 2822 [AHOI2012]树屋阶梯 卡特兰数
    bzoj 1485 [HNOI2009]有趣的数列 卡特兰数
    bzoj 4173 打表???
    bzoj [Noi2002]Savage 扩展欧几里得
    bzoj 3505 [Cqoi2014]数三角形 组合
    bzoj 2820 莫比乌斯反演
    Travel 并查集
  • 原文地址:https://www.cnblogs.com/qingxia/p/2699582.html
Copyright © 2011-2022 走看看