51Testing软件测试论坛

标题: 参数化结果 [打印本页]

作者: 423799223    时间: 2007-2-5 15:34
标题: 参数化结果
小弟初学QTP,请教下各位,我想做一个验证功能,需要输入单位代码、用户名、密码,然后登录,反复测试5000个帐号,小弟碰到些困难。
      先用QTP8.2录制一个成功的登录脚本,然后参数化单位代码、用户名、密码,参数化时选择全局表的,但是到了有错误的帐号时登录不成功,后面的就不执行了。我想让QTP在碰到错误的时候(就单纯指单位代码、用户名、密码有错误时)继续执行后面未执行的帐号,以验证哪些帐号是可用的,不至于中途退出,谢谢各位了,麻烦各位大哥大姐说详细些,小弟在此感谢。
      基本上参数化我会用,就是错误处理,小弟在问下,如果参数化时单纯的全局表,可以参数5000个么,如果不行,有别的方法么?

小弟在线等各位高手解答,谢谢了!

[ 本帖最后由 423799223 于 2007-2-5 15:35 编辑 ]
作者: wssgily    时间: 2007-2-5 16:05
你可以这样:如果有错误的话,是不是能够弹出提示或者对话框来,如果有的话,做一个IF判断后关掉这个对话框,然后将错误信息写入报告中。
第二个问题,我想最好是试一下。没有见到过这种情况。
作者: 423799223    时间: 2007-2-5 16:09
楼上的大哥
关键进我录制的脚本只是单纯的登录系统成功后再退出
里面并没有什么出错的东西
我怎么弄呢
麻烦您给一个仔细点的代码
谢谢
作者: wssgily    时间: 2007-2-5 16:12
你的意思是说没有任何的错误信息是吧.那在你出错的情况下是一种什么的情形呢.
作者: 423799223    时间: 2007-2-5 16:19
错误信息就是弹出一个窗口,内容大就是说用户名或者密码出错,然后非得我点击那个错误窗口的确定按钮,后面的就不执行了
    我想让QTP在出现这些错误时候自己点击这些错误,然后再继续执行后面的操作,最终给我一个完整的结果
    我也知道需要加一个判断,判断登录成不成功,关键是我不知道这个代码该怎么写
作者: hiyizhiyu    时间: 2007-2-5 16:21
首先,因为你录制的脚本是成功登陆的情况,所以它只能处理成功登陆的业务流程,但当你使用错误帐号登陆时,系统的响应应该是和成功登陆的流程不一样的,那脚本当然会报错了.至于如何在登陆错误的情况还能执行下面的参数,那就是你脚本要做的逻辑处理了,应该就只需要一个判断语句吧,正确时怎么处理,错误时又怎么处理

QTP的help中说明它的data table的max worksheet size是65536 rows by 256 columns,所以你5000个参数应该是可以处理的吧,呵呵,但我没有放过这么多数据,你试试吧
作者: 423799223    时间: 2007-2-5 16:22
楼上大哥
能不能说得具体些
是不是需要拆分两个Action
能不能给一段这样的代码看看
谢谢
或者录制脚本是怎么录制,麻烦教教,小弟初学
作者: hiyizhiyu    时间: 2007-2-5 16:26
"内容大就是说用户名或者密码出错,然后非得我点击那个错误窗口的确定按钮"
你把"点击那个错误窗口的确定按钮"这个动作录下来不就可以让QTP处理了
作者: hxa2010    时间: 2007-2-5 16:26
楼主可以考虑一下场景恢复或者直接提取文本框文本
作者: wssgily    时间: 2007-2-5 16:27
原帖由 423799223 于 2007-2-5 16:19 发表
错误信息就是弹出一个窗口,内容大就是说用户名或者密码出错,然后非得我点击那个错误窗口的确定按钮,后面的就不执行了
    我想让QTP在出现这些错误时候自己点击这些错误,然后再继续执行后面的操作,最终给 ...


