51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: sqlserveroracle
打印 上一主题 下一主题

[讨论] 30个小时发现loadrunner严重的bug

[复制链接]

该用户从未签到

21#
发表于 2008-12-9 17:36:14 | 只看该作者
等待楼主的,继续爆料。。。
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2008-12-9 23:51:04 | 只看该作者
这个问题我也碰到过,但是我认为是自定义的DLL设计的问题。
首先,LR的虚拟用户可以设置为以独立线程运行还是独立进程运行。
其次,如果以独立线程运行,那么DLL只被加载一次,也就是白加载到主进程的地址空间里;你的虚拟用户是各个不同的线程,他们都访问同样的主进程的地址空间中的DLL拷贝,所以你要吧DLL设计为线程安全的。
最后,如果是以独立进程运行,那么就不需要考虑线程安全了。
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2008-12-10 10:14:53 | 只看该作者
我是新手,,看不懂。。学习了
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2008-12-10 10:47:54 | 只看该作者
To 楼主:
你所说的不是Loadrunner的bug,是你的用法不对。LoadRunner在跑虚拟用户的时候是每50个用户会启动一个进程(LR说明书有,通过任务管理器也能观察到),楼主代码里面在写日志文件的时候用的是线程锁而不是进程锁,因此50个用户不会出问题,100个用户由于启动了两个进程在并发时当然有可能出问题。
另外,你用的是UDP,我敢肯定你的发包程序本身就不是线程安全的,要是你改成TCP还会出更多的错误。用写DLL方式测C/S的时候,DLL里面申请的变量(包括socket),一定要做到线程安全才行,请参考核心编程的线程本地存储TLS这一节,否则会出意想不到的错误。
还有,写DLL的时候还要在dllmain函数里面对DLL_PROCESS_ATTACH,DLL_THREAD_ATTACH,DLL_THREAD_DETACH,DLL_PROCESS_DETACH单独进行处理。
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2008-12-10 10:53:02 | 只看该作者
原帖由 zengyixun 于 2008-12-2 17:46 发表
LR做c/s是挺烦的,一个测试工具这么多bug,是不是他们公司自己的测试做得不好造成的,让我们怎么相信他们呢,呵呵,我这几天也在测UDP的的应用,send是还简单的啦,我都没有你的烦恼,如果你这种只关系到服务器的话, ...

to zengyixun:当你真正理解了LoadRunner的运行机制后就不会有这种想法了 ,LR测C/S要饶不少弯,不过用熟了以后比直接写测试代码还是要快得多,并且比较稳定,事后数据分析功能强。
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2008-12-10 13:11:35 | 只看该作者
原帖由 winmeeasy 于 2008-12-10 10:47 发表
To 楼主:
你所说的不是Loadrunner的bug,是你的用法不对。LoadRunner在跑虚拟用户的时候是每50个用户会启动一个进程(LR说明书有,通过任务管理器也能观察到),楼主代码里面在写日志文件的时候用的是线程锁而不是进 ...

细心!
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2008-12-10 15:15:24 | 只看该作者
果然强人多哈 我也在慢慢学
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2008-12-10 15:37:05 | 只看该作者
呵呵,这个帖子含金量高,应该加精不能沉!
回复 支持 反对

使用道具 举报

该用户从未签到

29#
 楼主| 发表于 2008-12-10 16:39:31 | 只看该作者

回复 24# 的帖子

你这个内容:50个用户会启动一个进程,这个信息很重要,但是static CMutex sCSFile;//共享互斥访问,CMutex就是进程锁,不是线程锁(MSDN上面说的很明白)。。。。。。。
但我不知道为什么Loadrunner50个用户就会启动一个进程而不是线程,我写程序启动可以启动500个线程都没事,为什么那样做呢?
好,即使按照你所说的,那如果dll是线程安全的,那么我还要设计进程安全,这不是很麻烦。。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

30#
 楼主| 发表于 2008-12-10 17:48:22 | 只看该作者

回复 26# 的帖子

CMutex就是线程和进程都是安全的,我晚上再回去试试................
回复 支持 反对

使用道具 举报

该用户从未签到

31#
发表于 2008-12-10 18:37:40 | 只看该作者
是的,我也就是开开玩笑随便一说,因为无论LR,Winrunner,QTP还是以前用IBM 的工具,感觉工具自身的稳定性都不是太好,不过最核心的问题,人家还是解决了的!原来每50个就会启一个进程,这就解释了LZ的疑惑了!多谢winmeeasy,我这人就是立场不坚定!
回复 支持 反对

使用道具 举报

该用户从未签到

32#
发表于 2008-12-10 19:44:31 | 只看该作者
原帖由 sqlserveroracle 于 2008-12-10 16:39 发表
你这个内容:50个用户会启动一个进程,这个信息很重要,但是static CMutex sCSFile;//共享互斥访问,CMutex就是进程锁,不是线程锁(MSDN上面说的很明白)。。。。。。。
但我不知道为什么Loadrunner50个用户就会启 ...

CMutex是进程锁(上面的帖子我说错了,sorry ),static CMutex sCSFile;创建的是匿名进程锁,当LR启动两个进程时,每个进程拥有的锁可能不是同一个了(很有可能是两个匿名进程锁)你应该在构造函数里面指定唯一名字,这样可以保证LR启动的进程用的是同一把锁。其实用Win32的CreateMutex在进程attach的时候创建要更好些。
回复 支持 反对

使用道具 举报

该用户从未签到

33#
发表于 2008-12-10 20:19:35 | 只看该作者

经典,强烈要求加精

经典,强烈要求加精
回复 支持 反对

使用道具 举报

该用户从未签到

34#
发表于 2008-12-10 22:19:27 | 只看该作者

LR8.1 运行脚本时会自动退出会不会是BUG

我用LR8.1 运行脚本时会自动退出  操作系统windowsXP sp2  IE6.0
回复 支持 反对

使用道具 举报

该用户从未签到

35#
发表于 2008-12-12 14:57:09 | 只看该作者
学习一下,看是什么问题 我们的脚本最多也执行过 36小时 但是也没有出现LZ描述的类似的问题  或许测试场景活 测试环境不一样
回复 支持 反对

使用道具 举报

该用户从未签到

36#
发表于 2008-12-12 16:56:58 | 只看该作者

LR的弊端

LR的弊端:1.录制不准确,可能遗漏真正的性能点;2.没有录制事务间的通信。
回复 支持 反对

使用道具 举报

该用户从未签到

37#
发表于 2008-12-12 22:16:24 | 只看该作者
原帖由 fmsbai5 于 2008-12-12 16:56 发表
LR的弊端:1.录制不准确,可能遗漏真正的性能点;2.没有录制事务间的通信。

我觉得不能光靠录制的吧,因为只有你知道你自己关注什么东西啊,所以主要还是要自己写
回复 支持 反对

使用道具 举报

该用户从未签到

38#
发表于 2008-12-17 14:18:46 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-1-25 11:31
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    39#
    发表于 2009-2-20 14:43:27 | 只看该作者
    高手如云,学习了~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2009-4-15 19:37:29 | 只看该作者
    留名
    真是质量贴
    我也有同步异步问题
    但是java的,因为不确定read的大小,所以很难判断是否read完
    这样会一直阻塞下去
    就无法测并发了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-7 21:36 , Processed in 0.085437 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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