2024年4月27日发(作者:)
单元五 软件测试案例
--Flight 航空定票系统
一、案例描述
HP公司,QTP测试软件自带Flight 航空定票系统软件登录模块、定票模块的用例设计和QTP测试脚
本的开发。
二、案例要求
1、通过实验掌握“用例设计”;
2、掌握QTP测试脚本各种处理方法的开发;
3、保存测试结果;
4、分析测试结果。
三、案例实现步骤
(一)测试需求
Flight 航空定票系统测试需求如下:
1、登录模块:
用户名和口令 4~10 位
2、定票模块
不同用户登录,定购不同的机票;
根据日期、定单号、姓名查询定单。
(二)实现步骤
1.编写测试用例
表1 Flight 航空定票系统登录模块测试用例
用例编号
1
用户名
密码 预期输出 实际输出 评价
提示输入用户名 Plese enter Agent name. 正确
Agent name must be at
least 4 characters
long.
正确 2
Ner
提示用户名的长
度>=4个字节
3 test 提示输入密码 Plese enter password. 正确
4 Test hehreoor
提示输入正确的
密码
提示输入密码的
长度>=4个字节
Incorrect password
be at
least 4 characters
long.
登录成功
正确
5 test mer 正确
6 test mercury 登录成功
提示输入正确的
密码
登录成功
正确
7 test mercur Incorrect password 正确
8 test @123 mercury 登录成功
Agent name must be at
least 4 characters
long.
正确
9 tes mercury
提示用户名的长
度>=4个字节
正确
10 mercury 提示输入用户名 Plese enter Agent name. 正确
11 汉字 mercury 登录成功 登录成功 正确
12 123456 mercury 登录成功
提示输入正确的
密码
提示输入正确的
密码
登录成功
登录成功 正确
13 test 汉字 Incorrect password 正确
14 test 12345465 Incorrect password 正确
15 Ety .j@# mercury 登录成功 正确
表2 Flight 航空定票系统定票模块测试用例
用例编号
1
航空
定票
模块
等价类(子
功能)
飞行日期
输入
预期输出 实际输出 评价
正确
提示输入Plese enter a
飞行日期 flight date
2 飞行日期
现在时间提示日期
前的时间。 已经过期,日期过期,重新
如 请重新输输入
02/12/12 入
正确
3 飞行日期
输入的日
期格式为:
年/月/日 提示格式
如:不正确
13/1/31
现在时间
以后的时
间。
如:
05/10/12
月日少于
9的前面
不写0
如
5/12/12
从下拉列
表框中任
选一项
从下拉列
表框中任
选一项
Invalid month
Entered
正确
4 飞行日期 时间通过 时间通过 正确
5 飞行日期 不能通过 能通过 错误
6 出发城市 可以通过 通过
Plese enter a
fly ‘from’
city
通过
正确
7 出发城市
提示输入
出发城市
正确
8
航空
定票
到达城市 可以通过 正确
9 到达城市
提示输入Plese enter a
到达城市 fly ‘to’city
任何信息都不
提示输入
会输出,下面的
乘客姓名
操作不能进行
可以通过 通过
正确
10 乘客姓名
小于20位
字符
输入其他
符号如
@#87含
输入和订
票模块不
一样的姓
名
正确
11 乘客姓名 正确
12 乘客姓名 可以通过 通过
任何信息都不
会输出,下面的
操作不能进行
No orders
found
正确
13
查询
订票
14
按姓名查
提示不能
查询
正确
按姓名查
提示找不
到订单
正确
15 按姓名查
输入和订
票模块一
样的姓名
输入和订
票模块不
一样的时
间
输入和订
票模块一
样的时间
输入和订
票模块不
一样的编
号
输入和订
票模块一
样的时间
可以通过 通过
任何信息都不
会输出,下面的
操作不能进行
No orders
found
正确
16 按日期查
提示不能
查询
正确
17 按日期查
提示找不
到订单
正确
18 按日期查 可以通过 通过
任何信息都不
会输出,下面的
操作不能进行
No orders
found
正确
19 按编号查
提示不能
查询
正确
20 按编号查
提示找不
到订单
正确
21 按编号查 可以通过 通过
任何信息都不
会输出,下面的
操作不能进行
任何信息都不
会输出,下面的
操作不能进行
任何信息都不
会输出,下面的
操作不能进行
通过
正确
22
按姓名和日
期查
按姓名和日
期查
按姓名和日
期查
按姓名和日
期查
提示不能
查询
提示不能
查询
提示不能
查询
正确
23
只输入姓
名
只输入日
期
输入对应
的时间和
日期
正确
24 正确
25
可以通过 正确
2.编写自动化测试程序
步骤:
(1)运行QTP软件,待打开后新建一个Test,点击工具栏上的“Record”按钮,打开飞机订票系统进行
脚本的录制,然后点击“stop”按钮,结束录制;
(2)将要进行验证的地方设置参数化:
图1 测试用例(1)
图2 测试用例(2)
(3)点击“run”按钮,回放程序,通过程序回放过程中的正确与否,进行修改程序;
测试脚本部分程序:
Starter
'应用程序的路径
Sub Starter
Environment("Flyurl")
End Sub
'用函数来验证状态
Public Function testRegExp(ByVal patrn, ByRef sour)
' TODO: add function body here
Dim regEx ' Create variable.
Set regEx = New RegExp ' Create regular expression.
n = patrn ' Set pattern.
Case = true ' Set case sensitivity.
=true
if (sour)=true Then
Event micPass,"登录失败!",cstr(sour)
Else
Event micFail,"出现异常","提示信息不正确!"
End If
End Function
'定义变量
Dim insertNum,insertbegin, istest,istatus,iselectorder,orderid
'从DataTable中取值
insertNum=DataTable("iCount",dtGlobalSheet)
insertbegin=DataTable("begin",dtGlobalSheet)
iselectorder=DataTable("SelectOpen",dtGlobalSheet)
print iselectorder
istest=("status")
'登录界面
Dialog("Login").WinEdit("Agent Name:").Set DataTable("name", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").SetSecure DataTable("password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
'判断是否有子提示框出现
If Dialog("Login").Dialog("Flight Reservations").Exist Then
'取子提示框上的提示信息
istatus=Dialog("Login").Dialog("Flight Reservations").Static("Please enter agent
name").GetROProperty("text")
testRegExp istest,istatus
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Dialog("Login").Close
Else
For i=1 to insertNum
search
order
et("Action1").SetNextRow
Event micPass,"登录成功","登录成功!"
et("Action1").SetCurrentRow(insertbegin)
Next
openorder(iselectorder)
Window("Flight Reservation").WinMenu("Menu").Select "File;Exit"
End If
'打开新订单,并填写信息
Sub search
Window("Flight Reservation").WinMenu("Menu").Select "File;New Order"
Window("Flight Reservation").ActiveX("MaskEdBox").Type DataTable("FlyDate", dtLocalSheet)
Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("FlyFrom",
dtLocalSheet)
'若时间不完整,弹出对话框时的处理
If Window("Flight Reservation").Dialog("Flight Reservations").Exist Then
sstatus=Window("Flight Reservation").Dialog("Flight Reservations").Static("Please enter a
flight").GetROProperty("text")
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 "051212"
Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("FlyTo", dtLocalSheet)
End If
Window("Flight Reservation").WinButton("FLIGHT").Click
'随机取航班
iCount = Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetItemsCount
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select
RandomNumber(0,iCount-1)
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
End Sub
'选择座位,获取定单号
Sub order
Window("Flight Reservation").WinEdit("Name:").Set DataTable("passageName", dtLocalSheet)
Window("Flight Reservation").WinRadioButton(DataTable("seat",dtLocalSheet)).Click
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").ActiveX("Threed Panel Control").WaitProperty "text","Insert
",10000
orderid = Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
DataTable("OrderNum",dtLocalSheet)=orderid
End Sub
'选择查询方式
Sub openorder(iselectorder)
et("Action1").SetCurrentRow(insertbegin)
For i=1 to insertNum
If iselectorder=1 Then
'按姓名查
Window("Flight Reservation").WinMenu("Menu").Select "File;"
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Set
"ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set
DataTable("passageName", dtLocalSheet)
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").Dialog("Open Order").Dialog("Search
Results").WinButton("OK").Click
Else if iselectorder=2Then
'按时间查
Window("Flight Reservation").WinMenu("Menu").Select "File;"
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Flight Date").Set "ON"
Window("Flight Reservation").Dialog("Open Order").ActiveX("MaskEdBox").Type
DataTable("FlyDate", dtLocalSheet)
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").Dialog("Open Order").Dialog("Search
Results").WinButton("OK").Click
Else if iselectorder=3 then
'按时间和姓名查
Window("Flight Reservation").WinMenu("Menu").Select "File;"
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Set
"ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set
DataTable("passageName", dtLocalSheet)
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Flight Date").Set
"ON"
Window("Flight Reservation").Dialog("Open Order").ActiveX("MaskEdBox").Type
DataTable("FlyDate", dtLocalSheet)
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").Dialog("Open Order").Dialog("Search
Results").WinButton("OK").Click
Else if iselectorder=4 then
' 按编号查
Window("Flight Reservation").WinMenu("Menu").Select "File;"
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
print DataTable("OrderNum",dtLocalSheet)
print orderid
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit_2").Set
DataTable("OrderNum",dtLocalSheet)
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
End if
End if
End if
End If
et("Action1").SetNextRow
Next
End Sub
(4)测试执行报告
图3 运行结果(1)
图4 运行结果(2)
图5 运行结果(3)
发布评论