-
典型压力测试方案 分享
2008-09-30 12:14:16
性能测试,目的就是为了测试系统是否达到预期指标。
比如:
1. 能保证5千用户同时在线。
2. 2百用户同时登录响应时间不超过8秒。
3. 1周内能处理完成3千份表单。
4. 在1年后是否上述指标的对比。
5. ……
需求因各人而异,万变不离其中。无非就是很多人去做很多事情,不同系统的处理和业务不尽相同。我们要做的,就是要分析系统运行过程中可能会出现的各种情况。然后,逐个去验证系统是否能应对这些情况。
抛开业务、逻辑,把整个过程简化:
图中“动作块”为与服务器交互的一个时间段,应用在具体业务里可以是一个用户的整个登录过程,也可以是某一个动作的响应过程。
“吞吐量”图中定义为单位时间内完成“动作块”的数量。
整个曲线描述了一段用户(动作)加压的过程,可以是一个系统的真实场景的一部分,也可以是测试过程的一个场景。
图中可以看出,随动作块的不断增多,动作块持续的时间不断变长。
那么,怎么衡量这个系统的性能呢?上图说明了以下三点:
A. 当动作块为一个动作时,动作块的长度即为响应时间,响应时间为一个衡量标准。
B. 吞吐量曲线图中没有划出来,吞吐量就是衡量系统处理能力的重要指标。
C. 并发数也是系统的一个处理能力,是为了保证系统能正常运行不被压垮。
得出这三个指标后,与系统的需求进行对比。如果各项指标都远超预期值,那么恭喜你,系统性能非常棒。
相反,如果这三个指标有(都)不能达到的,那么不多说,赶紧去调优吧。
还存在一种情况需要进一步分析的,各指标和预期值高出不多。
譬如:按最大吞吐量计算,系统有能力在规定的时间处理完规定的事情;系统能承受最大并发用户数。
但是,用户数最多的时候是否吞吐量也是最大呢?如果不是,差别有多远?
为什么要问这个问题?满足了还不够吗? 当然不行!若大用户量会导致吞吐量下降明显,那么可能会导致系统在指定时间不能完成任务喔。
这时,存在风险!建议先调优。此时需要对系统的真实运行情况进行评估:
* 若业务经常会集中处理(波峰波谷交替),那么系统真实运行时是达不到最大处理能力的。高风险!
* 若业务处理基本平缓(波动不明显),偶尔出现波峰,那么OK。低风险。
* 若情况比较复杂,应结合高压力下的吞吐量进行计算结合实际情况下给结论或建议。
* 若情况不清楚,那么风险也是很大的,还是尽量搞清楚吧。否则就不要下结论了,描述一下在指定条件的反应。
以上是我个人的心得体会,若有不正确的地方,欢迎批评指正。
也欢迎大家勇跃留言,发表自己的看法和意见。 -
[论坛] 求此流程的最少测试路径
2008-03-28 09:06:19
附件是一个业务流程图,图片说明:
1、正常流程是A到B到C,某些情况不需要经过B,直接从A到C。
2、如果过程中含有B,从C点就只能返回到B点,即只能ACA而没有ABCA流程。
3、E和F的返回点都是D。
4、当F点的数据达到某种情况时需要经过G点,否则直接结束。
右图按照“数圈法”有10个圈,V(G)=10?
如果按照节点法,从A到G中有个if判断,共8个节点,那么V(G)=9?
哪个正确?说说你的思路和答案吧!
按节点法,就要注意虚线部分喔:如果有虚线部分和没有虚线部分结果有何区别?
-
[论坛] Windows XP x64之初体验
2008-03-01 12:07:28
前不久,一时心血来潮下载了一个64位WinXP操作系统,想感受一下64位。
传说64位有快一些,能不图个新鲜吗?
刚开始用迅雷下载了一个英文版本,安装的时候才发现是“评估版”,而且误操作将我的80G硬盘给格式化了。
本机是40G+80G硬盘,40G为主盘。我想把系统装到80G上,然后选择了80G硬盘上的一个分区,安装的时候选择格式化此分区安装,居然把我80G整个硬盘给格式化了,分区全部没有了,奇怪!
然后我又进32位操作系统重新分区,下载了一个64位Win2003系统。再安装又把我的80G硬盘给格式化了,而且分区又一次没有了,不过这次系统是成功的安装上去了。但是传说中的驱动问题出现了,我装不上驱动,最重要的是网卡驱动!
最后我决定还是安装64位WinXP,下载了一个英文版本,这回可以正式版本。安装的时候都有问题:激活码不能用。我去网上抄了N多激活码,终于还是被我找到可以用的了。
在主板的官方网上下载了64位的主板驱动,安装完成后,成功安装驱动(摄像头驱动装不上)。速度感觉是很快,不过啥软件还没有装。
启动硬盘里所有32位程序,都出错,乱码!原来是英文系统在作怪,找到64位系统的汉化包,下载之。安装了汉化包后,界面都汉化了,应用程序也可以打开了。可是出现了一个致使问题,全部不能连接网络。查看网络设置都是正确了!
无意中发现,64位系统里开始菜单里有两个IE(Internet Explorer),一个是Internet Explorer 32位,另一个是Internet Explorer 64位。
神奇的事情又发生了,用“Internet Explorer 64位”打开网页,可以连接且正常显示;用Internet Explorer 32位不能连接网络;用32位其它浏览器都不能连接网络;QQ/MSN等都不能检测到网络;都提示网关验证失败。
就这样,都快到凌晨了,我需要休息了……
今早我写下了这一刻。 -
[论坛] ChildObject的使用方法(上传程序)
2008-02-18 15:41:30
打开 ChildObject.htm 出现一表单录入页面。
Page页面上有很多WebEdit
想直接使用Page的ChildObject方法,获取页面上的所有WebEdit然后操作。
思路:
使用childObject方法,查找某页面上的所有WebEdit元素,然后给所有WebEdit赋值。
对着QTP帮助,使用ChildObject总提示“类型不匹配”。ChildObject.rar
(2008-02-18 14:53:55, Size: 1.74 kB, Downloads: 88) -
[论坛] 发现QTP对象之WebElement的一个Bug
2008-01-08 14:52:06
网页里有多个WebElement对象,删除Index的识别属性,剩下innertext和html tag属性。
使用 WebElement("按钮1").SetTOPropert "innertext","按钮2"
结果 WebElement("按钮1").click 还是点到了“按钮1”上面,即使在对象库里修改按钮1的属性,结果也是一样。
打开对象库来验证这个问题:
使用“Highlight”来验证,仅修改"innertext"属性是不够的,必须把对象的名称也修改成“按钮2”才有效。
QTP的Bug?
之初我还不相信,当前版本8.2,赶紧安装了QTP9.0及QTP9.2,问题重现!
可以拿这个做试验: 测试程序.rar :http://bbs.51testing.com/attachment.php?aid=37774 -
[论坛] 图片与文字分离,如何设计重用性会好一点?
2008-01-07 10:56:29
如附图所示,某一Web程序,点击左边的菜单出现对应页面。
左边的菜单的顺序是手动配置的,是一图片加上文字说明,图片为连接,文字为显示说明。
普通的文字链接,可在脚本中修改对象库属性来实现脚本重用。
现在的问题是:工具识别的是图片的次序(index),而我们是想让工具去点击文字上的按钮。
如果仅用index来识别,那么脚本的重用性就很差了,改变了菜单的顺序,脚本就必须改写!
怎样让工具去点击我想要的按钮呢?
(附件《测试程序》为HTML文件)
Info.jpg
测试程序.rar
(2008-01-07 10:54:47, Size: 156 kB, Downloads: 888) -
[论坛] QTP调用VB6生成的DLL实例
2007-11-24 10:08:33
用QTP调用VB6生成的DLL实例,解压后用IE打开。
http://www.51testing.com/batch.download.php?aid=7448
用QTP调用VB6生成的DLL实例.rar
(2007-11-10 12:09:23, Size: 182 kB, Downloads: 36) -
[论坛] QTP调用WindowsAPI实例集
2007-11-24 10:07:33
QTP调用WindowsAPI实例集 ,解压后用IE打开。
http://www.51testing.com/batch.download.php?aid=7447
[ 本帖最后由 higkoo 于 2007-11-12 21:20 编辑 ]
QTP调用WindowsAPI实例集.rar
(2007-11-10 12:19:13, Size: 7.34 kB, Downloads: 249) -
[论坛] QTP调用VS2005生成的DLL
2007-11-24 10:07:00
QTP调用VS2005生成的DLL ,解压后用IE打开。
http://www.51testing.com/batch.download.php?aid=7446
[ 本帖最后由 higkoo 于 2007-11-12 21:22 编辑 ]
QTP调用VS2005生成的DLL.rar
(2007-11-10 12:25:33, Size: 794 kB, Downloads: 30) -
[论坛] QTP动作参数传递实例
2007-11-24 10:06:23
发掉了一个,关于QTP的Action之间参数传递的例子。
http://bbs.51testing.com/attachment.php?aid=34990
发此贴的源由:http://bbs.51testing.com/thread-96622-1-1.html
本是我以前的学习笔记,本来是用文件保存在我的邮箱里,前不久翻出来,就一个个的发到论坛上了。
却被2#、3#、6# 的朋友如此说教,真是心寒啊
[ 本帖最后由 higkoo 于 2007-11-22 16:50 编辑 ]
QTP动作参数.rar
(2007-11-11 20:42:43, Size: 220 kB, Downloads: 81)
info.JPG -
[论坛] QTP8.2中文帮助(F1)
2007-11-24 10:05:08
上传QTP中文帮助文件 共二个文件
[ 本帖最后由 higkoo 于 2007-8-20 11:25 编辑 ]
Info.JPG
help.part2.rar
(2007-08-20 09:35:32, Size: 484 kB, Downloads: 281) -
[论坛] QTP脚本维护的方法
2007-11-24 10:03:30
项目过程中,我们往往会录制很多操作。
很多操作是一样的,我们可以设置为可重用脚本。
操作很相似,但略有不同,我们可以给动作设置参数,或修改副本。
遇到QTP无法识别或识别错误的,可以尝试低级录制或模拟录制。
对于已知错误,我们可以做成虚拟对象抒以识别,记录到测试结果中。
我现在遇到一个很严峻的问题:
我录制了很多通用脚本,现在程序的标题改了
JavaWindow("程序原名称") 改为 JavaWindow("程序现名称")
脚本全部运行失败,因为对象库里根本就没有JavaWindow("程序现名称")。
而且其它对象都是基于JavaWindow("程序原名称")的,窗体的识别是靠它的title属性。
于是我用
JavaWindow("程序现名称").SetTOProperty "title","程序原名称"
脚本还是运行失败
如果要修改对象库里的属性,那可是个大工程啊!sdlkfj4
有没好的解决方案?sdlkfj7
1.JPG -
一睹Windows Server 2008 RC0
2007-11-21 13:02:25
一睹Windows Server 2008 RC0 -
LoadRunner之Block
2007-10-26 08:58:34
如何在一个脚本中实现不同事务不同次数的循环呢?
案例:假如你想在一个脚本中,实现登录执行1次,查询执行2次,插入执行3次,怎么办?录3个脚本?每个事务分别在脚本中复制N次?
当然不用,LR早就想到了你的需求,下面让我们隆重推出Block。
位置:
Run-time Settings--General--Run Logic
操作:
1.将你所要考察的事务设置在不同的Action内。
2.在Run Logic中的Run中删掉默认的Action。
3.在Run中插入Block。
4.在插入的Block中再插入我们要考察的Action。
5.设置Block的properties。这里有两种选择,Sequential和Random。如果选择Sequential,在下面的Iteration中直接填入数值,那么Block中的Action都会按输入的次数执行。如果选择Random,下面的properties还可以设置Block内各Action执行的百分比。
按照我们前面的案例,我们只需要设置3个Block,每个Block中分别插入一个Action,设置执行次数分别为1,2,3就可以了。 -
[论坛] 引用 web_reg_save_param 获得的值 动态生成数据
2007-10-16 16:43:58
代码:QUOTE:
int a;
char b[15],c[15];
//保存所有一级机构的OrgID
web_reg_save_param ("NewOrgID",
"LB/BIN=orgID=",
"RB/BIN=&module",
"ORD=All",
LAST);
web_url("orgAction.struts",
//这里可以获取一个XML文件,从中读取许多NewOrgID
LAST);
a = atoi(lr_eval_string ("{NewOrgID_count}"));
itoa(a,c,10);//将a变为字符串存到c里面
strcat(c,"}");
strcpy(b,"{NewOrgID_");
strcat(b,c);//将b和c连接起来
lr_save_string (b,"A");
lr_output_message ("a=%d,b=%s,c=%s,A=%s",a,b,c,lr_eval_string ("{A}"));
lr_output_message ("{NewOrgID_30}=%s",lr_eval_string ("{NewOrgID_30}")
lr_output_message ("Count: %d ,b: %s",atoi(lr_eval_string ("{NewOrgID_count}")),b);
//新增子机构
web_submit_data("orgAction.struts_1",
//这里添加新的子机构,要用到NewOrgID
LAST);
输出:QUOTE:
DepartMange.c(70): a=30,b={NewOrgID_30},c=30},A={NewOrgID_30}
DepartMange.c(71): {NewOrgID_30}= FAA91FB17BB93F538A091330129F8323
DepartMange.c(72): Count: 30 ,b: {NewOrgID_30}
问题:QUOTE:
已经读到了30个数据,取最后一个数据A是数据,且A={NewOrgID_30}。
但是lr_eval_string ("{NewOrgID_30}"与lr_eval_string ("{A}")结果不一样。
30在这里是已知的,运行后就是动态的,所以要使用参数A来传递。
scrīpt.rar
(2007-10-16 15:02:32, Size: 1.66 kB, Downloads: 888)问题解决:
请在文本框输入文字
int i,j;
char *MyID[90],m[40];
for (i=10;i<100;i++) {lr_save_int (i,"m");
web_submit_data(
"Value={m}");}
web_reg_save_param("IDS",
"LB=value=\"",
"RB=\"",
"ORD=All",
LAST);web_url("GetTree")
j=atoi(lr_eval_string ("{IDS_count}"));
lr_output_message ("j=%d",j);
if (j>90) { j=90;}
for (i=1;i<=j;i++) {
sprintf(m,"{IDS_%d}",i);
MyID[i-1]=lr_eval_string (m);
lr_output_message ("i=%d,j=%d,m=%s,MyID[%d]=,%s",i,j,m,i-1,MyID[i-1]);
}for (i=0;i<j;i++) {
lr_save_string (MyID[i],"SubID");
lr_output_message ("SubID=%s",lr_eval_string ("{SubID}"));web_submit_data(
"Value={SubID}");
} -
[论坛] 树结构的数据,批量做数据的方法
2007-09-19 23:03:27
LoadRunner的关联很头疼,下图所示。
动态生成数据,动态数据的捕捉一直是个难题。
以下阐明思路:
#define ID0 RootIDString; //ID0为根节点的ID,已知或可获取。
char *a[10]; //用于保存一级节点的ID。
char *b[10][20]; //用于保存二级节点的ID。
char *c[200]; //临时转化用。
int m,n,i,j; //临时变量for (m=1;m<11;m++) //获取第一层树节点的ID并存在a数组里。
{
submit("ID0","ID0"); //生成根节点的子节点,即一级节点。
lr_save_int(m,"Order"); //生成m个节点,ID就取第m个。
web_reg_save_param("FirstNode",
"LB=LeftString",
"RB=RightString",
"ORD={Order}",
LAST);
GetRequest(FromServer); //生成一节结点后,可以获取一级ID的第一个页面。
a[(m-1)]=lr_eval_string("{FirstNode}"); //将一级节点的ID存在数组a中。
}for (m=1;m<11;m++) //输出a数组,调试用。
{
lr_output_message("FirstNode %d : %s",m,a[(m-1)]);
}for (n=1;n<11;n++)
{
lr_save_string(a[n-1],"ID1"); //将数组a保存到参数ID1中。
for (i=1;i<21;i++)
{
submit("ID0","ID1"); //给一级节点加子节点,即添加二级节点。
lr_save_int(i,"Order"); //生成i个节点,ID就取第i个。
web_reg_save_param("SecondNode",
"LB=",
"RB=",
"ORD={Order}",
LAST);GetRequest(FromServer); //获取二级节点的ID。
b[(n-1)][i-1]=lr_eval_string("{SecondNode}"); //将二级节点的ID存在数组b中。
}
}m=0;//初始化
for (i=0;i<10;i++)
{
for (j=0;j<20;j++)
{
c[m]=b[i][j]; //把二级节点的ID转存的数组c中。
}
}for (i=0;i<200;i++) //给每个二级节点添加30个子节点。
{
lr_save_string(c[i],"ID2"); //将ID存到参数ID2中。for (j=0;j<30;j++)
{
submit("ID0","ID2"); //此循环可与上面循环重合。
}
}
Info.Jpg
Lr.c.doc
(2007-09-19 23:01:48, Size: 1.49 kB, Downloads: 0) -
LoadRunner {变量与参数} 的 {转化与输出}
2007-08-27 17:13:26
今天琢磨了一下LoadRunner的变量、参数的输出与相互转化的问题,写一例题:
/********** 参数和变量传递 ***********/
Variable( )
{char * ip = lr_get_vuser_ip();//获取当前用户的IP地址,保存在IP变量里。
char * gname = lr_get_host_name ();//获取当前用户的机器名,保存在GNAME变量里。if(ip)
/* 参数转变量 */ //RunTime是已定义的参数,下文也可以直接调用
lr_vuser_status_message("Ip地址: %s ,参数 : %s",ip,lr_eval_string("{RunTime}"));
else
lr_vuser_status_message("未启动IP欺骗……");/* 变量转参数 */
lr_save_string(gname, "GN" );//把变量IP存在“GN”参数里,下文可以直接用 {GN} 调用。/* 参数输出 */
web_submit_data("StatusReporter",
"Name=title", "Value={RunTime}", ENDITEM,
"Name=content", "Value={GN}", ENDITEM,
LAST);/* 变量输出 */
lr_output_message("当前IP地址: %s ",ip);lr_think_time(2); //停顿两秒便于观察。
return 0;
}
/*********************END***************************/这段代码,虽然很简单,但已含概了变量与参数的转化与输出。
-
LoadRunner批量录数日记一则
2007-08-24 12:18:20
做测试的,想偷点懒可真不容易。
前不久,使用QTP做了脚本批量录数,由于程序业务复杂,自定义控件较多,使用QTP录数速度很浪费时间。想用LR直接向服务器SUBMIT数据包,初次尝试失败,无法定制参数类型,脚本如下:
web_submit_data("info.struts",
"Action=http://testserver:9016/first/info.struts",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/html",
"Referer=http://testserver:9016/first/info.struts?actionType=toCreatePage&start=null&count=null",
"Snapshot=t53.inf",
"Mode=HTTP", ITEMDATA,
"Name=org.apache.struts.taglib.html.TOKEN", "Value=494979810de61a15f21e5bb6e91834ed", ENDITEM,
"Name=actionType", "Value=createInfo", ENDITEM,
"Name=type", "Value=0", ENDITEM,
"Name=state", "Value=1", ENDITEM,
"Name=subjectName", "Value=表格下载", ENDITEM,
"Name=hint", "Value=", ENDITEM,
"Name=title", "Value=表格下载 a1", ENDITEM,
"Name=issueDate", "Value=2007-07-07 07:07:07", ENDITEM,
"Name=newsType", "Value=HTML", ENDITEM,
"Name=nt", "Value=HTML", ENDITEM,
"Name=url", "Value=", ENDITEM,
"Name=showStyle", "Value=", ENDITEM,
"Name=content", "Value=表格下载 a1", ENDITEM,
"Name=content", "Value=", ENDITEM,
"Name=fileAttachment", "Value=E:\\Myfile.xls", "File=Yes", ENDITEM,
LAST);
录入同一类型,同样的内容
"Name=org.apache.struts.taglib.html.TOKEN", "Value=494979810de61a15f21e5bb6e91834ed", ENDITEM,
值都不一样,自动关联居然找不到关联。LR老是找到登录时的关联,每次都显示给我,郁闷!
而且每次自动关联似乎都停在vuser_init :(
手动关联,在录制日志里居然找不到“494979810de61a15f21e5bb6e91834ed”。找程序员:“这个值就是为了验证是否重复提交数据”。查看JAVA代码有一段
if checkToken=false ......
顿时大悟,在LR的SUMBIT把"Name=org.apache.struts.taglib.html.TOKEN" 行给注释掉,
添加这一行数据"Name=checkToken","Value=false",ENDITEM,执行参数化后的脚本,OK!
下一步,简化脚本,把所有无关的图片动画等资源下载动作都删掉,仅保留登录过程和SUBMIT。
因为我不需要测试性能,仅录数而已,做个循环让Vuser即可以搞定批量录数,使用场景控制当然同样可以做到。天空突然一下子都亮了……
-
[论坛] LoadRunner使用MercuryWebTours订机票的问题
2007-08-13 17:18:55
先使用默认的HTML模式录制 MercuryWebTours 订一个机票。
回放前,我取消了所有已订的机票。回放后已订列表里为空,订票没有成功。
回放日志有错误:
虚拟用户脚本已启动
正在开始操作 vuser_init。
Web Turbo 重播 LoadRunner 8.1.0 for WIN2003; Web 内部版本 4788 [MsgId: MMSG-27143]
运行时设置文件: "C:\Documents and Settings\higkoo\Temp\noname1\\default.cfg" [MsgId: MMSG-27141]
vuser_init.c(12): 在“http://testserver:1080/mercuryWebTours/”中检测到非资源“http://testserver:1080/mercuryWebTours/header.html” [MsgId: MMSG-26574]
vuser_init.c(12): 在“http://testserver:1080/mercuryWebTours/”中检测到非资源“http://testserver:1080/mercuryWebTours/welcome.pl?signOff=true” [MsgId: MMSG-26574]
vuser_init.c(12): 在 HTML“http://testserver:1080/mercuryWebTours/header.html”中找到资源“http://testserver:1080/mercuryWebTours/images/mercury_logo.gif” [MsgId: MMSG-26659]
vuser_init.c(12): 在“http://testserver:1080/mercuryWebTours/welcome.pl?signOff=true”中检测到非资源“http://testserver:1080/mercuryWebTours/nav.pl?in=home” [MsgId: MMSG-26574]
vuser_init.c(12): 在“http://testserver:1080/mercuryWebTours/welcome.pl?signOff=true”中检测到非资源“http://testserver:1080/MercuryWebTours/home.html” [MsgId: MMSG-26574]
vuser_init.c(12): 在 HTML“http://testserver:1080/MercuryWebTours/home.html”中找到资源“http://testserver:1080/MercuryWebTours/images/fma-gateway.jpg” [MsgId: MMSG-26659]
vuser_init.c(12): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?in=home”中找到资源“http://testserver:1080/MercuryWebTours/images/mer_login.gif” [MsgId: MMSG-26659]
vuser_init.c(12): web_url("mercuryWebTours") 已成功,52181 个正文字节,1566 介标头字节 [MsgId: MMSG-26386]
正在结束操作 vuser_init。
正在运行 Vuser...
正在开始迭代 1。
警告 -27077: “每次迭代模拟一个新用户”运行时设置为“开”时,“vuser_init”节将包含 Web 函数。这可能会产生具有多次迭代的不可预测结果 [MsgId: MWAR-27077]
正在开始操作 Login。
Login.c(6): web_submit_data("login.pl") 已成功,748 个正文字节,225 介标头字节 [MsgId: MMSG-26386]
正在结束操作 Login。
正在开始操作 Flights。
Flights.c(6): 在“http://testserver:1080/mercuryWebTours/welcome.pl?page=search”中检测到非资源“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights” [MsgId: MMSG-26574]
Flights.c(6): 在“http://testserver:1080/mercuryWebTours/welcome.pl?page=search”中检测到非资源“http://testserver:1080/mercuryWebTours/reservations.pl?page=welcome” [MsgId: MMSG-26574]
Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”中找到资源“http://testserver:1080/MercuryWebTours/images/in_flights.gif” [MsgId: MMSG-26659]
Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”中找到资源“http://testserver:1080/MercuryWebTours/images/itinerary.gif” [MsgId: MMSG-26659]
Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”中找到资源“http://testserver:1080/MercuryWebTours/images/home.gif” [MsgId: MMSG-26659]
Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”中找到资源“http://testserver:1080/MercuryWebTours/images/signoff.gif” [MsgId: MMSG-26659]
Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/reservations.pl?page=welcome”中找到资源“http://testserver:1080/mercuryWebTours/images/fma-products.jpg” [MsgId: MMSG-26659]
Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/reservations.pl?page=welcome”中找到资源“http://testserver:1080/MercuryWebTours/images/button_next.gif” [MsgId: MMSG-26659]
Flights.c(6): web_url("welcome.pl") 已成功,36126 个正文字节,1668 介标头字节 [MsgId: MMSG-26386]
Flights.c(17): 警告 -26548: 未对内容类型“*/*”执行 HTML 分析(“ParseHtmlContentType”运行时设置为“TEXT”)。URL=“http://testserver:1080/mercuryWebTours/FormDateUpdate.class” [MsgId: MWAR-26548]
Flights.c(17): web_url("FormDateUpdate.class") 最高严重级别为“warning”,3058 个正文字节,159 个标头字节 [MsgId: MMSG-26388]
Flights.c(25): 警告 -26548: 未对内容类型“*/*”执行 HTML 分析(“ParseHtmlContentType”运行时设置为“TEXT”)。URL=“http://testserver:1080/mercuryWebTours/CalSelect.class” [MsgId: MWAR-26548]
Flights.c(25): web_url("CalSelect.class") 最高严重级别为“warning”,227 个正文字节,158 个标头字节 [MsgId: MMSG-26388]
Flights.c(33): 警告 -26548: 未对内容类型“*/*”执行 HTML 分析(“ParseHtmlContentType”运行时设置为“TEXT”)。URL=“http://testserver:1080/mercuryWebTours/Calendar.class” [MsgId: MWAR-26548]
Flights.c(33): web_url("Calendar.class") 最高严重级别为“warning”,3018 个正文字节,159 个标头字节 [MsgId: MMSG-26388]
Flights.c(43): 资源“http://testserver:1080/mercuryWebTours/images/fma-products.jpg”已在缓存中,不会再次下载 [MsgId: MMSG-26655]
Flights.c(43): 资源“http://testserver:1080/MercuryWebTours/images/button_next.gif”已在缓存中,不会再次下载 [MsgId: MMSG-26655]
Flights.c(43): web_submit_data("reservations.pl") 已成功,3366 个正文字节,253 介标头字节 [MsgId: MMSG-26386]
Flights.c(69): 将表单提交到“http://testserver:1080/mercuryWebTours/reservations.pl”,目标帧=“” [MsgId: MMSG-27978]
Flights.c(69): 资源“http://testserver:1080/mercuryWebTours/images/fma-products.jpg”已在缓存中,不会再次下载 [MsgId: MMSG-26655]
Flights.c(69): 资源“http://testserver:1080/MercuryWebTours/images/button_next.gif”已在缓存中,不会再次下载 [MsgId: MMSG-26655]
Flights.c(69): web_submit_form("reservations.pl_2") 已成功,2560 个正文字节,253 介标头字节 [MsgId: MMSG-26386]
Flights.c(80): 将表单提交到“http://testserver:1080/mercuryWebTours/reservations.pl”,目标帧=“” [MsgId: MMSG-27978]
Flights.c(80): 资源“http://testserver:1080/mercuryWebTours/images/fma-products.jpg”已在缓存中,不会再次下载 [MsgId: MMSG-26655]
Flights.c(80): 在 HTML“http://testserver:1080/mercuryWebTours/reservations.pl”中找到资源“http://testserver:1080/MercuryWebTours/images/bookanother.gif” [MsgId: MMSG-26659]
Flights.c(80): web_submit_form("reservations.pl_3") 已成功,3276 个正文字节,450 介标头字节 [MsgId: MMSG-26386]
Flights.c(98): 错误 -27987: 找不到请求的图像 [MsgId: MERR-27987]
Flights.c(98): web_image("SignOff Button") 最高严重级别为“ERROR”,0 个正文字节,0 个标头字节 [MsgId: MMSG-26388]
正在结束操作 Flights。
正在结束迭代 1。
正在结束 Vuser...
正在开始操作 vuser_end。
正在结束操作 vuser_end。
Vuser 已终止。
我查了帮助:
Message Code 26548 HTML parsing not performed for Content-Type 'content-type' ("ParseHtmlContentType" Run-Time Setting is 'setting'). URL='URL'把录制模式改成URL,回放没有出错,但机票还是没有订成功,回放日志:
虚拟用户脚本已启动
正在开始操作 vuser_init。
Web Turbo 重播 LoadRunner 8.1.0 for WIN2003; Web 内部版本 4788 [MsgId: MMSG-27143]
运行时设置文件: "C:\Documents and Settings\higkoo\Temp\noname3\\default.cfg" [MsgId: MMSG-27141]
vuser_init.c(12): web_url("mercuryWebTours") 已成功,326 个正文字节,164 介标头字节 [MsgId: MMSG-26386]
vuser_init.c(21): web_concurrent_start 成功 [MsgId: MMSG-26392]
vuser_init.c(23): 注册 web_url("header.html") 成功 [MsgId: MMSG-26390]
vuser_init.c(32): 注册 web_url("welcome.pl") 成功 [MsgId: MMSG-26390]
vuser_init.c(41): web_concurrent_end 已成功,969 个正文字节,488 介标头字节 [MsgId: MMSG-26386]
vuser_init.c(43): web_url("mercury_logo.gif") 已成功,1369 个正文字节,165 介标头字节 [MsgId: MMSG-26386]
vuser_init.c(51): web_concurrent_start 成功 [MsgId: MMSG-26392]
vuser_init.c(53): 注册 web_url("home.html") 成功 [MsgId: MMSG-26390]
vuser_init.c(62): 注册 web_url("nav.pl") 成功 [MsgId: MMSG-26390]
vuser_init.c(71): web_concurrent_end 已成功,2767 个正文字节,418 介标头字节 [MsgId: MMSG-26386]
vuser_init.c(73): web_url("fma-gateway.jpg") 已成功,46063 个正文字节,167 介标头字节 [MsgId: MMSG-26386]
vuser_init.c(81): web_url("mer_login.gif") 已成功,679 个正文字节,164 介标头字节 [MsgId: MMSG-26386]
正在结束操作 vuser_init。
正在运行 Vuser...
正在开始迭代 1。
警告 -27077: “每次迭代模拟一个新用户”运行时设置为“开”时,“vuser_init”节将包含 Web 函数。这可能会产生具有多次迭代的不可预测结果 [MsgId: MWAR-27077]
正在开始操作 Action。
Action.c(6): web_submit_data("login.pl") 已成功,748 个正文字节,225 介标头字节 [MsgId: MMSG-26386]
Action.c(22): web_concurrent_start 成功 [MsgId: MMSG-26392]
Action.c(24): 注册 web_url("nav.pl_2") 成功 [MsgId: MMSG-26390]
Action.c(33): 注册 web_url("login.pl_2") 成功 [MsgId: MMSG-26390]
Action.c(42): web_concurrent_end 已成功,2328 个正文字节,478 介标头字节 [MsgId: MMSG-26386]
Action.c(44): web_concurrent_start 成功 [MsgId: MMSG-26392]
Action.c(46): 注册 web_url("flights.gif") 成功 [MsgId: MMSG-26390]
Action.c(54): 注册 web_url("in_home.gif") 成功 [MsgId: MMSG-26390]
Action.c(62): 注册 web_url("signoff.gif") 成功 [MsgId: MMSG-26390]
Action.c(70): 注册 web_url("itinerary.gif") 成功 [MsgId: MMSG-26390]
Action.c(78): web_concurrent_end 已成功,2898 个正文字节,656 介标头字节 [MsgId: MMSG-26386]
Action.c(80): web_url("fma-performance-center.jpg") 已成功,27000 个正文字节,167 介标头字节 [MsgId: MMSG-26386]
正在结束操作 Action。
正在开始操作 Flights。
Flights.c(6): web_url("welcome.pl_2") 已成功,564 个正文字节,175 介标头字节 [MsgId: MMSG-26386]
Flights.c(15): web_concurrent_start 成功 [MsgId: MMSG-26392]
Flights.c(17): 注册 web_url("reservations.pl") 成功 [MsgId: MMSG-26390]
Flights.c(26): 注册 web_url("nav.pl_3") 成功 [MsgId: MMSG-26390]
Flights.c(35): web_concurrent_end 已成功,5464 个正文字节,506 介标头字节 [MsgId: MMSG-26386]
Flights.c(37): web_concurrent_start 成功 [MsgId: MMSG-26392]
Flights.c(39): 注册 web_url("in_flights.gif") 成功 [MsgId: MMSG-26390]
Flights.c(47): 资源“http://testserver:1080/MercuryWebTours/images/itinerary.gif”已在缓存中,不会再次下载 [MsgId: MMSG-26655]
Flights.c(55): 注册 web_url("home.gif") 成功 [MsgId: MMSG-26390]
Flights.c(63): 资源“http://testserver:1080/MercuryWebTours/images/signoff.gif”已在缓存中,不会再次下载 [MsgId: MMSG-26655]
Flights.c(71): web_concurrent_end 已成功,1414 个正文字节,328 介标头字节 [MsgId: MMSG-26386]
Flights.c(73): web_concurrent_start 成功 [MsgId: MMSG-26392]
Flights.c(75): 注册 web_url("fma-products.jpg") 成功 [MsgId: MMSG-26390]
Flights.c(83): 注册 web_url("button_next.gif") 成功 [MsgId: MMSG-26390]
Flights.c(91): web_concurrent_end 已成功,27200 个正文字节,331 介标头字节 [MsgId: MMSG-26386]
Flights.c(95): web_url("FormDateUpdate.class") 已成功,3058 个正文字节,159 介标头字节 [MsgId: MMSG-26386]
Flights.c(103): web_url("CalSelect.class") 已成功,227 个正文字节,158 介标头字节 [MsgId: MMSG-26386]
Flights.c(111): web_url("Calendar.class") 已成功,3018 个正文字节,159 介标头字节 [MsgId: MMSG-26386]
Flights.c(119): web_submit_data("reservations.pl_2") 已成功,2312 个正文字节,253 介标头字节 [MsgId: MMSG-26386]
Flights.c(142): web_submit_data("reservations.pl_3") 已成功,2539 个正文字节,253 介标头字节 [MsgId: MMSG-26386]
Flights.c(159): web_submit_data("reservations.pl_4") 已成功,2388 个正文字节,286 介标头字节 [MsgId: MMSG-26386]
Flights.c(187): web_url("bookanother.gif") 已成功,806 个正文字节,164 介标头字节 [MsgId: MMSG-26386]
正在结束操作 Flights。
正在结束迭代 1。
正在结束 Vuser...
正在开始操作 vuser_end。
正在结束操作 vuser_end。
Vuser 已终止。
How could I do next ? -
[论坛] 上传一个小测试程序
2007-08-09 12:51:33
附件是一个小程序,学习QTP或其它功能测试工具,试验、练手很有用的。
小测试程序
testApp.rar
(2007-08-08 15:32:15, Size: 232 kB, Downloads: 10)
Just do it.
标题搜索
我的存档
数据统计
- 访问量: 247840
- 日志数: 56
- 图片数: 1
- 文件数: 18
- 建立时间: 2007-01-10
- 更新时间: 2008-09-30