51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1849|回复: 8
打印 上一主题 下一主题

[求助] 模拟设备并发,场景中大部分虚拟设备报错,请高手解答

[复制链接]
  • TA的每日心情

    2016-2-24 15:57
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2016-2-24 12:30:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 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,可问题还是存在。麻烦哪位路过大神帮忙解惑,不胜感激
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情

    2016-2-24 15:57
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2016-2-24 12:31:43 | 只看该作者
    我自己开始认为是返回超时,所以把连接返回的时间都设置成了600,可问题并没有解决。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2016-2-24 14:06:52 | 只看该作者
    LR使用不多,猜测是否是只有1个用户使用了该socket连接
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-2-24 15:57
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
     楼主| 发表于 2016-2-24 15:54:51 | 只看该作者
    为什么只能1个用户使用呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-2-24 15:57
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2016-2-24 16:28:27 | 只看该作者
    问题已经OK了,可以跑100个ip地址了。原来是我的mac地址没有采用唯一
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-2-24 15:57
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2016-2-24 16:40:58 | 只看该作者
    1.脚本中参数化问题,每次打开似乎都默认为sequence了,但实际上很多情况下都用Unique,而且用Once就OK
    2.每次场景的设置都要保存后再运行才能保证刚才的设置有效
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-7 05:38 , Processed in 0.069538 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表