Flight-黑盒测试
一、 需要分析
1. AgentName
不可以为空
至少 4 位
最多 10 位
2. Password
不可以为空
至少 4 位
必须是 mercury
同一个 AgentName,密码连续错误 4 次以上,强制退出程序
3. date of Flight
输入格式:月/日/年
最晚的时间不能晚于 12/31/38
最早的时间不能早于当前时间
-和+可以代替一位数,+可以放前面,-不能放前面
4. Fly from 和 Fly to
Fly From 和 Fly To 都是从列表中选择,只是两个地点不能一样。
5. Name
可以任意字符
长度最长可以为 20 位数
6. Tickets
可以输入除数字外的字符:-和+,+可以放在前面,-不可以放在前
面
一次最多预订 10 张
二、 测试方法
场景法 –Login
基本流:输入用户名 AgentName,输入密码 Password,点击登录按钮 OK
备选流 1:用户名为空
备选流 2:用户名长度小于 4 数
备选流 3:密码为空
备选流 4:密码小于 4 位数
备选流 5:密码不是 mercury
根据基本流和备选流来确定场景
场景 1-登录成功
场景 2-用户名为空
场景 3-用户名长度不足
场景 4-密码为空
场景 5-密码长度不足
场景 6-密码错误
基本流
基本流
基本流
基本流
基本流
基本流
场景法测试用例设计如下:
备选流 1
备选流 2
备选流 3
备选流 4
备选流 5
ID
AgentName
Password
1
2
3
4
5
6
1234
123
1234
1234
1234
脚本语言
mercury
mercury
mercury
123
merc
Expect
OK
Please enter agent name
Agent name must be least 4 characters
long.
Please enter password
Password must be at least 4 characters
long
Incorrec password.Please try again
Result
OK
NO
NO
NO
NO
NO
On error Resume next
'跳过错误
SystemUtil.Run("C:\Program
Files\HP\QuickTest Professional\samples\flight\app\flight3a.exe")
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").WinEdit("Agent Name:").Set DataTable("AgentName", dtGlobalSheet)
Dialog("Login").WinEdit("Agent Name:").Type micTab
Dialog("Login").WinEdit("Password:").SetSecure DataTable("Password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
'捕捉登录成功的页面
If Window("Flight Reservation").Exist(3) Then
DataTable("Result", dtGlobalSheet)="OK"
Window("Flight Reservation").Close
'登录成功
DataTable("Result",dtGlobalSheet)="OK"
'捕捉错误警告的页面
else If Dialog("Login").Dialog("Flight Reservations").Exist(2) Then
'提示窗体中的信息和 Expect 的信息一致时,Result 的值为 OK
If dialog("Login").Dialog("Flight Reservations").Static("message").GetVisibleText=
datatable.Value("Except",dtGlobalSheet) Then
DataTable("Result", dtGlobalSheet)="OK"
End If
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Dialog("Login").Close
'登录失败
DataTable("Result",dtGlobalSheet)="NO"
End If
End if
状态法 –Login
对 Login 页面分析,得到以下五个输入项:
ip1:输入用户名
ip2:输入密码
ip3:点击登录按钮
ip4:点击退出按钮
ip5:点击帮助按钮
Login 的最后状态图
图 1.Login 最后状态图
状态图表
状态/用例
Login
用户名已输入
密码已输入
点击 OK 按钮
用户名,密码已输入
订票页面
退出
帮助提示
1
1
2
1
2
3
1
2
2
3
3
4
1
2
3
5
1
2
3
4
6
1
2
3
4
10
1
2
4
3
5
7
1
24
3
5
8
1
24
3
5
11
1
12
1
2
4
3
5
2
场景法 –订票
基本流:输入起飞日期,起飞起点和终点,选择航班,输入乘坐人的姓名和
机票数量
备选流 1:预订时间小于当前时间
备选流 2:预定时间超出可以预定时间范围
备选流 3:预订机票数量大于剩余机票数量
根据基本流和备选流来确定场景
场景 1:订票成功
场景 2:时间必须大于当前时间
场景 3:时间必须小于 12/31/38
场景 4:预订机票超过剩余机票
基本流
基本流
基本流
基本流
备选流 1
备选流 2
备选流 3
场景法测试用例设计如下:
Fly From
ID
1
2
3
4
Fly of Date
01/01/14
01/01/13
01/01/39
01/01/14
Paris
London
Paris
London
Fly To
London
Paris
London
Paris
Name
IMeng
IMeng
IMeng
IMeng
Ticket
1
1
1
99
' 选择已经打开的窗体
Reservation").WinObject("Date
Reservation").WinComboBox("Fly
脚本语言
Option Explicit
Dim OrderNo,selectItem,itemCount
Window("Flight Reservation").Activate
Window("Flight Reservation").WinButton("Button").Click ' 选择新建按钮
Window("Flight
DataTable("Date", dtGlobalSheet) ' 输入日期
Window("Flight
DataTable("From", dtGlobalSheet)' 选择起点
Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("To",
dtGlobalSheet)
Window("Flight Reservation").WinButton("FLIGHT").Click' 点击 Flight 按钮
'随机选择航班
itemCount=window("Flight
Table").WinList("From").GetItemsCount '取得航班号
selectItem=RandomNumber(0,itemCount)'设置随机数
window("Flight Reservation").Dialog("Flights Table").WinList("From").Select
selectItem
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Reservation").Dialog("Flights
of
Flight:").Type
From:").Select
' 选择终点
' 选择航班 0
Window("Flight
Reservation").WinEdit("Customer
Name:").Set
DataTable("Name", dtGlobalSheet)
Window("Flight
DataTable("Tickets",dtGlobalSheet)'预订数量
Window("Flight Reservation").WinButton("Insert").Click
' 输入姓名
Reservation").WinEdit("Tickets:").Set
' 点击添加订单
状态图–订票
对订票页面进行分析,得到以下输入项
ip1:输入日期
ip2:选择起点
ip3:选择终点
ip4:选择航班
ip5:输入姓名
ip6:输入预订机票数量
ip7:点击 insert 按钮
ip8:点击退出按钮
机票预订的最后状态图
边界值 –Login
测试用例
AgentName
Password Result
123 mercury
1234 mercury
12345 mercury
12345678 mercury
123456789 mercury
1234567890 mercury
1234 mer
1234 merc
1234 mercu
1234 mercur
1234 mercuryy
脚本语言
On error Resume next
'跳过错误
SystemUtil.Run("C:\Program Files\HP\QuickTest
Professional\samples\flight\app\flight3a.exe")
Dialog("Login").WinEdit("Agent Name:").Set
DataTable("AgentName",dtGlobalSheet)
Dialog("Login").WinEdit("Agent Name:").Type
Dialog("Login").WinEdit("Password:").SetSecure
DataTable("Password",dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
'捕捉登录成功的页面
If
Window("Flight Reservation").Exist(3) Then
micTab
DataTable("Result", dtGlobalSheet)="OK"
Window("Flight Reservation").Close
'捕捉错误警告的页面
else If Dialog("Login").Dialog("Flight Reservations").Exist(2) Then
Dialog("Login").Dialog("Flight Reservations").WinButton("确定
").Click
DataTable("Result",dtGlobalSheet)="NO"
Dialog("Login").Close
End if
End if
边界值 –订票
测试用例
Date_of_Flight From
To
Result
a121513
Denver
Frankfurt
a121613
Denver
Frankfurt
a121713
Denver
Frankfurt
a123038
Denver
Frankfurt
a123138
Denver
Frankfurt
a010139
Denver
Frankfurt
脚本语言
On error Resume next '跳过错误
Window("Flight Reservation").Activate
Window("Flight Reservation").WinButton("Button").Click'新建订单按
钮
Window("Flight Reservation").WinObject("Date of Flight:").Type
DataTable("Date_of_Flight",dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly From:").Select
DataTable("From",dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly To:").Select
DataTable("To",dtGlobalSheet)
Window("Flight Reservation").WinButton("FLIGHT").Click
if(Window("Flight Reservation").Dialog("Flights Table").Exist(1))
then
DataTable("Result",dtGlobalSheet)="OK"
Window("Flight Reservation").Dialog("Flights
Table").WinButton("Cancel").Click
Window("Flight Reservation").WinButton("Button").Click'新建订
单按钮
else if(Window("Flight Reservation").Dialog("Flight
Reservations").Exist(1)) then
DataTable("Result",dtGlobalSheet)="NO"
Window("Flight Reservation").WinButton("Button").Click'新建订
单按钮
End if
End if