QTP

来源:互联网 发布:淘宝怎样设置自动回复 编辑:程序博客网 时间:2024/05/22 12:46
软件功能自动测试工具。
1)QTP是一个侧重于功能的回归自动化测试工具
2)QTP支持的脚本语言是VBScript
3)QTP支持录制和回放的功能。
4)一个有用的工具:ObjectSpy,可以用来查看Run-time object和Test object属性和方法。
5)QTP通过三类属性来识别对象:a)Mandatory; b)Assitive; c)Ordinalidentifiers。
6)Object Repository(OR)是QTP存储对象的地方。
7)Action是QTP组织测试用例的具体形式,拥有自己的DataTable和Object Repository,支持Input和output参数。
8)如3)所述,一个test中,多个action的流程组织,只有通过Keyword视图查看和删除,在Expert视图中没有办法看到。
9)调用Action可以通过菜单Insert->Callto *** 来实现。
10)QTP提供excel 形式的数据表格DataTable,可以用来存放测试数据或参数。
11)环境变(EnvironmentVariables)。
12)QTP可以引用外部的VBS代码库
13)QTP默认为每个test提供一个测试结果,包括Passed,Failed,Done,Warning和information几种状态类型

VBScript:
单引号设置备注,双引号进行使用
1          设置脚本间的间隔时间
Wait(2),单位:秒
2          循环语句while
i=0
do while(i<10)
Window("Opera").Restore
Window("Opera").WinObject("OperaWindowClass").Click 446,232
Window("Opera").WinObject("OperaWindowClass").Click 461,278
i=i+1
loop
3         循环语句for
For i=1 to 3
       Window("Opera").Restore
Window("Opera").WinObject("OperaWindowClass").Click 446,232
Window("Opera").WinObject("OperaWindowClass").Click 461,278
Next
4          判断语句
Do while(i<20)
Browser("XX项目").Page("XX项目").Frame("wap").Link("啤酒").Click
wait(2)
Browser("XX项目").Page("XX项目").Frame("wap_2").Link("商铺详情").Click
wait(2)
i=i+1
If i=5 Then
       Exit do
End If
Loop
5          With语句
Do while(i<20)
With Browser("XX项目")
.Page("XX项目").Frame("wap").Link("生活家居").Click
.Page("XX项目").Frame("wap_5").Link("出租(火爆招租中)").Click
.Page("XX项目").Sync
With .Page("XX项目")
.Frame("wap_6").Image("image").Check CheckPoint("image")'检查点
.Frame("wap_6").Link("返回XX首页").Click
.Sync
.Frame("wap").Check CheckPoint("生活家居")'检查点
End with
End with
i=i+1
If i=3 Then
    i=21
End If
Loop
6         检查点
Browser("XX项目").Page("XX项目").Frame("wap").Link("生活家居").Click
Browser("XX项目").Page("XX项目").Frame("wap_5").Link("出租(火爆招租中)").Click
Browser("XX项目").Page("XX项目").Sync
Browser("XX项目").Page("XX项目").Frame("wap_6").Image("image").Check CheckPoint("image")'检查点
Browser("XX项目").Page("XX项目").Frame("wap_6").Link("返回XX首页").Click
Browser("XX项目").Page("XX项目").Sync
Browser("XX项目").Page("XX项目").Frame("wap").Check CheckPoint("生活家居")'检查点
7          引用函数
Function  hjq(i)
   msgbox("hjq")
End Function
 
Do while(i<20)
'开始
Browser("XX项目").Page("XX项目").Frame("wap").Link("啤酒").Click
wait(2)
Browser("XX项目").Page("XX项目").Frame("wap_2").Link("商铺详情").Click
'详情
i=i+1
If i=3 Then
    i=21
End If
Call hjq(i)
Loop
8          引用action
录制action1,在step->action properties中设置该action为reuseable action
录制action2,在inser->call to exiting action,选择action1
OK
9          参数化
在keyword view中设置对象的value为参数,并设置值
With Browser("XX项目_2").Page("XX项目")
       With .Frame("wap_2")
              .WebEdit("key").Set "1"
              .WebButton("搜").Click
       End With
       .Frame("wap_3").Link("重新搜索").Click
       With .Frame("wap")
              .WebEdit("key").Set DataTable("p_Text", dtGlobalSheet)
              .WebButton("搜").Click
       End With
       .Sync
End With
10      Vbs随机读取一行文本内容
'随机读取文件中的一行
randomize 
set fso=createobject("scrīpting.filesystemobject")  '创建文件系统对象
set a=createobject("scrīpting.dictionary")  '类似于二维数组
set file=fso.opentextfile("D:\hjq.txt")  '打开文件
do while file.atendofstream<>true 
m=m+1  'm记录文件中文本行数
a.add m,file.readline  'file.readline读取某行记录
loop 
file.close  '关闭文件
h=int(rnd*m) 
msgbox "第" & h & "行:  " & a(h) ,4096,"随机内容"
msgbox "第1行:  " & a(1) ,4096,"内容"
msgbox "第2行:  " & a(2) ,4096,"内容"
msgbox "第3行:  " & a(3) ,4096,"内容"
11      二维数组的使用
set a=createobject("scrīpting.dictionary")  '类似于二维数组
a.add 0,"返回XX首页"
a.add 1,"返回XX首页"
a.add 2,"返回XX首页"
a.add 3,"返回XX首页"
 
For i=0 to 3
 
With Browser("XX项目").Page("XX项目")
       With .Frame("wap")
              .WebEdit("key").Set "1"
              .WebButton("搜").Click
       End With
       .Frame("wap_2").Link(a(i)).Click
       .Sync
