51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2417|回复: 10
打印 上一主题 下一主题

[求助] 请熟悉测试winsocket的高手解答这个问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-8-15 10:49:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有谁知道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怎么也对应不上啊。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-8-15 11:15:05 | 只看该作者
期待你把脚本贴出来,大家一起分析
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-8-15 15:09:59 | 只看该作者
脚本很简单:
#include "lrs.h"


vuser_init()
{
    lrs_startup(257);

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

    return 0;
}
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-8-15 15:10:34 | 只看该作者
Action()
{

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

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

    return 0;
}

vuser_end()
{
    lrs_close_socket("socket0");

    lrs_cleanup();

    return 0;
}
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-8-15 15:11:10 | 只看该作者
;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
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-8-15 21:16:37 | 只看该作者
lrs_receive可以获取 有服务器端 传来的 数据包,里面会有如 验证码 之类的东西, 同时 它 也验证 数据是否丢失,或者不完整。一般可以在重要的buf的Lrs_receive语句后面加打印,有助于 我们阅读Log文件,是不可缺少的。如注释掉,会大量报错的。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-8-17 13:00:49 | 只看该作者
每次recv_buff 的内容都会和录制时recv_buff里的东西进行比较,这样会花费一定的时间,所以造成你说的那种情况。使用 lrs_set_recv_timeout2(0,0)就可以把这个比较时间去掉,这样就能得出这个请求的真实响应时间了。

[ 本帖最后由 morebetter 于 2006-8-17 13:04 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-8-17 17:11:36 | 只看该作者
lrs_set_recv_timeout()和lrs_set_recv_timeout2()有什么区别?我看英文的帮助不太理解
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-8-17 18:44:15 | 只看该作者
这两个区别是,lr_set_recv_timeout()是连接socket时间 的限制,timeout2()是已经连接上socket,正在接收数据的时间限制。大概就是两个不同阶段的限制,timeout()是连接过程的限制,timeout2()是连接中的时间限制。
我说的有点乱,能理解吧。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-8-21 17:52:13 | 只看该作者
理解,多谢
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-9-10 17:38:13 | 只看该作者
原帖由 wss123 于 2006-8-15 21:16 发表
lrs_receive可以获取 有服务器端 传来的 数据包,里面会有如 验证码 之类的东西, 同时 它 也验证 数据是否丢失,或者不完整。一般可以在重要的buf的Lrs_receive语句后面加打印,有助于 我们阅读Log文件,是不可缺 ...

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

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-15 21:40 , Processed in 0.084105 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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