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)