QTP(5)
一、检查点
1、位图检查点(Bitmap CheckPoint)
(1)作用:主要用于检查UI界面,检查页面布局,包括控件位置、大小、颜色、状态等
(2)确定位图检查点的要素:
a.检查哪个控件
b.确定检查的区域
c.确定检查点插入的位置
d.确定超时时间
(3)插入位图检查点的步骤:
注意:位图检查点建议在录制时添加,不建议在Active Screen 添加
a.录制时操作到需要添加位图检查点的步骤
b.点击QTPInsert菜单栏->Checkpoint->Bitmap Chckpoint(位图检查点)
c.在弹出的Object Selection中确定对象,OK
d.在Bitmap Checkpoint properties位图检查点属性对话框中,设置位图检查点的属性:
--check entire bitmap:检查整张图
--check only selected area:检查指定的区域(常用),需要使用十字光标画一个区域
Save only selected area:只保存选择的区域,节省空间
--tolerance:设置容差
GRB:色差
Pix:像素差
--设置超时时间
--OK
练习3:Mtours
要求:
a.录制Mtours系统登录+退出业务
b.使用位图检查点验证登录是否成功
Test5004_Mtours_位图检查点
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("userName").Set "Mercury"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("password").SetSecure "5a55854e6241b30568d3a4c5"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Image("Sign-In").Click 18,9
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").Image("mast_flightfinder").Check CheckPoint("mast_flightfinder")
2、文本检查点Text Checkpoint
(1)作用:检查被测系统中出现的文本字符串内容是否等于预期值,比如提示信息
(2)确定文本检查点的要素:
a.确定待检查的控件对象,哪个文本,文本内容本身就是一个对象
b.确定预期值
c.确定检查点插入的位置
d.确定超时时间
(3)添加文本检查点的步骤:
方式一:在录制时添加
a.录制时操作到需要添加检查点的步骤
b.点击QTP菜单栏Insert->Checkpoint->Text Checkpoint(文本检查点),使用手型鼠标 点击需要检查的文本
c.在Object Selection对话框中确认对象,一般都是static类型,OK
d.在Text checkpoint properties属性框中设置检查点属性
--填写预期值
--选择匹配方式:
Match Case:匹配大小写
Ignore Spaces:忽略空格
Exact Match :精确匹配
Text Not displayed:文本未显示
--设置超时时间
--OK
方式二:录制后通过Active Screen截图视图添加
注意:需要检查的文本必须在截图视图能够显示才能使用该方法
a.在代码中定位一个步骤,能够在Active Screen显示待检查的文本
b.在Active Screen中,在待检查的文本上右击选择 Insert Text Checkpoint(插入文本检查点)
c.确认文本对象,设置属性
--Before current step:当前步骤之前
--After current step:当前步骤之后
当前步骤指a步骤
d.如果检查的位置错误,把检查点代码剪切到正确位置
练习4:Flight4a
要求:
a.为Agent Name对象添加文本检查点
b.不输入任何信息,点击"OK"按钮,为提示信息添加文本检查点
Test5005_Flight4a_文本检查点_登录提示信息
Dialog("Login").Static("Agent Name:").Check CheckPoint("Agent Name:")
Dialog("Login").WinButton("OK").Click
Dialog("Login").Dialog("Flight Reservations").Static("Please enter agent name").Check CheckPoint("Please enter agent name")
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Dialog("Login").WinButton("Cancel").Click
练习5:Flight4a
要求:
a.没有输入任何信息时,检查提示信息是否正确
b.用户名输入3位字符,检查提示信息是否正确
c.输入正确的用户名,不输入密码,检查提示信息是否正确
d.输入正确的用户名,输入错误的密码,检查提示信息是否正确
Test5006_Flight4a_文本检查点_登录提示信息
Dialog("Login").WinButton("OK").Click
Dialog("Login").Dialog("Flight Reservations").Static("Please enter agent name").Check CheckPoint("Please enter agent name")
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Dialog("Login").WinEdit("Agent Name:").Set "123"
Dialog("Login").WinButton("OK").Click
Dialog("Login").Dialog("Flight Reservations").Static("Please enter agent name").Check CheckPoint("Agent name must be at least 4 characters long.")
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a55ae03aa62d710b5585eb7b35de1331b66"
Dialog("Login").WinButton("OK").Click
Dialog("Login").Dialog("Flight Reservations").Static("Please enter agent name").Check CheckPoint("Incorrect password. Please try again")
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Dialog("Login").WinButton("Cancel").Click
练习6:Flight3a 第一个版本
要求:
a.录制Flight3a的登录+退出业务
b.为登录界面添加位图检查点
c.使用录制好的代码对Flight4a进行回归测试
Test5002_Flight4a_位图检查点
Dialog("Login").WinEdit("Agent Name:").Set "abcd"
Dialog("Login").WinEdit("Password:").SetSecure "5a557b6befda237b3116c69eb42d8e165954086a"
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").Check CheckPoint("Login_2")
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Close
练习7:Flight3a 第一个版本
要求:
a.录制Flight3a登录+退出业务
b.对登录后的界面添加位图检查点
c.使用录制好的代码对Flight4a进行回归测试
练习8:Flight4a
要求:
a.验证输入错误的日期时的提示信息
b.验证输入过期的日期时的提示信息
c.验证Tickets输入15时的提示信息
d.验证打开2000号订单时的提示信息
Test5007_Flight4a_文本检查点_购票+打开订单提示信息
Dialog("Login").WinEdit("Agent Name:").Set "abcd"
Dialog("Login").WinEdit("Password:").SetSecure "5a55b4da0ad581e9c066279366a164369cbecf62"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type "343256"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
Window("Flight Reservation").Dialog("Flight Reservations").Static("Invalid year Entered.").Check CheckPoint("Invalid year Entered. The year must be greater than 2018 and less than 2038.")
Window("Flight Reservation").Dialog("Flight Reservations").WinButton("确定").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type micBack
Window("Flight Reservation").ActiveX("MaskEdBox").Type micBack
Window("Flight Reservation").ActiveX("MaskEdBox").Type micBack
Window("Flight Reservation").ActiveX("MaskEdBox").Type micBack
Window("Flight Reservation").ActiveX("MaskEdBox").Type micBack
Window("Flight Reservation").ActiveX("MaskEdBox").Type micBack
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111111"
Window("Flight Reservation").WinComboBox("Fly From:").Select "London"
Window("Flight Reservation").Dialog("Flight Reservations").Static("Invalid year Entered.").Check CheckPoint("Valid flight dates are after 01/10/18")
Window("Flight Reservation").Dialog("Flight Reservations").WinButton("确定").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Drag 48,5
Window("Flight Reservation").WinObject("Flight Schedule:").Drop 3,61
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Frankfurt"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "abcd"
Window("Flight Reservation").WinEdit("Tickets:").Set "15"
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").Dialog("Flight Reservations").Static("Invalid year Entered.").Check CheckPoint("Only ten tickets may be ordered at one time")
Window("Flight Reservation").Dialog("Flight Reservations").WinButton("确定").Click
Window("Flight Reservation").WinEdit("Tickets:").Set "1"
Window("Flight Reservation").Static("Name:").Check CheckPoint("Name:")
Window("Flight Reservation").Static("Tickets:").Check CheckPoint("Tickets:")
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "2000"
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").Static("Order number 2000 does").Check CheckPoint("Order number 2000 does not exist")
Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").WinButton("确定").Click
Window("Flight Reservation").Dialog("Open Order").WinButton("Cancel").Click
Window("Flight Reservation").Close
3、文本区域检查点Text area Checkpoint
(1)作用:检查被测系统中指定的矩形区域内显示的文本字符串是否与预期一致
(2)确定检查点的要素:
a.确定检查的控件对象
b.确定检查哪个区域内的文本
c.确定预期值
d.确定插入位置
e.确定超时时间
(3)输入文本区域检查点的步骤:
注意:文本区域检查点只能在录制时添加
文本区域检查点不支持web系统
a.录制时操作到需要添加检查点的位置
b.在QTP中点击Insert->Checkpoint->Text area Checkpoint(文本区域检查点),使用十字光标画一个区域,区域内是需要检查的文本
c.在文本区域检查点属性框中设置检查点的属性,设置预期值、设置匹配方式
(4)文本检查点和文本区域检查点的区别
a.检查的控件对象不一样:
文本:文本文身
区域:存放文本的对象
b.支持的系统不一样
文本:支持C/S和B/S系统
区域:不支持B/S系统
c.插入的时间不同
文本:录制时、后都能添加
区域:只能录制时添加
练习9:Flight4a
要求:a.为Flight4a的登录页面添加文本 区域检查点,检查三个按钮的文本是否正确
Test5008_Flight4a_文本区域检查点_登录按钮
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").WinButton("Cancel").Click
练习10:Flight4a
要求:a.为购票页面的Tickets对象添加文本区域检查点,把代码在Flight3a中进行回放
Test5009_Flight4a_文本区域检查点_Tickets
Dialog("Login").WinEdit("Agent Name:").Set "abcd"
Dialog("Login").WinEdit("Password:").SetSecure "5a55c80870a470f74aeda19c4b33008ca46246cd"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinObject("Order Information:").Check CheckPoint("Order Information:")
Window("Flight Reservation").Close
练习11:Flight4a
要求:
a.录制Flight4a登录+购票+打开订单+发送传真+退出业务
b.为登录后窗口中的图片添加位图检查点
c.为打开订单窗口中的Customer Name添加文本检查点
d.为发送传真界面的四个按钮添加文本区域检查点
e.为发送传真是否成功添加标准检查点
Test5010_Flight4a_检查点综合练习
Dialog("Login").WinEdit("Agent Name:").Set "abcd"
Dialog("Login").WinEdit("Password:").SetSecure "5a55d14da54352506630863a43a42b60077e741f"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Static("Static").Check CheckPoint("Static")
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Check CheckPoint("Customer Name")
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "5"
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").WinMenu("Menu").Select "File;Fax Order..."
Window("Flight Reservation").Dialog("Fax Order No. 5").Check CheckPoint("Fax Order No. 5")
Window("Flight Reservation").Dialog("Fax Order No. 5").ActiveX("MaskEdBox").Type "1111111111"
Window("Flight Reservation").Dialog("Fax Order No. 5").WinButton("Send").Click
Window("Flight Reservation").ActiveX("Threed Panel Control").Check CheckPoint("Threed Panel Control")
Window("Flight Reservation").Close
手工测试:
预置条件:被测系统已打开
01
1 输入"第一个数"为:99
2 输入"第二个数"为:-99
3 点击"计算"按钮
4 点击"重置"按钮
预期值:0
预置条件:被测系统已打开
02
1 输入"第一个数"为:0
2 输入"第二个数"为:56
3 点击"计算"按钮
4 点击"重置"按钮
预期值:56
预置条件:被测系统已打开
03
1 输入"第一个数"为:77
2 输入"第二个数"为:17
3 点击"计算"按钮
4 点击"重置"按钮
预期值:94
------------------------------------------------------------------
自动化测试:
预置条件:被测系统已打开(QTP打开)
01
1 输入"第一个数"为:num1
2 输入"第二个数"为:num2
3 点击"计算"按钮
检查点ex
4 点击"重置"按钮
预期值:
num1=99 0 77
num2=-99 56 17
ex=0 56 94
二、参数化(DataTable参数化)
1、应用场景:使用多组测试数据测试同一个业务流程
2、DataTable参数化就是使用DataTable中的参数替代录制好的脚本中的常量的技术
3、实现方式:
练习12:两位数加法器
要求:a.为两位数加法器实现参数化
Test5011_两位数加法器_参数化
VbWindow("Form1").VbEdit("Text1").Set DataTable("num1", dtGlobalSheet)
VbWindow("Form1").VbEdit("Text2").Set DataTable("num2", dtGlobalSheet)
VbWindow("Form1").VbButton("计算(J)").Click
VbWindow("Form1").VbEdit("Text3").Check CheckPoint("Text3")
VbWindow("Form1").VbButton("重置(C)").Click
练习13:Flight4a
要求:a.为登录实现参数化
uname:1234 abcd a78p
passwd:mercury MERCURY Mercury
Test5012_Flight4a_登录参数化
SystemUtil.Run "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\HP\QuickTest Professional\samples\flight\app\","open" Dialog("Login").WinEdit("Agent Name:").Set DataTable("uname", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").SetSecure DataTable("passwd", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Check CheckPoint("Flight Reservation")
Window("Flight Reservation").Close
4、总结检查点失败可能的原因:
a.检查的控件、属性、预期值错误
b.检查点插入的位置错误
d.超时时间太短
e.需求变更
f.被测系统的缺陷
QTP(5)的更多相关文章
- QTP(16)
一.QTP项目(ECShop) 1.ECShop是一个开源免费的一个B2C的电子商务系统,主要用于商家和顾客进行商品交易操作. 2.ECShop分为前台和后台两个子系统: (1)ECShop前台:顾客 ...
- QTP(14)
练习1.Flight4a 要求: a.录制Flight4a登录+退出业务流程 b.使用自定义检查结合Exist属性验证登录是否成功 c.为用户名实现参数化 用户名 Jack 正确 Rose 正确 12 ...
- QTP(13)
练习1:Flight4a 要求: a.录制Flight4a登录+购票+退出业务流程 b.实现登录1次,购票3次,退出1次 c.对Fly From.Fly to.航班实现随机参数化 随机参数化:Rand ...
- QTP(12)
练习:录制两位数加法器加法计算后退出的步骤,对两个加数做随机数参数化,随机数范围是0-50,在计算后获得被测系统计算的结果,判断如果结果等于100,msgbox提示“满分”,如果结果在80和99之间, ...
- QTP(10)
一.VBS语言基础 1.运算符和表达式 (1)运算符 (2)表达式 a.数学表达式:由算术运算符连接,计算结果为数字 b.字符串表达式:由字符串连接符连接,计算结果为字符串 c.条件表达式:由关系运算 ...
- QTP(9)
常用的Windows控件 WinEdit---Set "数据值" SetSecure "加密数值" WinButton---Click WinComboBox- ...
- QTP(8)
一.Action 1.调用Action C:\Program Files\HP\QuickTest Professional\CodeSamplesPlus\Flight_Samples (1)调用A ...
- QTP(7)
一.输出值(Output Value) 1.应用场景: 1) 关心被测系统的数据 2) 将被测系统生成的数据作为后面步骤的输入 2.输出值就是输出被测系统中实际运行时的数据的一种技术 a.运行中对象的 ...
- QTP(6)
一.检查点 1.标准检查点(Standard Checkpoint) 作用:检查对象的属性值是否正确 文本框对象:text 预期值 单选按钮对象:checked ON/OFF 下拉框对象:Select ...
随机推荐
- UEFI+GPT下安装Win10和Ubuntu16.04双系统相关问题(引导、无线连不上网)
1.安装双系统 1)先制作U盘启动,制作过程不再赘述 2)进入bios,设置从U盘启动 3)如下图,选择第二项为安装Ubuntu 4)前几不没什么问题,就直接往下走,选择语言,往下拉有中文选项 5)下 ...
- 【VS开发】程序员对内存的理解
程序员对内存的理解 在C和C++语言开发中,指针.内存一直是学习的重点.因为C语言作为一种偏底层的中低级语言,提供了大量的内存直接操作的方法,这一方面使程序的灵活度最大化,同时也为bug埋下很多隐患. ...
- 前端控制台 JavaScript函数报错 SyntaxError: expected expression, got ';' SyntaxError: expected expression, got 'if'
在火狐浏览器下调试时, 页面报错SyntaxError: expected expression, got ';'或者SyntaxError: expected expression, got 'if ...
- 关于Oracle MAX()KEEP(DENSE_RANK LAST/FIRST ORDER BY ) 函数的使用分析
MAX()/MIN() KEEP(DENSE_RANK LAST/FIRST) 函数 解释: 1. max() 获取最大值: 2.min() 获取最小值; 3. keep 保持满足括号内条件的内容; ...
- 灾备系统 RTO与RPO
出处: https://blog.51cto.com/se7en/1085442 http://www.iso27001.org.cn/fuwu/it/iso22301/show_511.html h ...
- RESTful、共用接口、前后端分离、接口约定的实践 (转)
出处: 某小公司RESTful.共用接口.前后端分离.接口约定的实践 前言 随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很难快速应对各种需求,更难以提 ...
- 关于win10安卓真机调试无法找到设备的问题
之前在win10系统上调试安卓设备,usb接好了,结果居然没有找到设备. 一般出现这种情况可能是电脑的驱动没装好. 于是找了驱动人生大佬来诊断,确实是少了安卓usb驱动. 正常来说用驱动人生装个usb ...
- 怎样禁止 html 中 <textarea> 标签可以拉伸改变大小 ?
1. 一般来说, 使用 <textarea> 这个标签都会禁用掉它的这个默认属性, 不然可能会被用户玩儿坏, 而且也不利于其他元素的展示, 使用到的属性是 resize , 改为 none ...
- lsof---列出当前系统打开的文件信息
lsof---list open file,一个列出当前系统打开文件的工具 1.lsof查找原理 在Linux系统中,系统为了方便管理进程,会在/proc下为每一个运行中的进程创建一个目录,目录名就是 ...
- [C#]使用BackgroudWorker刷新UI延迟的解决方法
今天使用BackgroundWorker刷新UI发生延时现象,找了好久才发现AutoResetEvent可以解决,代码如下 private void BgWorker_ProgressChanged( ...