51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

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

[复制链接]

该用户从未签到

1#
发表于 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单独进行处理。
回复 支持 反对

使用道具 举报

该用户从未签到

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

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

使用道具 举报

该用户从未签到

3#
发表于 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的时候创建要更好些。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-6-7 06:09 , Processed in 0.073530 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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