51Testing软件测试论坛

标题: LoadRunner的工作原理 [打印本页]

作者: higkoo    时间: 2007-1-28 16:21
标题: LoadRunner的工作原理
   刚学LR不久,相对QTP而言,对LR的原理感觉有些难理解。
   QTP很直观,回放过程是看得见的,用户操作和界面都可呈现在眼前。但LR就不是,给我感觉是一直在执行代码。且结果也是LR分析出的图表和日志。
   由此,我对LR的过程有产生了疑问:是否能真正模拟若干用户?
     1、一个真正的用户在访问因特网时,网站会用http或其它方式向客户端发送文件。这些文件都保存在客户端的硬盘中。LoadRunner在模拟用户过程中是否可以达到这个目的?如何实现?
     2、根据客户端浏览器设置,IE缓存中的文件可能在不断更新,即一直在执行下载/复制/删除操作,一个用户就是这样,万个用户也这样。LoadRunner是怎么实现这个功能的?是否真正模拟到这种压力?
     3、在场景运行过程中,模拟用户有 初始化/缓冲/运行/停止 等状态,这些都是数字不断的改变,我们如何确定他的正确性/准确性?

实质上,上述应该是属于我对LoadRunner工作原理的不理解,或可称为怀疑吧。

    仁者见仁,智者见智。请路过的朋友们指路sdlkfj2
作者: robust    时间: 2007-1-28 16:56
标题: 哈哈。
作为专业测试人员,应该有专业的观点。对于loadrunner这样的负载测试软件,如果你是它的测试工程师,你应该怎样测试它呢?
如果你设计好了对它的测试方案,那么,以上的你的这些疑问,不是都能解决了吗?
作者: higkoo    时间: 2007-1-28 17:30
标题: 回复 #2 robust 的帖子
要测试LoadRunner,思路可能是有,实现可能是个挑战!sdlkfj5

可以虚拟一个场景去访问网内一已知的服务器,然后针对LR的操作,看服务器是做哪些响应,响应是否正确,是否达到LR场景的目的。

  但实现起来恐怕不这么容易了,我可以模拟一个少量Vuser的场景。但服务器端收到哪些请求,做出哪些响应,如何判断与定量?sdlkfj7
作者: higkoo    时间: 2007-1-28 17:31
标题: 疑问的补充
硬件上也有些问题一直让我不解。假若有10000个用户有访问sohu网站首页,如果每个人一条线的话就有10000条网络路径在访问。如果使用LoadRunner在一台机器上模拟10000个用户同时访问,一台机的网络带宽最多就千兆啦,且网络利用率不可能100%。sdlkfj6

     就上面提到的第2点,访问上机器是一直在向服务器发送访问请求,服务器接受到请求后发送所需的资源然后发送,客户端接受资源显示资源。LoadRunner是如何模拟这种场景的呢(原理)?假若的10000个用户,发送一次请求,服务器响应并发送资源。若1M/客户端,1000个客户端就约10个G的资源了!10G的资源,服务器传送出来需要多长时间呢?sdlkfj5

    仅在一台PC机上运行LoadRunner在模拟这10000个客户访问场景,是否给服务器发送了10000次重复的请求?服务器是否就传送了10000次同样的资源?如果没有,那这种模拟是否能达到我们的负载/压力的目的?sdlkfj4

   学习一个软件的操作,只要有足够的资源,给我时间,我想要学会操纵它并不是一件难事。但仅仅操作是远远不够的,就像软件测试的朋友们必需要懂产品业务一样。sdlkfj7
作者: robust    时间: 2007-1-28 18:49
原帖由 higkoo 于 2007-1-28 17:30 发表
要测试LoadRunner,思路可能是有,实现可能是个挑战!sdlkfj5

可以虚拟一个场景去访问网内一已知的服务器,然后针对LR的操作,看服务器是做哪些响应,响应是否正确,是否达到LR场景的目的。

  但实现起 ...


