一、实验目的
1) 学习QTP工具的使用
2)了解黑盒自动化测试
二、实验要求
(1)对被测程序进行黑盒测试用例设计
(2)对QTP的飞机订票系统的任一界面或控件实现自动化测试。(测试的具体自选)
(3)写出该程序的缺陷。
三、实验内容
1、对QTP的样例小程序飞机订票系统,实现自动化测试。(学号被3整除,测3a;余1,测3b;余2,测4a)
2、要求:
1)写出飞机订票系统的被测需求。
自行选择需要测试的部分,根据自己的能力,可大,可小。
描述,被测程序,与被测部分的功能。
2)设计测试用例。写出测试用例表。
3)编写测试脚本,实现自动化测试。
4)写测试小结。该程序的缺陷,和测试结果。
3、最后写实验总结。
测试需求:航班日期
需求描述:设置需要购买机票的日期,进行航班查询。
需求限制条件:日期必须比当前日期晚、输入的是正常的日期、当输入的日期不正确或比当前日期早的时候给出相对应的错误提示。
测试方法:边界值法
日期>当前日期
年>=当前年份
当前月<=月(年=当前年份)<=12
01<=月(年>当前年份)<=12
当前日<日(日期=当前日期)
01<=日(月份:4、6、9、11)<=30
01<=日(月份为:1、3、5、7、8、10、12)<=31
01<=日(月份:2 年份:闰年)<=29
01<=日(月份:2 年份:平年)<=28
测试用例设计(用例设计、执行日期:06/23/2017):
用例编号 | 输入 | 预期结果 | 实际结果 | 是否通过 |
yjoo1 |
062217 |
提示不能比当前日期早 | 提示:Valid flight dates are after 06/23/17 | 是 |
yjoo2 |
062317 |
提示不能比当前日期早 | 提示:Valid flight dates are after 06/23/17 | 是 |
yjoo3 |
062616 |
提示不能比当前日期早 | 提示:Valid flight dates are after 06/23/17 | 是 |
yj004 |
032617 |
提示不能比当前日期早 | 提示:Valid flight dates are after 06/23/17 | 是 |
yjoo5 |
072317 |
可以查询航班 | 可以查询航班 | 是 |
yjoo6 |
061618 |
可以查询航班 | 可以查询航班 | 是 |
yjoo7 |
000118 |
提示月份不正确 | 提示:Invalid month Entered.The month must be greater than 01 and less than 12. | 是 |
yjoo8 |
130118 |
提示月份不正确 | 提示:Invalid month Entered.The month must be greater than 01 and less than 12. | 是 |
yjoo9 |
010118 |
可以查询航班 | 可以查询航班 | 是 |
yjo10 |
120118 |
可以查询航班 | 可以查询航班 | 是 |
yjo11 |
060018 |
提示日期不正确 | 提示:Valid flight dates are after 06/23/17 | 否 |
yjo12 |
090118 |
可以查询航班 | 可以查询航班 | 是 |
yjo13 |
043018 |
可以查询航班 | 可以查询航班 | 是 |
yjo14 |
113118 |
提示日期不正确 | 提示:Invalid day Entered. The date should be valid for the given month. | 是 |
yjo15 |
010018 |
提示日期不正确 | 提示:Valid flight dates are after 06/23/17 | 否 |
yjo16 |
030118 |
可以查询航班 | 可以查询航班 | 是 |
yjo17 |
053118 |
可以查询航班 | 可以查询航班 | 是 |
yjo18 |
073218 |
提示日期不正确 | 提示:Invalid day Entered. The date should be valid for the given month. | 是 |
yjo19 |
020020 |
提示日期不正确 | 提示:Valid flight dates are after 06/23/17 | 否 |
yjo20 |
020120 |
可以查询航班 | 可以查询航班 | 是 |
yjo21 |
022920 |
可以查询航班 | 可以查询航班 | 是 |
yjo22 |
023020 |
提示日期不正确 | 提示:Invalid day Entered. The date should be valid for the given month. | 是 |
yjo23 |
020019 |
提示日期不正确 | 提示:Valid flight dates are after 06/23/17 | 否 |
yjo24 |
020119 |
可以查询航班 | 可以查询航班 | 是 |
yjo25 |
022819 |
可以查询航班 | 可以查询航班 | 是 |
yjo26 |
022919 |
提示日期不正确 | 提示:Invalid day Entered. The date should be valid for the given month. | 是 |
用例数据:
errDay
脚本代码:
SystemUtil.Run "C:/Program Files (x86)/HP/QuickTest Professional/samples/flight/app/flight3a.exe" Dialog("Login").WinEdit("Agent Name:").Set "quite" Dialog("Login").WinEdit("Password:").SetSecure "594bcbb5b342075824ba8910548f2659b0b60a71" Dialog("Login").WinButton("OK").Click Call DataTable.ImportSheet("C:/Users/MTLin/Desktop/errDay.xls","Global","Global") Data = DataTable.Value("errDay","Global") Window("Flight Reservation").WinObject("Date of Flight:").Type Data Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt" errMsg=Window("Flight Reservation").Dialog("Flight Reservations").Static("nativeclass:=Static","window id:=65535").GetROProperty("text") If Instr(errMsg,"Invalid day Entered. The date should be valid for the given month.") > 0 Then Reporter.ReportEvent micPass,"check error message","Invalid day Entered. The date should be valid for the given month." else Reporter.ReportEvent micFail,"check error message","提示信息不是:Invalid day Entered. The date should be valid for the given month." end if Window("Flight Reservation").Dialog("Flight Reservations").WinButton("确定").Click Window("Flight Reservation").Close
执行结果:
errMonth
脚本代码:
SystemUtil.Run "C:/Program Files (x86)/HP/QuickTest Professional/samples/flight/app/flight3a.exe" Dialog("Login").WinEdit("Agent Name:").Set "quite" Dialog("Login").WinEdit("Password:").SetSecure "594bcbb5b342075824ba8910548f2659b0b60a71" Dialog("Login").WinButton("OK").Click Call DataTable.ImportSheet("C:/Users/MTLin/Desktop/errMonth.xls","Global","Global") Data = DataTable.Value("errMonth","Global") Window("Flight Reservation").WinObject("Date of Flight:").Type Data Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt" errMsg=Window("Flight Reservation").Dialog("Flight Reservations").Static("nativeclass:=Static","window id:=65535").GetROProperty("text") If Instr(errMsg,"Invalid month Entered.The month must be greater than 01 and less than 12.") > 0 Then Reporter.ReportEvent micPass,"check error message","Invalid month Entered.The month must be greater than 01 and less than 12." else Reporter.ReportEvent micFail,"check error message","提示信息不是:Invalid month Entered.The month must be greater than 01 and less than 12." end if Window("Flight Reservation").Dialog("Flight Reservations").WinButton("确定").Click Window("Flight Reservation").Close
执行结果:
beforeNow
脚本代码:
SystemUtil.Run "C:/Program Files (x86)/HP/QuickTest Professional/samples/flight/app/flight3a.exe" Dialog("Login").WinEdit("Agent Name:").Set "quite" Dialog("Login").WinEdit("Password:").SetSecure "594bcbb5b342075824ba8910548f2659b0b60a71" Dialog("Login").WinButton("OK").Click Call DataTable.ImportSheet("C:/Users/MTLin/Desktop/beforeNow.xls","Global","Global") Data = DataTable.Value("beforeNow","Global") Window("Flight Reservation").WinObject("Date of Flight:").Type Data Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt" errMsg=Window("Flight Reservation").Dialog("Flight Reservations").Static("nativeclass:=Static","window id:=65535").GetROProperty("text") If Instr(errMsg,"Valid flight dates are after 06/23/17") > 0 Then Reporter.ReportEvent micPass,"check error message","Valid flight dates are after 06/23/17" else Reporter.ReportEvent micFail,"check error message","提示信息不是:Valid flight dates are after 06/23/17" end if Window("Flight Reservation").Dialog("Flight Reservations").WinButton("确定").Click Window("Flight Reservation").Close
执行结果:
rightData
脚本代码:
SystemUtil.Run "C:/Program Files (x86)/HP/QuickTest Professional/samples/flight/app/flight3a.exe" Dialog("Login").WinEdit("Agent Name:").Set "quite" Dialog("Login").WinEdit("Password:").SetSecure "594bcbb5b342075824ba8910548f2659b0b60a71" Dialog("Login").WinButton("OK").Click Call DataTable.ImportSheet("C:/Users/MTLin/Desktop/rightData.xls","Global","Global") Data = DataTable.Value("rightData","Global") Window("Flight Reservation").WinObject("Date of Flight:").Type Data Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt" Window("Flight Reservation").WinComboBox("Fly To:").Select "Paris" Window("Flight Reservation").WinButton("FLIGHT").Click Window("Flight Reservation").Dialog("Flights Table").WinButton("Cancel").Click Window("Flight Reservation").Close
执行结果:
测试小结:设置日期查询该日期的航班的功能还是可以满足基本需求的,但是在输入错误的日期时,提示的错误信息不够准确,当输入的日为00时提示信息应该是日不符合该月份的限制,但是提示信息是不能比当前日期早。
实验总结:
使用自动化的测试方法可以方便管理测试数据;可以管理所有测试用到的Object;在执行测试之后方便查看哪些测试用例没有通过;减少人工管理的麻烦和提高测试的执行效率;可以反复执行测试用例,减少偶然发生的情况。
一个功能的测试应该是写一个测试脚本,因为对QTP的VB测试脚本的编写不够了解,只好在执行自动化测试之前可以先对测试数据进行分类,根据不同类的测试数据编写相对应的测试脚本。