51Testing软件测试论坛

标题: 关于设置场景 [打印本页]

作者: sunshine_luo    时间: 2004-6-28 15:46
标题: 关于设置场景
脚本设置情况如下:
单纯的打开一个页面就停止了录制(此处没有录制关闭该页面的过程)。Run_Time设置为3。

场景设置情况如下:
设置100个虚拟用户,要求每隔1分钟加载20个用户,设置当加载完所有用户后场景继续运行的时间为10分钟。

问题:
1。第1分钟成功加载20个用户,在第2分钟,这20个用户是继续不断执行上述打开页面的脚本还是仅仅只是保持在线状态?

2。第5分钟结束,成功加载了100个用户,然后场景继续运行10分钟,在这10分钟中这100个用户是保持在线状态还是不断的执行上述录制的打开页面的脚本?

3。安装版主在“在loadrunner中录制脚本时碰到的问题"这个帖子中的解释“如果在controller中设置scheduling setting的duration设置1小时,即使你vugen中设置iterations为3,她也会运行到指定时间。次数也许不只3次,会更多。”那是否表示当用户成功加载后仍然在继续不断的执行上述录制的打开页面的脚本?如果这样的话,对我打算测试的web服务器而言肯定已经不止是100个用户了,那我们还设置虚拟用户为100又有什么意义呢?
作者: pcl2004_27    时间: 2004-6-29 07:24
没有回答问题之前,我把上次的脚本进行如下修改!做几个试验:
VuGen建立的第一个脚本 TestFirst的action脚本如下
char *filename = "c:\\test.txt";
Action() {

     long file;
     int id;
     char *groupname;

     /* Create a new file */
     if ((file = fopen(filename, "a" )) == NULL) {
          lr_output_message("Unable to create %s", filename);
          return -1;
     }
     
     /* Write the Vuser id and group to the log file */
     id = 1;
         groupname = "one";

     fprintf(file, "logfile of virtual user id: %d group: %s\n", id, groupname);
     fclose(file);

     return 0;
}
vu_End脚本如下
char *filepath = "c:\\test.txt";
vuser_end()
{
         long file;
     int id;
     /* Create a new file */
     if ((file = fopen(filepath, "a" )) == NULL) {
          lr_output_message("Unable to create %s", filename);
          return -1;
     }
     
     id = 1;

     fprintf(file, "%d End  ", id);
     fclose(file);
         return 0;
}

VuGen建立的第二个脚本TestSecond的Action脚本如下

char *filename = "c:\\test.txt";
Action() {

     long file;
     int id;
     char *groupname;

     /* Create a new file */
     if ((file = fopen(filename, "a" )) == NULL) {
          lr_output_message("Unable to create %s", filename);
          return -1;
     }
     
     /* Write the Vuser id and group to the log file */
     id = 2;
         groupname = "two";

     fprintf(file, "logfile of virtual user id: %d group: %s\n", id, groupname);
     fclose(file);

     return 0;
}
vu_End脚本如下:
#include "as_web.h"
char *filepath = "c:\\test.txt";
vuser_end()
{
         long file;
     int id;
     /* Create a new file */
     if ((file = fopen(filepath, "a" )) == NULL) {
          lr_output_message("Unable to create %s", filename);
          return -1;
     }
     
     id = 2;
     fprintf(file, "%d End  ", id);
     fclose(file);
         return 0;
}

上边的脚本其实很相类似只不过每个脚本中用one,two来标示每个用户(为了看到测试效果),我们这样做只是为了检测Controller如何调用脚本。
还有一点我在vu_end()加入代码,这是因为我们知道vuGen设置iteration的数值,实质是设置action的运行次数,也就是说只有运行action的iteration后才会运行vu_end。

一.设置iteration为1,在Controller中添加运行testfirst,testSecond脚本用户各一,运行结果如下:
logfile of virtual user id: 1 group: one
1 End  
logfile of virtual user id: 2 group: two
2 End
二.设置iteration为2,在Controller中添加运行testfirst,testSecond脚本用户各一,运行结果如下:
logfile of virtual user id: 2 group: two
logfile of virtual user id: 2 group: two
2 End  
logfile of virtual user id: 1 group: one
logfile of virtual user id: 1 group: one
1 End  

