51Testing软件测试论坛

标题: 模拟设备并发,场景中大部分虚拟设备报错,请高手解答 [打印本页]

作者: modtest    时间: 2016-2-24 12:30
标题: 模拟设备并发,场景中大部分虚拟设备报错,请高手解答
本帖最后由 modtest 于 2016-2-24 12:41 编辑

本人loadrunner新手,目前测试的项目是用socket录制的。项目架构是:web 服务+通信服务gateway+mysql 数据库服务这种方式。设备采用socket方式与通信服务通信。目前主要要测试的部分就是多个设备并发,检测设备与通信服务,通信服务与数据库之间的交互的问题。
   用loadrunner来模拟设备。
   录制的脚本:
          int cycle = 100;
                int i;
        lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.16.8:5002", LrsLastArg);

        lr_think_time(4);


        lr_start_transaction("login");   //开始login事物

                lrs_send("socket0", "buf0", LrsLastArg);

                lrs_receive("socket0", "buf1", LrsLastArg);

        lr_end_transaction("login", LR_AUTO);    //结束login事物



        for (i = 0; i < cycle; i++) {
        lr_start_transaction("发送心跳包");   //开始发送心跳包事物
                lr_think_time(5);

                lrs_send("socket0", "buf2", LrsLastArg);

                lrs_receive("socket0", "buf3", LrsLastArg);

        lr_end_transaction("发送心跳包", LR_AUTO);    //结束发送心跳包事

        lrs_close_socket("socket0");
        lrs_cleanup();



data.dw为:

;WSRData 2 1

send  buf0 81
        "\x00\x00\x00"
        "Q"
        "\x00\x00\x00\x00\x00\x00\x00\x00"
        "<MACaddresses>"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "<MACaddresses>"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00"
        "\x00"

recv  buf1 64
        "\x00\x01\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "d"
        "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "d"
        "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "d"
        "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"

send  buf2 19
        "\x00\x02\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00"
        "d"
        "\x80\xff\xff\xff\x00\x00"

recv  buf3 20
        "\x00\x03\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
        "\x05"


-1

单个脚本运行可以通过。但是采用场景,虚拟用户100个时,只有1个或2个可以pass,其他都失败。
错误日志多为:
Start auto log messages stack - Iteration 1.
Action.c(33): callSend: Wed Feb 24 11:28:55.453: reading buffer buf2
Action.c(33): callSend: Wed Feb 24 11:28:55.453: calling parameterization routines
Action.c(33): callSend: Wed Feb 24 11:28:55.453: translate buffer to binary
Action.c(33): callSend: Wed Feb 24 11:28:55.453: Translate data for printing
=================================SENT BUFFER=================================
        "\x00\x02\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00"
        "d"
        "\x80\xff\xff\xff\x00\x00"

===============================================================================
Action.c(33): callSend: Wed Feb 24 11:28:55.453: About to send 19 bytes to socket0 (2668)
Action.c(33): callSend: Wed Feb 24 11:28:55.453: Waiting for writable socket 10 secs, 0 usecs
Action.c(33): Error : Internal "select" error while trying to socket0. Error code : 9018.
End auto log messages stack.

Start auto log messages stack - Iteration 1.
Action.c(33): Continuing after error in Vuser script.
Action.c(35): lrs_receive(socket0, buf3)
Action.c(35): fiInitRecv: socket: socket0 (2668), buffer: buf3, expected size: 20
Action.c(35): callRecv: Wed Feb 24 11:28:55.453: About to read 20 bytes from socket0 (2668)
Action.c(35): fiPerformReceive: Wed Feb 24 11:28:55.453: Waiting for readable socket 10 secs, 0 usecs
Action.c(35): Error : Internal "select" error while trying to socket0. Error code : 9018.
End auto log messages stack.
Start auto log messages stack - Iteration 1.
Action.c(35): Continuing after error in Vuser script.
Action.c(37): Notify: Transaction "发送心跳包" ended with "Fail" status (Duration: 5.0012 Think Time: 5.0000).
Action.c(42): lrs_close_socket(socket0)
Action.c(42): callCloseSocket: socket: socket0 (2668)
Action.c(42): Error : socket0 - Successful WSAStartup not yet performed. Error code : 10093.
End auto log messages stack.

Start auto log messages stack - Iteration 1.
Action.c(42): Continuing after error in Vuser script.
Action.c(43): lrs_cleanup()
Action.c(43): Error :  - Successful WSAStartup not yet performed. Error code : 10093.
End auto log messages stack.

本人开始认为是返回超时,所以把返回超时时间都设置成了600s,可问题还是存在。麻烦哪位路过大神帮忙解惑,不胜感激

作者: modtest    时间: 2016-2-24 12:31
我自己开始认为是返回超时,所以把连接返回的时间都设置成了600,可问题并没有解决。
作者: modtest    时间: 2016-2-24 13:02
日志图片

作者: suyilin1985    时间: 2016-2-24 14:06
LR使用不多,猜测是否是只有1个用户使用了该socket连接
作者: modtest    时间: 2016-2-24 15:54
为什么只能1个用户使用呢
作者: modtest    时间: 2016-2-24 16:28
问题已经OK了,可以跑100个ip地址了。原来是我的mac地址没有采用唯一
作者: modtest    时间: 2016-2-24 16:40
1.脚本中参数化问题,每次打开似乎都默认为sequence了,但实际上很多情况下都用Unique,而且用Once就OK
2.每次场景的设置都要保存后再运行才能保证刚才的设置有效
作者: jingzizx    时间: 2016-2-25 10:12





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2