实现起来也不难啊!可以使用sniffer工具来抓包。现在的sniffer工具做得越来越强大,有些除了协议分析以外,还有统计分析功能了。
作者: robust    时间: 2007-1-28 18:54
原帖由 higkoo 于 2007-1-28 17:31 发表
硬件上也有些问题一直让我不解。假若有10000个用户有访问sohu网站首页,如果每个人一条线的话就有10000条网络路径在访问。如果使用LoadRunner在一台机器上模拟10000个用户同时访问,一台机的网络带宽最多就千兆 ...

看了lz的回帖,感觉网络知识需要加强。这些问题,大部分是对网络的认识上的问题。你可以寻找相关的资料学习。
作者: higkoo    时间: 2007-1-29 09:19
标题: 回复robust
原帖由 robust 于 2007-1-28 18:54 发表

看了lz的回帖,感觉网络知识需要加强。这些问题,大部分是对网络的认识上的问题。你可以寻找相关的资料学习。


  
  看来还是得下点功夫才行了! 测试真的是需要面面具到sdlkfj7
入测试这行之前,学习编程代码;
入行之后,学习网络及配置;
业务流程,需要行业(医学)业务流程;
  学习测试工具,又牵扯到很多相关知识,想找点捷径偷偷懒都不成……  sdlkfj5


学习,学习,再学习……sdlkfj2
作者: winmeeasy    时间: 2007-1-29 09:30
原帖由 higkoo 于 2007-1-28 16:21 发表
   刚学LR不久,相对QTP而言,对LR的原理感觉有些难理解。
   QTP很直观,回放过程是看得见的,用户操作和界面都可呈现在眼前。但LR就不是,给我感觉是一直在执行代码。且结果也是LR分析出的图表和日志。
    ...

对于1,2:LoadRuuner可以做到每个用户每次迭代都不用IE缓存,在调用web_url之前加上web_add_header函数即可。本质上还是要对HTTP协议的了解。
对于3:LR Controller的数据统计是异步的,LR显示的用户数和请求数是对前一段时间的汇总,不是实时的。要知道准确的数据,是要在服务端进行统计才科学!
其实利用抓包软件是可以了解到LR的运行机制的,LR只是工具,对业务模型的把握和协议的理解才是最重要的:)
作者: higkoo    时间: 2007-1-29 12:25
标题: 关于LoadRunner原理
请问你有LoadRunner原理方面的资料吗?
我不是计算机专业毕业,现在所用的知识都是后天的。
测试的知识面太广,有时真感觉心有余而力不足。

其实想了解LoadRunner的原理,不去盲目的相信,目的是为了让我去相信LR。

理解原理后,学起来可能不会这么困难。sdlkfj2
作者: winmeeasy    时间: 2007-1-29 14:07
原帖由 higkoo 于 2007-1-29 12:25 发表
请问你有LoadRunner原理方面的资料吗?
我不是计算机专业毕业,现在所用的知识都是后天的。
测试的知识面太广,有时真感觉心有余而力不足。

其实想了解LoadRunner的原理,不去盲目的相信,目的是为了让我去 ...

LoadRunner原理要自己在工作中摸索和总结,没有现成的,就算有也可能对你没有帮助。
不是计算机专业一样可以把测试工作做好的,很多搞测试的都不是科班出身的。
作者: lone_king    时间: 2007-1-29 17:01
也想过这样的一个问题就是不知道怎么实现的
也是刚做测试,觉得好多东西都要学,有些时候真的好迷茫
所以每天都上来看看各位的高见。
作者: higkoo    时间: 2007-1-30 12:33
标题: 我是这样想的
假如有10个不同用户打开sohu网站,那么每个IE都会把网页资源下载到自己的机器上。
根据浏览器设置,访问不同页面,IE缓存里的数据可能会不停的增加/修改/删除。
而用LoadRunner是否能做到这一点呢?

如果一个人有1M的网络访问量,1万个用户就10G了!

  1万个用户100秒内访问sohu网站应该不算太大压力吧。相当于100秒服务器就下载了10G的内容给正在访问的1万个用户。