这个问题不就是我刚才说的嘛!
我用伪码说一下思路:
   if 错误窗口存在
     then 点确定关闭错误窗口
            将错误账号信息写入到报告中
   else
            将正确账号信息写入到报告中
   end if
作者: 423799223    时间: 2007-2-5 16:29
这个明白了
还有一点 就是判断的时候不明白
我怎么判断登录成功和没成功呢
我知道点击“登录”按钮后如果出现第二个页面就是成功,出现错误就是没成功
关键是我不知道这个IF怎么判断 我想请楼上大哥拿一段代码来看看 谢谢
作者: wssgily    时间: 2007-2-5 16:32
原帖由 423799223 于 2007-2-5 16:29 发表
这个明白了
还有一点 就是判断的时候不明白
我怎么判断登录成功和没成功呢
我知道点击“登录”按钮后如果出现第二个页面就是成功,出现错误就是没成功
关键是我不知道这个IF怎么判断 我想请楼上大哥拿一段代 ...


登录成功和没成功 肯定界面是不一样的吧,自然窗口的属性也不一样的.
你可以判断如果出现某个窗体,就表示成功,反之则不成功啊。和刚才的思路是一样的
作者: 423799223    时间: 2007-2-5 16:33
************************
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("admin").Set "1"'输入错误的用户名
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("password").SetSecure "45c6e8579c308067"'输入错误的密码
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebButton("管理登陆").Click'点击登录按钮
Browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click'这个是错误揭示
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("admin").Set "admin1"'输入正确的用户名
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("password").SetSecure "45c6e862132d510269aa31d881c862ae"'输入正确的密码
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebButton("管理登陆").Click'点击登录按钮
Browser("尘封办公OA系统").Page("尘封办公OA系统_2").Frame("top").Link("退出系统").Click'登录成功,进行第二个页面,然后点击'“退出系统”
Browser("尘封办公OA系统").Page("尘封办公OA系统_3").Sync '回到登录页面
Browser("尘封办公OA系统").Close' 关闭IE
************************
以上是小弟录制的脚本
但是我就是不知道IF怎么写
麻烦你们把脚本修改下,谢谢大哥们了
作者: 423799223    时间: 2007-2-5 16:34
12楼大哥这个说法我听得清楚
我试试先
==
作者: wssgily    时间: 2007-2-5 16:40
if Browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").exist
  then Browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
else reporter.reportevent 0,"successful","成功"
end if

不知行不,你调一下,还有个问题是,如果出现错误信息点确定后,你的输入账户名和密码的文本框会不会自动清空,如果不能的话,你还要录一下,不然的话,你的下一条记录输入的话会提示错误的
作者: 423799223    时间: 2007-2-5 16:56
出现错误后,只会清除密码,不能清除用户名,还得手工指定焦点
您再看下我的这个脚本,登录失败时知道点击错误窗口的确定,但是登录成功后却不点击退出系统
*****************
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("admin").Set DataTable("name", dtGlobalSheet)
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("password").SetSecure DataTable("paw", dtGlobalSheet)
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebButton("管理登陆").Click
if Browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").exist then
   Browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
   reporter.ReportEvent 0,"successful","失败"
else
reporter.reportevent 0,"successful","成功"
Browser("尘封办公OA系统").Page("尘封办公OA系统_2").Frame("top").Link("退出系统").Click
end if
Browser("尘封办公OA系统").Page("尘封办公OA系统_3").Sync
Browser("尘封办公OA系统").Close
*****************
这是我的测试结果,用户名和密码已经参数化了

*****************
无标题测试 结果概要 : 未完成



测试: 无标题测试  
结果名: Res9
时区: 中国标准时间
运行开始时间: 2007-2-5 - 16:43:17
运行结束时间: 2007-2-5 - 16:43:25

循环编号  结果  
  
  
1  通过  
  
2  完成  