End With
Next
12      从文件读取文本,并赋予参数
set fso=createobject("scrīpting.filesystemobject")  '创建文件系统对象
set a=createobject("scrīpting.dictionary")  '类似于二维数组
set file=fso.opentextfile("D:\hjq.txt")  '打开文件
wait(2)
do while file.atendofstream<>true
With Browser("XX项目").Page("XX项目")
       With .Frame("wap")
              .WebEdit("key").Set  file.readline
              .WebButton("搜").Click
       End With
       .Frame("wap_2").Link("返回XX首页").Click
       .Sync
End With
loop 
file.close  '关闭文件
13      读取csv文件并分割字符串
Dim aasplit
set fso=createobject("scrīpting.filesystemobject")  '创建文件系统对象
set file=fso.opentextfile("D:\hjq.csv")  '打开csv文件
wait(2)
Do while file.atendofstream<>true
    aasplit=split(file.readline,",")'用,分割字符串
 
       For i=0 to UBound(aasplit)
 
              With Browser("XX项目").Page("XX项目")
                     With .Frame("wap")
                            .WebEdit("key").Set  aasplit(i)
                            .WebButton("搜").Click
                     End With
                     .Frame("wap_2").Link("返回XX首页").Click
                     .Sync
              End With
             
       Next
 
loop 
file.close  '关闭文件
14      怎样识别弹出的web窗口和对象
1 进入object identification
2, 在enviroment中选择web
3, 选择某个test object class,如browser
4, 添加mandatory properties
5, 确定
6, 重新录制脚本
7, OK
15      Vbs写文件
set fs =createobject("scrīpting.filesystemobject")
if (fs.fileexists("c:\hjq.txt")) then
set f =fs.opentextfile("c:\hjq.txt",8)
f.write chr(13)+chr(10)
f.write "hello"
f.write chr(13)+chr(10)
f.writeline "beijing"
f.close
else
set f=fs.opentextfile("c:\hjq.txt",2, true)
f.writeblanklines 2 '写入2个空行
f.write "china"
f.close
end if
 
16      基本函数
QTP的基本使用函数:
1, 获取对话框相应的文字:GetVisible Text
2, 查找相应的字符串: instr (1,查找目标字符串,所查找的字符串)
3, 随机数的获取: Randomnumber.Value() 或cstr(int(Rnd*10)+1)
4, 等待函数: Wait(秒数)
5, 获取数组下标: UBound (数组名)
6, 拆分数组: Split(MyString, ",", -1, 1)
7, 可执行步骤: OptionalStep
8, 报告信息: Reporter.ReportEvent 3, "Save Step", "Out of cycle!"
9, 判断对话框是否存在: .exist
10,事件过滤函数
Reporter.Filter=过滤条件(0,1,2,3),
0代表显示所有的error和warning,
1,显示error,
2,显示waining
3,任何error和warning都不显示。
11,循环函数:do … loop until,for…to… then next,while.
12,数据表格:DataTable,向外赋值,Dim aa = DataTable.value(“CellingName”,”ActionName”).
13,获得对象属性的三种方法GetTOProperty获得程序中对象当前的属性,GetTOProperties获得当前属性所有集合,GetROProperty获得的是录制时对象所获得的属性。
14,检查点方法check和输出指定属性值output
15,函数Description,可以获得某页面同标签的属性进行操作。
16,函数nagative可以随便跳转页面到指定的URL
17,函数Object可以获得当前页面同属性的控件
18,函数Focus可以让控件获得焦点,函数Blur则是失去焦点,click单击,dbclick双击
19,函数setAttribute可以设置控件属性,getAttribute可以获得属性



四种参数类型:
1.测试、操作或组件参数
2.数据表参数
3.环境变量参数
4.随机数字参数
环境变量:
1.用户定义的内部环境变量
2.用户定义的外部环境变量
3.内置环境变量
输出值类型:
1.标准输出值
2.文本和文本区输出值
3.数据库输出值
4.XML输出值
存储输出值:
1.测试、操作或组件参数
2.运行时数据表
3.环境变量
用例:
SystemUtil.Run "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4b.exe" '运行程序 '
If dialog("Login").Exist(2) Then '登陆类2秒钟不存在'
dialog("Login").Activate
'WinEdit("Agent Name:").Set("test") '对象之间是存在父子关系的
dialog("Login").WinEdit("Agent Name:").Set("aaas")
dialog("Login").WinEdit("Password:").SetSecure ("4cdf736a021f3e5c2cc8d24f64840eb2035000ec")
dialog("Login").WinButton("OK").Click
If window("Flight Reservation").Exist(8) then
isok=window("Flight Reservation").CheckProperty("text", "Flight Reservation",2000)
msgbox "运行时对象值为" & window("Flight Reservation").GetROProperty("text")
msgbox "测试时对象值为" & window("Flight Reservation").GetTOProperty("text")
If isok Then
Reporter.ReportEvent micPass,"存在用户名和正确密码登录测试","测试通过"
print "存在用户名和正确密码登录测试,测试通过"
Else
Reporter.ReportEvent micFail,"存在用户名和正确密码登录测试","测试未通过"
end if
window("Flight Reservation").Close
else
reporter.ReportEvent micFail,"存在用户名和正确密码登录测试","测试未通过_登陆成功窗口未打开"
print "存在用户名和正确密码登录测试,测试未通过_登陆成功窗口未打开"
end if
else
reporter.ReportEvent micFail,"存在用户名和正确密码登录测试","测试未通过_登陆窗口未打开"
print " 存在用户名和正确密码登录测试,登陆窗口未打开,测试未通过"
end if