而LoadRunner就在一台机上执行脚本,模拟真的有效吗?
作者: bzcy    时间: 2007-1-30 12:42
虚拟的用户不用和实际的一样真实的去调用资源的吧````
作者: higkoo    时间: 2007-1-30 14:28
原帖由 bzcy 于 2007-1-30 12:42 发表
虚拟的用户不用和实际的一样真实的去调用资源的吧````


  如果不用和实际一样,如何保证测试结果的权威性?
作者: charmer    时间: 2007-1-30 14:45
我用LR做过C/S架构的系统,曾经用真实的用户登陆进去,发现虚拟的100个用户都存在,并且可以看到这些用户的操作和真实的用户没有什么很大的差别,无论是CPU、内存,还是网络占用率等都会有变化
作者: mrduan    时间: 2007-1-30 22:30
原帖由 higkoo 于 2007-1-30 12:33 发表
假如有10个不同用户打开sohu网站,那么每个IE都会把网页资源下载到自己的机器上。
根据浏览器设置,访问不同页面,IE缓存里的数据可能会不停的增加/修改/删除。
而用LoadRunner是否能做到这一点呢?

如果 ...



老兄到底是想用LR给服务器加压测试,还是想测试自己的工作站和网络带宽??   不能本末倒置哦。。 :)
作者: higkoo    时间: 2007-1-31 08:49
标题: 放心去学吧
原帖由 charmer 于 2007-1-30 14:45 发表
我用LR做过C/S架构的系统,曾经用真实的用户登陆进去,发现虚拟的100个用户都存在,并且可以看到这些用户的操作和真实的用户没有什么很大的差别,无论是CPU、内存,还是网络占用率等都会有变化



嗯,那这样我就放心了……  sdlkfj3
作者: qi_cy    时间: 2007-1-31 09:37
原帖由 winmeeasy 于 2007-1-29 14:07 发表

LoadRunner原理要自己在工作中摸索和总结,没有现成的,就算有也可能对你没有帮助。
不是计算机专业一样可以把测试工作做好的,很多搞测试的都不是科班出身的。


对于lr的原理,我想应该和其它性能测试工具的原理是一样的。

一般来说,性能测试工具都有一个虚拟用户脚本产生器(vugen),压力产生器和用户代理、压力调度和监控系统、压力结果分析工具
对于虚拟用户产生器来讲,主要的功能就是通过代理接收从客户端发送的数据包,记录并转发给服务器,接收服务器端的数据包,记录并转发给客户端。除此之外,虚拟用户脚本生成器在截获数据之后,根据录制时使用的协议对数据包分析,用脚本函数记录下来。并提供了编译和调试的环境,用于对脚本的优化和修改

压力产生器用于根据压力调度系统的命令,产生实际的负载

压力调度和监控系统:压力调度工具可以根据用户的场景要求,设置不同的Vu数量等 监控系统主要是用于对数据库、服务器的性能计数器等的监控

压力结果分析工具 主要是将获取的性能计数器的信息,生成相应的分析图
作者: dqar    时间: 2009-3-9 18:12
如此好贴,谁敢灌水?
学习了
作者: tiannianyong    时间: 2009-3-10 12:00
标题: 回复 4# 的帖子
客户端虚拟用户是要耗资源的,不同架构的系统有所不同,1个虚拟用户耗大约0.5~2.5m内存。即1G内存的客户端建议不超过模拟200用户。
作者: thinke365    时间: 2009-3-15 13:25
原帖由 higkoo 于 2007-1-30 12:33 发表
假如有10个不同用户打开sohu网站,那么每个IE都会把网页资源下载到自己的机器上。
根据浏览器设置,访问不同页面,IE缓存里的数据可能会不停的增加/修改/删除。
而用LoadRunner是否能做到这一点呢?

如果一个人 ...

