51Testing软件测试论坛

标题: 请熟悉测试winsocket的高手解答这个问题 [打印本页]

作者: KingRight    时间: 2006-8-15 10:49
标题: 请熟悉测试winsocket的高手解答这个问题
有谁知道loadrunner测试winsockect中的 lrs_receive("socket0", "buf13", LrsLastArg)的具体作用?

仅仅是等待接收包然后与buf13进行比对吗? 那就是说去掉lrs_receive也没啥关系了 ?

因为我测试发现lrs_receive对response time影响很大。

奇怪的响应时间如下: 执行结果中是1秒处理了12.762个请求,我从后台看也都响应成功了,但是response time却是3秒多。我后来把lrs_send和lrs_receive分成两个事务,发现是lrs_receive的时间占的。

打个比方这个事务是交钱然后给货, 测试结果是1秒完成了10次,这个没错,但是这个事务响应时间却是3秒多,为什么?!
以下是具体的测试结果:

Virtual User:50
Duration Time: 5min
------------
Passed Transaction:  4390
Transaction Per Sec: 12.762
Transaction response time:3.585
Server CPU < 5%
完成4390个Transaction

其中除了Transaction response time我无法理解,其他的都是合理的,而且从后台看也是对的。
谁能解释下这个Transaction response time得出3秒多怎么来的?这个值和Transaction Per Sec怎么也对应不上啊。
作者: 哈哈小兵    时间: 2006-8-15 11:15
期待你把脚本贴出来,大家一起分析
作者: KingRight    时间: 2006-8-15 15:09
脚本很简单:
#include "lrs.h"


vuser_init()
{
    lrs_startup(257);

    lrs_create_socket("socket0", "TCP", "RemoteHost=220.188.56.177:7001",  LrsLastArg);

    return 0;
}
作者: KingRight    时间: 2006-8-15 15:10
Action()
{

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

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

    return 0;
}

vuser_end()
{
    lrs_close_socket("socket0");

    lrs_cleanup();

    return 0;
}
作者: KingRight    时间: 2006-8-15 15:11
;WSRData 2 1


send  buf10 514
        "\x00\x00\x02\x02\x10\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x00"
        "1"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x02"
        "3"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "<SEQNO>"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"
        "6"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "<MDN>"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"
        "9"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "<MDN>"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"
        "12"
        "\x00\x00\x00\x00\x00\x00\x00\x00"
        "<MDN>"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e"
        "15"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "600000000002484"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11"
        "18"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00"
        "\x14\x00\x00\x00\x15\x00\x00\x00\x16\x17\x00\x00\x00\x02\x00\x00\x00\x03\x00"
        "\x01\x00\x02"
        "24"
        "\x00\x02\x00\x14"
        "25"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x03\x00\x05"
        "26"
        "\x00\x00\x00\x00\x03\x00\x05"
        "26"
        "\x00\x00\x00\x00\x04\x00\x02"
        "27"
        "\x00\x05\x00\x04\x00\x00\x00\x1c\x00\x06\x00\x04\x00\x00\x00\x1c\x00"
        "\a"
        "\x00\x04\x00\x00\x00\x1e\x00"
        "\b"
        "\x00\x04\x00\x00\x00\x1f\x00"
        "\t"
        "\x00\x04\x00\x00\x00"
        " "
        "\x00"
        "\n"
        "\x00"
        " 33"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x01\x00\x12\x02\x00"
        "\x01"
        "#"
        "\x14\x03\x00\x02"
        "pe"
        "\x12\x04\x00\x06"
        "37"
        "\x00\x00\x00\x00\x12\x05\x00\x06"
        "38"
        "\x00\x00\x00\x00\x12\x06\x00\x14"
        "39"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12"
        "\a"
        "\x00\x01"
        "("

recv  buf11 86
        "\x00\x00\x00"
        "V"
        "\x80\x00\x00\x05\x00\x00\x00\x05\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x00\x00"
        "d"
        "\x00\x00\x00\x01\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x12\x04\x00\x06"
        "-1"
        "\x00\x00\x00\x00\x12\x05\x00\x06"
        "N"
        "\x00\x00\x00\x00\x00\x12"
        "\t"
        "\x00\x01\x00"


-1
作者: wss123    时间: 2006-8-15 21:16
lrs_receive可以获取 有服务器端 传来的 数据包,里面会有如 验证码 之类的东西, 同时 它 也验证 数据是否丢失,或者不完整。一般可以在重要的buf的Lrs_receive语句后面加打印,有助于 我们阅读Log文件,是不可缺少的。如注释掉,会大量报错的。
作者: morebetter    时间: 2006-8-17 13:00
每次recv_buff 的内容都会和录制时recv_buff里的东西进行比较,这样会花费一定的时间,所以造成你说的那种情况。使用 lrs_set_recv_timeout2(0,0)就可以把这个比较时间去掉,这样就能得出这个请求的真实响应时间了。

[ 本帖最后由 morebetter 于 2006-8-17 13:04 编辑 ]
作者: thefirstred    时间: 2006-8-17 17:11
lrs_set_recv_timeout()和lrs_set_recv_timeout2()有什么区别?我看英文的帮助不太理解
作者: morebetter    时间: 2006-8-17 18:44
这两个区别是,lr_set_recv_timeout()是连接socket时间 的限制,timeout2()是已经连接上socket,正在接收数据的时间限制。大概就是两个不同阶段的限制,timeout()是连接过程的限制,timeout2()是连接中的时间限制。
我说的有点乱,能理解吧。
作者: thefirstred    时间: 2006-8-21 17:52
理解,多谢
作者: haship    时间: 2006-9-10 17:38
原帖由 wss123 于 2006-8-15 21:16 发表
lrs_receive可以获取 有服务器端 传来的 数据包,里面会有如 验证码 之类的东西, 同时 它 也验证 数据是否丢失,或者不完整。一般可以在重要的buf的Lrs_receive语句后面加打印,有助于 我们阅读Log文件,是不可缺 ...

具体怎么操作呢,用lr_log_message();么
为什么我的lr_log_message ( "s", lr_eval_string ( "{buff1}" ) );
输出的却是{buff1}呢




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