QTP使用技巧收集
上一篇 / 下一篇 2008-12-11 12:05:49 / 个人分类:功能测试
这是从别的网上找来的,这些内容对我有很大的帮助,所以我就把它粘来了,以备不时之需。。
1.runaction后面能不能接变量(动态调用action,所以从数据库取数据做action名字了,但是调用总是找不到)?
i*k^p#u7x3t.v0A:脚本中原有RunAction "testbase [case1]", oneIteration
Jk u(I BD*QL0把引号中的内容放到Global表中的第22行,然后将代码修改为:51Testing软件测试网(|5u+Q}-b&a*F"`6sU
datatable.getsheet("Global")
&}G"f'O/Ze0 datatable.setcurrentrow(22)
strLogin=DataTable("ActionName","Global")
2I n_(Ri6sN0RunAction strLogin, oneIteration 51Testing软件测试网/e&VH4V2R)nw
help中也有相关帮助51Testing软件测试网J{I#i!r4QH
如:51Testing软件测试网-{l!`x,n QK
Syntax51Testing软件测试网#L_.sA,S
RunAction ActionName, [IterationMode , IterationRange , Parameters]
_G'{z.S2LL0 ActionName : String : The name of the action
2.QTP8.2中调用VB函数的问题(用VBscrīpt写了一些测试脚本需要的几个通用函数,有没有办法可以用类似include的方式进行调用,而不需要每次都把这些函数Copy到新的脚本中)?51Testing软件测试网\ ww?dyFj$D
A:程序开头加上ExecuteFile "..\..\..\project\DeVariable.vbs"
3.QTP如何做回归测试(300多个TestCase,TD是否可以管理)?
H$rua;h0A:TD可以实现,可以生成测试集,一个测试集可以包含若干个测试脚本51Testing软件测试网&P)F!c7tJi f[;Z/E9G#M
QTP8.2本身提供一个工具TestBatch Runner但是运行完没有报告。51Testing软件测试网-_/U${^0xa%p
MI有另一个工具叫MTM(multitestmanager) 51Testing软件测试网8n7c)YV6j zg#}
5.在QTP中如何设置使用别的浏览器(XP系统,用IE访问程序时,每次总提示屏蔽安装ActiveX插件,需要手动安装.但把这个过程录制到QTP后,回放一次是成功的。当我给某个输入框参数化了好多数据后,回放过程中,某些就会失败.
&RE L5^,|$f8?1fc9@0可能有两个方面可以解决这问题1、每个动作设置延迟时间2、设置为用别的浏览器。)51Testing软件测试网KU;Y6_"Cg
(失败的提示信息是 object not visible)51Testing软件测试网){%C}X ~*MJ
A:1.延迟可用WAIT X(X单位是秒)51Testing软件测试网^^W;U;O)y;Un
2.可以安装插件添加新的浏览器51Testing软件测试网0T(k(q3oJ S
SystemUtil.Run "file” "params" "dir" "op'' "mode"
D2\Z8W#zPV^8k]:xq0QTP运行可执行文件的方法及其参数
s#{z R1rH-M0 ps:建议是用IE浏览器,或者IE内核浏览器做测试
6.checkpoint检查网页,是否能实现只要网页出现乱码就返回错误报告?
F_A7s%AF(w0A:Text not displayed能解决问题51Testing软件测试网#e-DRHh+U
关于Text Checkpoint的总结。
q B`)q:BBP0vG01)Text Checkpoint的检查部分分为三个部分。Checked Text、Text Before、Text After。在默认的情况下,Checked Text执行的是精确检查,其余两个部分执行的是模糊检查。Text Before(After)检查的内容可以比实际的内容少。但是不能有和是实际内容不相符的地方,否则就失败。
)g#]JH x$C5G'W02) Exact match选项。如果选择了这个选项,三部分完全都进行精确检查。个人觉得和只检查checked Text部分没有区别。
8qnm'zuOh(czph0 3) Text not displayed。这个选项本质上就是一个结果取反的过程。就是把检查的结果给反过来,把pass变成Fail,Fail变成pass。我觉得这样就很容易理解。
7.WSH的应用方法
hdyS:P7d0 A:WSH实际上是一个脚本语言的运行环境,它之所以具备强大的功能,是在于其充分挖掘了脚本语言的潜力。因此,如果抛开脚本语言而空谈WSH,那实际上就没有了意义。而如果再展开来讲述脚本语言,显然就离开了今天的主题。
在这种情况下,只好采取一种折衷的方法:给大家推荐几个脚本文件利用WSH执行任务的实例,希望大家能通过这些例子对WSH的使用有一个初步的认识。
脚本文件的编写十分方便,你可以选用任意一个文字编辑软件进行编写,编写完成后,只需将它保存为WSH所支持的文件名就可以了(如.js文件和.vbs文件)。最常用的就是记事本编辑器,下面的实例都是以它作为工具编写的。
打开记事本编辑器,在上面编写如下内容:
\$|*}&ND @/N0Wscrīpt.Echo("走近WSH")51Testing软件测试网X[f'r YC.A
将它保存为以.vbs或.js为后缀名(千万不要写成了.txt)的文件并退出记事本。双击执行这个文件。
h0t FA~&a~pG0这一次,我们要利用WSH完成一次创建十个文件夹的工作。代码如下:
Re7I3wl+[1Tc0dim objdir51Testing软件测试网tO'D yi0Pk6J
setōbjdir=wscrīpt.createobject("scrīpting.filesystemobject")51Testing软件测试网X"b ] mF$G+I
for k=1 to 1051Testing软件测试网#Pj NcG%aWi
anewfolder="c:\chapter" & k
YBS W Vig{S$}0objdir.createfolder(anewfolder)51Testing软件测试网'P/P2n\cw{
next
同样,将它存为.vbs文件并退出。运行后,我们会发现,C盘根目录下一次性多出了十个新文件夹。
最后,再举一个在服务器上的运用。下面的代码将帮助你重新启动指定的IIS服务: ' define a constant for stopped services51Testing软件测试网)F!{eo:~ ~N3P
Const ADS_SERVICE_STOPPED = 1
' get an ADSI object for a computer51Testing软件测试网LI@5?;YX&S4_5@#p-t
SetōbjComputer = GetObject("WinNT://MYCOMPUTER,computer")
' get an object for a service
pFf[)B oi0 SetōbjService = objComputer.GetObject("Service","MYSERVICE")
' check to see if the service is stopped
)as^ n8xp7~0 If (objService.Status = ADS_SERVICE_STOPPED) Then
' if the service is stopped, then start it51Testing软件测试网1Z LF i6M.Rzax[Dx
objService.Start
End If
将它以startsvc.vbs为名保存在C:盘根目录。并通过如下命令执行:Cscrīpt C:\STARTSVC.VBS。运行后,经你指定的IIS服务项将被重新开启。
其实,在Windows的samples目录下,有个WSH文件夹,那里面有不少很具代表性的.vbs和. js脚本文件。
此外,利用WSH还可以自己编写脚本文件来提高网络管理方面的效率。
8.从EXCEL中导出数据进行测试
datatable.AddSheet("51sheet")51Testing软件测试网Z1UI,H0x6q,y"m
datatable.ImportSheet "f:\test.xls","testsheet","51sheet"
Dim i,RowCount '定义两个变量
y.~+S c*I;_i0i=051Testing软件测试网t6Ef[dG&Me
RowCount=datatable.GetSheet("51sheet").GetRowCount '设置RowCount等于51sheet中的行数。51Testing软件测试网$in8ftk
msgbox RowCount
!{8t8qj$HQ,c0A0Do while i<rowcount
"ze-U:miR[;~"V1h0i=i+1 '第一次进入循环,执行这句后,i=1
e w0`@j)Nr0'datatable.getsheet("51sheet").setcurrentrow(i) 这句话被我注释掉了,正确的写法应该是下面这样,分开写。
datatable.getsheet("51sheet")
\6W3{ `C\7s0datatable.setcurrentrow(i)
'执行过上面两句后,CurrentRow是第一行。
tempData=DataTable.GetSheet("51sheet").GetParameter("Name").Value 51Testing软件测试网s/wH!U-bz[2h
'现在,我们调用msgbox看看下面这种调用方法得到的是什么值?没错,是第一行的值,下一次循环呢?51Testing软件测试网:["p,WV.iv4F/s
'得到的是第二行的值么?51Testing软件测试网p'~$o{K2M!h `
msgbox "GetParameter-Name:"&tempData '这里弹出我们要看的值。
;DW d EBd0'下面我们用另外一种方法来得到。51Testing软件测试网6U1n_oG4j-J
msgbox "GetParameter-i:"&DataTable.GetSheet("51sheet").GetParameter(1).Value '这里我用GetParameter(1)去得到sheet中第一列的值。51Testing软件测试网lH5L d1v
loop
9.关于dtGlobalsheet与dtLocalsheet
1) dtGlobalsheet只有一个,它的index值比较特殊,它有两个index值,一个是1还有一个是内置的默认的1000。
;`B/Ne:HPt&tJ+FA2Z0你可以用1或者1000去引用它都是正确的。当然了,如果你用dtGlobalsheet来引用它也是正确的。这个sheet的Name叫做"Global"。注意:SheetName是区分大小写的。51Testing软件测试网M1C u7|i
2) dtLocalsheet可以用index:1001来引用,当然,也可以用2来引用。至于其它自定义的sheet嘛,你就只能用index:3来引用了。51Testing软件测试网:t xAlm @E
它没有内置的默认的类似前两个那样的index值。
!z+~Tft(K$p2E.e03) datatable这个对象只有一个。就是所有sheet的集合。或许你把它理解为excel文件比较好。
t D{"Vo0dtsheet呢?就是其中的每个sheet。所不同的就是MI为他们做了一些默认值。在我们的应用中,可能会有多个action,如:actiion1,actiion2,actiion351Testing软件测试网lKYNcW&lc1KD(y
这些action也分别对应有各自默认的LoaclSheet.即:actiion1,actiion2,actiion3。
如果每个action中,我们都只用到一个sheet,那就好办了,在每个action中都可以用localsheet来引用,但是如果我们有两个及两个以上的sheet.那么就比较容易乱套了。
10.移动当前位置的行