三.设置iteration为2,在Controller中添加运行testfirst,testSecond脚本用户各一,每隔1分钟加载1个用户,运行结果如下:
logfile of virtual user id: 1 group: one
logfile of virtual user id: 1 group: one
1 End  
logfile of virtual user id: 2 group: two
logfile of virtual user id: 2 group: two
2 End  

四.设置iteration为2,在Controller中添加运行testfirst,testSecond脚本用户各2,每隔1分
钟加载1个用户,运行结果如下:
logfile of virtual user id: 1 group: one
logfile of virtual user id: 1 group: one
1 End  
logfile of virtual user id: 2 group: two
logfile of virtual user id: 2 group: two
2 End
logfile of virtual user id: 1 group: one
logfile of virtual user id: 1 group: one
1 End
logfile of virtual user id: 2 group: two
logfile of virtual user id: 2 group: two
2 End  
五.设置iteration为2,在Controller中添加运行testfirst,testSecond脚本用户各2,设置每隔10秒加载1个用户并设置duration为40秒,运行结果如下:
logfile of virtual user id: 1 group: one
logfile of virtual user id: 1 group: one
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’省略
logfile of virtual user id: 1 group: one
2 End  
logfile of virtual user id: 2 group: two
logfile of virtual user id: 1 group: one
1 End  
logfile of virtual user id: 2 group: two
2 End  
logfile of virtual user id: 1 group: one
1 End  


以上对loadrunner的研究说明用户对应脚本,而不管他当前运行到什么状态。在第四中设置中很容易清晰的看出运行次序,可以说是从头运行到尾。(这么做只是为了研究,实际操作中情况千变万化,我只是为了测试结果清晰化)
你的三个问题从上边的试验可以得出结论,脚本影响实际程序的状态通过action脚本中运行的状态(如果你没有录制关闭页面脚本那么当前状态仍然是打开状态)。其实你设置的情况比较复杂了,我把几种不同的设置,所得出的运行结果都列举出来了。你可以自行研究。

你第一个问题 状态仍然是打开状态
你第二个问题 你的设置情况与我第五种试验设置一致,结论是仍然打开页面
你第三个问题 虚拟用户是针对loadrunner来说的,虚拟用户试和运行的机器有关系,你设置虚拟用户是为了把虚拟用户分布到不同的机器上,模拟现实世界,实际登陆用户是对你的测试软件来说的, 这是有区别的,要弄清楚概念。工具只是实现你测试目的的辅助手段,你所开发的脚本都是根据你的测试用例,在这个案例中你这么做有没有意义取决你选择的压力测试策略。如果现实中有这么做的,你就可以模拟!

我想这些测试试验可以帮助你了解iteration和虚拟用户设置对脚本调用的作用!
作者: sunshine_luo    时间: 2004-6-29 10:02
明白了,多谢版主!:d
作者: shiux    时间: 2005-1-7 19:37
得益匪浅
作者: soniczzzz    时间: 2005-1-11 11:13
写脚本好难啊
作者: javaasp109    时间: 2005-3-7 23:02
标题: up