100秒,向单台测试机子返回10G内容这个不现实吧。
不说别的,测试机的带宽就没有这么大。。。
作者: zynuage    时间: 2009-3-17 12:12
像loadrunner这样的软件,就应该用灰盒测试了,以白盒测试为主,有很多软件是功能测试无法达到的 ,所以就得用白盒测试或是灰盒测试。
作者: wtucel    时间: 2009-3-17 13:38
很佩服LZ的学习精神,不是盲目的崇拜。
LR有个设置选项,是可以设置是否使用IE的缓存的。
而且使用一台机器来模拟10000个用户是不现实的
作者: huijuan0501    时间: 2009-10-29 11:27
标题: 回复 18# 的帖子
最近在看LR 方面资料,对原理不是太了解,刚开帖子 感觉理解了好多 呵呵支持下
作者: sluo1    时间: 2009-10-29 17:44
第一,楼主应该了解了解你的机器可以支持多少虚拟用户,一般512内存的机器大概200到顶,2G内存的我试过6,7百差不多,再多会死掉,当然跟cpu等其它配置也有一定关系。所以你放心你一台机器不可能模拟10000个用户。
第二,假设你50台机器并发模拟出了10000个用户,你运行会发现很多事务都是失败的,也就是说,你公司网络带宽不够,瓶颈在带宽,就像1000个人同时过独木桥,很多人是不可能在第一时间过去的,所以是不可能对别人服务器造成10000用户的压力的。
作者: 王娜cristal    时间: 2010-6-3 16:32
学习
作者: guansnow    时间: 2011-5-4 11:07
最近的总结是LR就是一个中间记录过程,对client to server 和server to client就是一个记录的过程。然后把记录的结果汇总~~
作者: hongliangqing    时间: 2011-5-4 17:18
并发的效果肯定达不到真实的效果、
作者: illlh    时间: 2011-5-6 04:46
严重提示楼主:
学习LOADRUNNER之前请先熟悉以下知识,不必精通,但是要明白过程.这将成为使用loadrunner的基础.
1.浏览器与web服务器的通信协议(http或者https)
2.网络通信协议基础(重点看TCP/IP协议)
3.什么叫请求\应答(request&response)
明白上边3个问题后再理解LOADRUNNER的原理就少了很大障碍.不然只是多浪费时间还留下一堆疑惑

作者: kakajay008    时间: 2011-5-6 14:38
很好哦~~
作者: xangtianwen    时间: 2011-6-7 12:31
通过大家的讨论,受用不少,谢过!
作者: 19931024    时间: 2011-10-19 15:21
LR 录制脚本的原理:基于协议,分析捕获c-s或者s-c端的通讯方式和数据,记录并生成脚本。

回放的时候,就是模拟 客户端和服务端之间的消息通讯。

比如登陆测试,LR不会去记录 用户名输入 tab 密码输入等操作,但是Lr 却可以记录 最终【提交】后
客户端 发送报文 给服务端的动作。 报文里有 用户名 密码 要送达的地方...

虚拟用户不太明白,现在感觉是“通过个代理,调度集群controller去生成负载,这里的负载控制在controller中控制,某台机器跑什么脚本 多少用户”

随便写写 ~~~~欢迎指正^_^
作者: qiufengqiang    时间: 2011-12-21 11:23
正在学习LR,看来还是得先学学HTTP才可以了
作者: suntianfei1987    时间: 2011-12-28 16:59
好贴,很受用
作者: skyofdl    时间: 2012-5-17 10:00
楼主问这个问题个人理解有些偏差,首先这两个工具根本不是一个级别的工具,用途也不一样,原理更不一样,QTP是功能的自动化,模拟用户实际行为的操作,LR是性能的自动化,它注重的是并发级别的,不是功能上的,建议你先分清这两个的区别,还有原理上都是怎么实现的,你的问题自然都解决了!
作者: tracychen    时间: 2012-5-21 15:04
学习了!
作者: 张宅宅    时间: 2012-7-27 17:20
学习啦,希望有不要沉默哦
作者: qiqiloveyunyun    时间: 2012-7-31 09:31
mark一下
作者: sunxp123    时间: 2013-9-22 14:46
这个帖子有种茅塞顿开的感觉。。。。。。。。几位大神的回复很有醍醐灌顶的嫌疑。
作者: Sivler    时间: 2014-2-24 11:11
不错的思考 向楼主学习
作者: littlevine68    时间: 2014-5-17 19:01
学习了,顶一个




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