状态  次数  
  
通过 1
  
失败 0
  
警告 0


*****************
作者: wssgily    时间: 2007-2-5 17:04
reporter.ReportEvent  看看帮助,0和1是有区别的!
至于为什么不识别"退出系统",参考一下http://bbs.51testing.com/thread-64745-1-1.html
其实有很多问题,在论坛里都能找到解决方法的.
作者: 423799223    时间: 2007-2-5 17:21
还有个问题
QTP如果是先正确登录,就不再动了
麻烦楼上大哥帮忙看下代码,用户名和密码都已参数化
****************
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("admin").Set DataTable("name", dtGlobalSheet)
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("password").SetSecure DataTable("paw", dtGlobalSheet)
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebButton("管理登陆").Click
If   browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").Exist   then
        Browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
        reporter.ReportEvent 1,"successful","失败"
else
        reporter.ReportEvent 0,"successful","成功"
        Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("admin").Set DataTable("name", dtGlobalSheet)
        Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("password").SetSecure DataTable("paw", dtGlobalSheet)
        browser("尘封办公OA系统").Page ("尘封办公OA系统_2").Frame ("top").Link ("退出系统").Click
End If
Browser("尘封办公OA系统").Close
****************
我说下我的思路,先登录,登录后判断“If   browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").Exist   then”,如果有错误就点击“确定”,没错误就再输入用户名和密码,再点退出登录

我一开始用户名和密码是正确的,运行一下子到了IF那就不动了
作者: 423799223    时间: 2007-2-5 17:25
说白了就是IF这里没弄好
我自己也知道应该是这样的
*************
输入用户名和密码,点击登录
IF 用户名和密码不正确 THEN
    点击错误窗口中的确定按钮
ELSE
    点击退出登录
END IF
执行完所有的参数后,关闭IE
*************
我不知道执行完IF后怎么回到上面的输入用户名和密码窗口,用GOTO么
大哥麻烦教下 小弟万分感谢

这是我修改后的代码,怎么还是到了正确的用户名和密码登录成功后,没有点击退出登录呢
******************
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("admin").Set DataTable("name", dtGlobalSheet)
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebEdit("password").SetSecure DataTable("paw", dtGlobalSheet)
Browser("尘封办公OA系统").Page("尘封办公OA系统").WebButton("管理登陆").Click
If   browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").Exist   then
        Browser("尘封办公OA系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
        reporter.ReportEvent 1,"successful","失败"
else
        reporter.ReportEvent 0,"successful","成功"
        browser("尘封办公OA系统").Page ("尘封办公OA系统_2").Frame ("top").Link ("退出系统").Click
End If
Browser("尘封办公OA系统").Close
******************

[ 本帖最后由 423799223 于 2007-2-5 17:30 编辑 ]
作者: wssgily    时间: 2007-2-5 17:44
多动手调一下吧.这样说也说不清楚啊,大体思路对了就没有问题了.
还有你看看key view视图---右点你的action 点call properties 然后可以进行运行次数的设置.我记不太清楚具体位置了,反正你要实现你的datatable 表中的数据一条条执行的话,可以在那里面设置的,最好多多看看帮助。
看一遍帮助,你的很多问题都能解决的。

[ 本帖最后由 wssgily 于 2007-2-5 17:59 编辑 ]
作者: kevin_swpi    时间: 2007-2-6 10:28
呵呵
昨天晚上看了这个文章
然后就弄了个简单的登陆-提示-注销的流程
录制后按照LZ的思路进行了脚本的修改
结果也遇到了一样的问题
好好调试一下
下班前把利用空余时间搞定这个逻辑...

呵呵
作者: wslf    时间: 2007-2-6 13:24
我按照423799223 写的代码那样试验我们的程序,可以成功的哦
作者: 423799223    时间: 2007-2-6 14:37
不是的吧
我是用QTP8.2录制的
打了中文补丁的




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