作者: jacktian    时间: 2005-3-24 14:51
顶一个!!
作者: artbs    时间: 2005-3-31 11:27
例子很好,谢谢!
作者: maliry    时间: 2005-4-28 17:37
标题: 学习ing
学习ing
作者: zhuhai    时间: 2005-6-4 08:03
标题: 学习ing
学习ing
作者: sendy    时间: 2005-9-8 16:08
我是一个初学者,真的还得需要自己写脚本吗?好恐怖唉!版主所举的例子,真的是自己写的所谓的“脚本”吗?
作者: chenbaidu    时间: 2005-9-9 16:23
可惜我还没有看懂
作者: mojinde    时间: 2005-10-11 10:53
版主真行!
作者: cubef    时间: 2005-11-17 15:36
版本真厉害我看得似懂非懂.
作者: lgwmlx    时间: 2006-4-12 22:48
好,应该多有这样的例子,让我们从中获得更多的知识。
作者: elisly    时间: 2006-4-26 15:56
请问运行结果是从上到下还是从下到上看?
作者: shadowsxl    时间: 2006-4-29 12:56
有点不明白,要再学习学习。。。
作者: lfy123    时间: 2006-7-20 16:13
UP!
作者: qm1982    时间: 2006-8-1 13:43
学习!
作者: bingbingyang11    时间: 2006-11-28 12:03
版主的例子中第五个没看懂,但自己亲手执行了一下后,明白了!以前对这个概念的理解只是感性的,现在是理性的了,连看版主最后一句话都觉得是这么的经典!
呵呵,这么好的帖子就应该顶的!
作者: 李洁    时间: 2006-12-6 13:15
好帖子 顶一下
呵呵
可是大家有会分析性能测试图的吗 我新手 不懂
大家可以对controlller进行讨论
作者: hxxhhl    时间: 2006-12-11 16:12
mark,学习
作者: jingzi000    时间: 2006-12-26 16:10
对LR又有更多的了解,谢谢LZ
作者: dbg1314    时间: 2007-1-17 15:10
以下是我对三个问题的答案,大家看对不对?
1、在第2分钟,这20个用户是继续不断执行上述打开页面的脚本。
2、第5分钟结束,成功加载了100个用户,然后场景继续运行10分钟,在这10分钟中这100个用户应该是不断的执行上述录制的打开页面的脚本。
3、如果在controller中设置scheduling setting的duration时间,即使你vugen中设置iterations是无效的。按duration设置为准.
作者: picture    时间: 2007-3-30 15:36
帖子很不错,顶顶

[ 本帖最后由 picture 于 2007-3-30 15:54 编辑 ]
作者: rainzy1021    时间: 2007-4-13 11:33
支持一下!
作者: guxingyun    时间: 2007-4-16 22:23
好帖子 标注一下 运行研究
作者: baggio11    时间: 2007-4-17 17:08
学习sdlkfj3
作者: cssweb    时间: 2007-6-8 10:57
不错,学习东西了,很好啊
作者: corrine-li    时间: 2007-6-14 12:21
努力学习中。
作者: tqq2001    时间: 2007-6-21 10:24
dddddddddddd
作者: spartan    时间: 2007-6-25 18:19
原帖由 dbg1314 于 2007-1-17 15:10 发表
以下是我对三个问题的答案,大家看对不对?
1、在第2分钟,这20个用户是继续不断执行上述打开页面的脚本。
2、第5分钟结束,成功加载了100个用户,然后场景继续运行10分钟,在这10分钟中这100个用户应该是不断 ...



三个问题的答案是正确的, 我个人和你看法一致。
作者: yongminzhang    时间: 2007-7-23 15:40
up
作者: huangning    时间: 2007-7-28 16:17
原帖由 dbg1314 于 2007-1-17 15:10 发表
以下是我对三个问题的答案,大家看对不对?
1、在第2分钟,这20个用户是继续不断执行上述打开页面的脚本。
2、第5分钟结束,成功加载了100个用户,然后场景继续运行10分钟,在这10分钟中这100个用户应该是不断 ...

支持!!!
我认为是正确的,请LZ评分!!
作者: piaofei    时间: 2007-8-17 16:59
标题: 出错,求解决方法
将录制脚本controller中运行,报以下错误,该如何解决,求具体方法(此为测试内网服务器的一个前台操作)
1)Action.c(23): Error -27796: Failed to connect to server "100.10.0.37:8888": [10065] No Route to Host
2)Action.c(23): Error -26377: No match found for the requested parameter "OracleAppJSESSIONID2". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size
3)Action.c(23): Error -26377: No match found for the requested parameter "OracleAppJSESSIONID2". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size
作者: chenjuanMM    时间: 2007-8-27 16:04
sdlkfj2  高手!
作者: jenvee    时间: 2009-5-16 22:17
study thx share
作者: kuangquanshui    时间: 2009-5-18 11:05
标题: 回复 3# 的帖子
你的脚本我实验过了   我的结论是在Controller中如果脚本有迭代设置那会先按迭代的设置运行  然后按时间的设置运行  不知道我总结的对不对  还请管理员看看
作者: ericzhou2009    时间: 2011-1-5 14:19
得益匪浅
作者: muyunsihe    时间: 2012-5-23 17:59
谢谢版主
作者: lidanshow    时间: 2012-11-2 11:25
初学者。。。学习中




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