51Testing软件测试论坛

标题: 这样的性能需求应该怎样做 [打印本页]

作者: higkoo    时间: 2007-7-11 11:21
标题: 这样的性能需求应该怎样做
性能要求:
1. 能同时在线用户100个。
2.并发50个用户,并发登录完成所耗总时间不能超过30秒。
3.当有线用户100人时,登录不得超过10秒。
针对上述要求:
虚拟用户脚本:打开首页——登录——显示登录页面。
场景:
1、设置集合点,并发50个用户,查看测试结果。
2、每10秒加载一个用户,直至100个用户在线。手动登录一个用户,查看响应时间。

场景2有个疑问:
脚本很短,一下就跑完了。如果只是设置“每10秒加载一个用户”最多只有10个用户同时在线,其它用户通过测试后就结束了。  sdlkfj7
于是我就在脚本末尾添加了一个ThinkTime()
根据10秒×100用户=1000秒 设置 LR_ThinkTime(1500) ,然后当有100个Vuser都在线时,开始手动登录记时。

总觉得场景2的测试很不妥,模拟100个用户在线,是应该这样做吗?sdlkfj1
作者: leoomo    时间: 2007-7-11 11:45
sdlkfj4

[ 本帖最后由 leoomo 于 2007-7-11 11:46 编辑 ]
作者: higkoo    时间: 2007-7-11 12:04
标题: 同时加载服务响应不过来
服务器只能承受50个用户并发,
同时加载100个用户,虽然没有设置集合点,可以服务器仍然响应不过来。

而且有个问题:
登录这个操作耗时短,只要登录通过,后面显示页面时间很短。
如果不能Vuser停留,整个场景一会就Pass了。
作者: leoomo    时间: 2007-7-11 12:59
你分两次并发50呢?
作者: higkoo    时间: 2007-7-11 13:14
标题: 不行
原帖由 leoomo 于 2007-7-11 12:59 发表
你分两次并发50呢?



分两次,第一次登录完成之后才能开始第二次登录。

第一次登录完成,几秒钟后,这个场景就完成了,虚拟用户就被释放了;
可以几秒钟后,第二次登录还没有完成呢。。。

结果都是一样的

问题是怎么能让虚拟用户停留在某个阶段?sdlkfj6
作者: leoomo    时间: 2007-7-11 13:17
你录制的只是登录过程?
作者: higkoo    时间: 2007-7-11 13:35
标题:
原帖由 leoomo 于 2007-7-11 13:17 发表
你录制的只是登录过程?


嗯,是的

开始录制,程序自动启动。

              输入用户名、密码,登录。

整个过程录制条上都显示(0个事件)

  即使在登录后做其它操作,也没有任何反应,脚本里一直都是空的:

/*********************************************************************
* Created by Mercury Interactive Windows Sockets Recorder
*
* Created on: Wed Jul 11 13:29:42
*********************************************************************/
#include "lrs.h"

Action()
{
    return 0;
}
sdlkfj9
作者: leoomo    时间: 2007-7-11 13:49
B/S架构?
单协议选择WEB?
作者: angerswing    时间: 2007-7-11 13:54
你可以设置循环,保持在线为100人即可
作者: higkoo    时间: 2007-7-11 16:53
原帖由 leoomo 于 2007-7-11 13:54 发表
B/S架构?
单协议选择WEB?

是的。

原帖由 angerswing 于 2007-7-11 13:54 发表
你可以设置循环,保持在线为100人即可


这样服务器很有可能停止响应,因为整个动作,登录耗时最长。不停迭代,恐怕到最后停在登录处的用户越来越多……

  我觉得不妥,你觉得呢?

最终的目的只是想有100个用户在线,不需要其它业务操作。
作者: leoomo    时间: 2007-7-11 17:20
你录制的登录状态,不录制退出,那用户不是一直在线吗?
作者: higkoo    时间: 2007-7-11 17:35
原帖由 leoomo 于 2007-7-11 17:20 发表
你录制的登录状态,不录制退出,那用户不是一直在线吗?


我最初也是这么想的,实际不能这么理解


在你录制的ACTION里虽然没有退出,但在LR的END里面就结束了这个会话。
作者: angerswing    时间: 2007-7-12 13:40
你的意思是不是就像QQ一样,登陆后只要保持在线状态,并不需要它做别的操作时的100人负载下的登陆时间?
作者: angerswing    时间: 2007-7-12 13:42
原帖由 leoomo 于 2007-7-11 17:20 发表
你录制的登录状态,不录制退出,那用户不是一直在线吗?

若没有别的设置,LR在运行完这个脚本后会直接END这个运行。
作者: angerswing    时间: 2007-7-12 13:45
若只是保持在线负载的话,的确可以只要在ACTION中加入一定长的thinktime来解决。
这样的话,其实服务器的负载是很小的。
作者: higkoo    时间: 2007-7-12 17:12
标题: ThinkTime
sdlkfj6
原帖由 angerswing 于 2007-7-12 13:40 发表
你的意思是不是就像QQ一样,登陆后只要保持在线状态,并不需要它做别的操作时的100人负载下的登陆时间?

是的

正是此意。


我也刚好是用ThinkTime来做到这一点的,有朋友这么 说,我就放心了。。sdlkfj3
作者: mylove888    时间: 2007-8-16 11:42
我觉得应该是登录后再进行一些操作,用这些操作的脚本来保持登录用户的在线状态。这样才是模拟用户真实的情况,一般登录后都是进行一些操作的。
作者: flyfly310    时间: 2007-8-16 12:05
dingding
作者: ppent    时间: 2007-8-16 13:18
原帖由 angerswing 于 2007-7-12 13:42 发表

若没有别的设置,LR在运行完这个脚本后会直接END这个运行。


这里有两层概念。在线用户是系统应用的概念,“在线”链接是tcp协议的概念。
LR断开的是http连接,你的用户还没有退出系统,还占一定的资源。不过一定时间后,服务器会自动退出该用户回收资源。

其实就算是真正用户登录系统之后,如果一段时间内没有操作,也会被断开连接的。因为session超时了。
作者: deadhunter    时间: 2007-8-16 13:35
可以用winsocket,脚本先会建立链接,然后第二次发包后,你把后面的代码屏蔽了,这样就可以解决
作者: tanbofish    时间: 2007-8-16 14:25
标题: 回复 #7 higkoo 的帖子
你的脚本都是空的啊????

你都没有录到相应的脚本。。。。

如果录到的话,我觉得用延长think time时间也是可以的。。。还有一种方法不知道可不可行,就是延长持续时间~




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