软件测试技术与实践第6章功能测试主要内容6.1QTP简介6.2QTP安装6.3测试流程6.4Windows应用程序测试6.4.1QTP主界面6.4.2应用程序实例——飞机订票系统Flight6.4.3录制测试6.4.4运行测试6.4.5分析测试结果6.4.6产生检查点6.4.7参数化测试6.5Web站点测试6.5.1准备录制6.5.2录制Web上的会话。6.5.3增强及调试测试。6.5.4运行测试6.5.5分析测试报告并提交缺陷功能测试(Functionaltesting)是指通过对程序进行功能抽象,将其划分为功能单元,然后通过数据抽象,对每个功能单元生成测试数据(用例)进行测试,检查程序产品是否达到用户要求的功能。测试时,将测试对象视为打不开的黑盒,只需测试产品的功能,而不需要了解其内部结构和处理过程,因此又称为黑盒测试。功能测试的目的主要用于检查实际软件的功能是否符合用户的需求。如果曾以手动方式测试过应用程序或网站,就会很清楚手工测试方式的缺点——既耗时又乏味,而且需投入大量的人力资源。最为糟糕的是,因时间的限制,在应用程序发布前以手工方式往往无法彻底地测试其所有功能。现有软件功能测试工具较多,但基本原理都是以录制和回放的方式实现自动化功能测试。MercuryQuickTestProfessional(简称QTP)就是一款功能测试工具。使用QTP进行自动测试,由于极大地加快了测试流程,从而解决了这些问题。可以创建用于检查应用程序或网站所有方面的测试,然后在每次程序或网站更改时运行这些测试即可。运行测试时,QTP将模拟实际用户的操作(如,在应用程序或网站窗口中移动鼠标光标、单击图形用户界面对象和输入键盘输入),且比任何实际用户操作都快[23]。本章将详细介绍功能测试工具QTP。6.1QTP简介QTP是Mercury公司开发的一款先进的自动化测试工具。目前该公司已被惠普(HP)收购。惠普官方网站对该工具做了一些介绍。Mercury的QuickTestProfessional™企业级自动化测试工具针对功能测试和回归测试自动化提供业界最佳的解决方案,采用关键字驱动(keyword-Driven)测试的概念,能完全简化测试的创建和维护工作,适于所有主要软件应用程序和环境的测试。QTP的关键字驱动测试方法可通过与关键字视图双向同步集成的脚本和调试环境,测试自动化专家对内在测试和对象属性具有完全访问权限。QTP通过对WEB页面或应用程序所进行的操作录制成自动化测试脚本,然后运行回放测试脚本,并可以在其中插入各种检查点来实现对WEB页面或应用程序的功能的检查。QTP进行功能测试的测试流程主要可分为制定测试计划、创建测试脚本、增强测试脚本、运行测试和分析测试结果五个步骤[24]。部分详细信息可参考第五章关于测试工具简介中的QTP介绍。6.2QTP安装本节将详细介绍HP网站提供的自动化功能测试工具QuickTestProfessional9.2试用版的安装。根据该软件安装的流程,整个安装过程可以划分为两个步骤。1.安装Microsoft.NETFramework2.0在安装QTP测试工具之前,必须确保安装了Microsoft.NETFramework2.0程序。运行图6-1中“QuickTestProfessional安装程序”,按照安装向导默认安装,直至出现“安装完成”提示。图6-1QuickTestProfessional安装向导页面图2.安装QTP再次运行图6-1中的“QuickTestProfessional安装程序”,接受许可证协议后,在注册信息页填入维护号(序列号):0123-2820602186,如图6-2所示。图6-2维护号向导页面图按照安装向导默认安装,直至“客户注册”。无须注册,完成安装。重启电脑,QTP会自动完成剩下的配置。至此,试用期14天的QTP安装完成。3.注册购买注册码,按向导完成注册。运行QTP,打开“Help”菜单下的“AboutQuickTestProfessional”,出现图6-3所示界面。提示:图中的ActiveX,VisualBasic和Web是QTP自带的内部插件。QTP在使用其它不同插件时需要选择不同的License。为提高运行效率,针对性地选择加载所需的插件。图6-3QTP信息显示图6.3测试流程完整的QTP测试流程由七个阶段组成[23,25-26]。1.准备录制。2.录制应用程序或Web上的会话。3.增强测试。4.调试测试5.运行测试。6.分析测试结果。7.报告缺陷。6.4Windows应用程序测试6.4.1QTP主界面在开始创建测试之前,首先熟悉下QTP的主窗口,按如下步骤打开QTP。1.选择Windows的【开始】→【程序】→【QuickTestProfessional】→【QuickTestProfessional】或双击桌面快捷图标“QuickTestProfessional”,出现“Add-inManager”对话框,如图6-4所示。提示:如果希望下一次打开QTP不出现该对话框,可以清除“Showonstartup”复选框,也可以在QTP的菜单“Tools”“Options”的“General”选项卡内进行设置。图6-4插件管理对话框2.点击“OK”按钮,出现欢迎界面,如图6-5所示。在此可以选择教程、开始录制新测试、打开已有测试或新建空测试。若希望下次打开QTP不出现该界面,可以清除“Showthisscreenonstartup”复选框,或在QTP的菜单“Tools”“Options”的“General”选项卡内进行设置。图6-5QTP欢迎界面当选择创建一个测试(比如,新建空测试)之后,就显示QTP主窗口,如所示。数据表测试面板工具栏标题栏图6-6QTP主窗口提示:默认打开QTP时,主窗口中的有些组件(如,调试工具栏、操作工具栏等)不会显示,可以在“View”菜单下选择设置其为显示。其中,操作工具栏只在关键字视图中显示,若在测试中插入可重用操作或外部操作,其将自动显示。6.4.2应用程序实例——飞机订票系统FlightQTP软件安装之后,其应用程序中有自带的一个windows版的模拟班机预订与信息服务的应用程序Flight。其默认安装在绝对路径“C:\ProgramFiles\MercuryInteractive\QuickTestProfessional\samples\flight\app”中,其中有三个版本的Flight,分别为flight3a,flight4a和flight4b,每个版本都有各自的bug。系统登录密码可通过登录界面的“Help”获取。本章将以flight4a版本为例,结合QTP完成系统登录及机票预订的测试。提示:要养成及时查看帮助的良好习惯。6.4.3录制测试当操作执行Flight系统时,QTP可以录制用户的动作步骤。这些动作就是测试的依据。当停止录制时,可以看到关键字视图里新产生的测试步骤。本节将录制Flight系统登录及从Denver到Frankfurt航班的进程。1.启动QTP并新建一个空测试。2.设置录制和运行测试项。选择菜单“Tools”“Options”的“General”选项卡,点击“RestoreLayout”按钮,以恢复默认主窗口。选择菜单“Automation”“RecordandRunSettings”。确保在“Web”选项卡上选中“Recordandruntestonanyopenbrowser”,在“WindowsApplications”选项卡上选中“Recordandrunonlyon”,并选择“ApplicationsopenedbyQuickTest”和“Applicationsspecifiedbelow”复选框。然后,点击绿色“+”号,在“ApplicationsDetails”界面中添加应用程序可执行文件flight4a.exe及其所在路径:C:\ProgramFiles\MercuryInteractive\QuickTestProfessional\samples\flight\app,如图6-7所示。图6-7ApplicationsDetails界面点击OK按钮,完成设置,如图6-8所示。图6-8RecordandRunSettings界面提示:为了后续参数化运行的方便,建议此处选择“RecordandruntestonanyopenWindows-basedapplication”,并在下一步录制开始后,手工执行Flight程序,打开登录界面。3.开始在Flight上录制测试。选择“Automation”“Record”,或点击测试工具栏“Record”按钮,或按F3快捷键,QTP开始录制,且打开Flight登录界面。4.登录Flight。在AgentName中输入mercury,在Password中输入mercury,点击OK按钮进入航班预订界面。5.航班预订。在“DateofFlight”中输入时间,如07/10/11;在“FlyFrom”列表中选择Denver;在“FlyTo”列表中选择Frankfurt;点击“Flights…”按钮,在“FlightsTable”界面中选择所需航班(如,第一行13634次航班);在“Name”中输入姓名wang;选择好机票数量和舱位等级,点击“InsertOrder”按钮,生成订单号21,完成航班预订,如图6-9所示。图6-9Flight系统航班预订界面6.停止录制。选择“Automation”“Stop”,或点击测试工具栏“Stop”按钮,或按F4快捷键,停止录制程序。至此已预定了一张虚拟的从Denver飞往Frankfurt航班的经济舱机票。QTP录制了从“Record”直到“Stop”期间的Flight程序所有的操作。7.保存测试。选择菜单“File”“Save”,取文件名为FlightTest。确保“SaveActiveScreenfiles”复选框被选定。提示:可通过“View”“ExpandedAll”和“CollapseAll”菜单来扩展和收起所有的测试树。6.4.4运行测试选择“Automation”“Run”,或点击测试工具栏“Run”按钮,或按F5快捷键,打开运行对话框,选择默认设置,点击“确定”按钮运行所录制的测试FlightTest。当运行测试时,QTP关键字视图左边距中的黄色箭头指示了正在运行的步骤。正在运行测试的QTP界面如图6-10所示。提示:运行测试时,经常会遇到“Objectnotvisible”错误提示,一般都是因为运行时QTP界面将应用程序的某一部分界面遮挡住造成的,只需要将应用程序界面移到与QTP界面不重复的区域即可。图6-10正在运行测试的QTP界面6.4.5分析测试结果测试运行结束后,QTP会自动打开测试结果界面,如图6-11所示。测试结果详细信息测试结果树循环概要状态概要图6-11测试结果界面通过测试结果树可以检查运行测试时QTP执行的步骤。当单击测试结果树上的某个步骤时,该步骤测试结果的详细信息就会显示在右边面板内,且相应对象被突出显示。至此,已成功创建并运行了在Flight系统上预订从Denver飞往Frankfurt航班的测试。6.4.6产生检查点QTP提供了多种类型的检查点[23],如表6-1所示。表6-1QTP检查点类型及用法表检查点类型描述用法示例标准检查点检查对象的属性值检查是否选中某单选按钮图像检查点检查图像的属性值检查图像源文件是否正确表检查点检查表中的信息检查表单元格中的值是否正确页面检查点检查Web网页的特性检查Web网页载入的时间或者链接是否有效文本/文本区域检查点检查文本字符串是否显示在网页或应用程序窗口中的适当位置检查预期的文本字符串是否显示在网页或对话框上的预期位置表6-1QTP检查点类型及用法表(续)位图