《QTP自动化测试讲义电子教案.doc》由会员分享,可在线阅读,更多相关《QTP自动化测试讲义电子教案.doc(157页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。QTP自动化测试讲义-QTP课程笔记QTP介绍知识点HPQuickTestProfessional是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。通过QTP可以测试标准的WindowsApplications、Web对象、ActiveX控件和VisualBasic应用程序。我们还可以获得其他的QTP加载项以便用于许多特殊的环境,例如Java、Oracle、SAP解决方案、.NETWindows以及WebForms、Siebel、PeopleSoft、Web服
2、务和终端仿真应用程序。QTP通过录制在应用程序中执行的操作,可以方便地创建测试和业务组件。测试和业务组件是两种不同类型的文档,可用于测试您的应用程序或网站是否按预期工作。示例演示程序采用QTP自带的Flight程序,生成一张新的订单。QTP程序的结构知识点录制选项的含义:为了提高脚本的可移植性,建议两边都选最上面如果开始录制时没有弹出该窗口,可以利用菜单Automation/RecordandRunSetting来启动由QTP自己打开的程序:如果选中该选项,则第一次录制时QTP只会生成启动程序的脚本,而不会录制后续的动作。快捷方式的程序是否录制:通过快捷方式启动程序程序的动作也能够录制下来。指
3、定要录制的程序:开始录制后自动启动指定的程序VCQTP工程projectTEST模块moduleAction函数functionSub/Function到TEST目录的Action1下面打开文件Script.mts,可以看到录制的代码QTP脚本的特点:1、脚本回放成功需要:代码(脚本)+对象(在对象库中有记录相关对象的信息)2、脚本语法:对象类型(“对象名称”).方法参数1,参数2,由QTP打开程序,有几种方法:1、 SystemUtil.RunSystemUtil对象的Run方法SystemUtil.RunD:ProgramFilesHPQuickTestProfessionalsample
4、sflightappflight4a.exe参数示例:file:D:ProgramFilesHPQuickTestProfessionalsamplesflightappflight4a.exeparams:op:D:ProgramFilesHPQuickTestProfessionalsamplesflightappmdoe:openSystemUtil.RunD:ProgramFilesHPQuickTestProfessionalsamplesflightappflight4a.exe,D:ProgramFilesHPQuickTestProfessionalsamplesflighta
5、pp,open2、InvokeApplication调用程序函数InvokeApplicationD:ProgramFilesHPQuickTestProfessionalsamplesflightappflight4a.exe3、 WSH通过wsh对象的Run(bat)或者exec(exe)方法DimoWSHSetoWSH=CreateObject(WScript.shell)oWSH.execD:ProgramFilesHPQuickTestProfessionalsamplesflightappflight4a.exeSetoWSH=nothingDimoWSHSetoWSH=Creat
6、eObject(WScript.shell)oWSH.runE:WORKProjects3.batSetoWSH=nothing参照文章:为确保脚本移植性,可以引入环境变量,例如:SystemUtil.RunEnvironment.Value(ProductDir)&samplesflightappflight4a.exeEnvironment.Value(ProductDir):QTP产品所安装的路径Environment.Value(TestDir):工程(TEST)所在的路径可使用下面的语句来检查:msgboxenvironment(ProductDir)msgboxenvironmen
7、t(TestDir)示例以下结合err对象和onerrorresumenext语句做例子:OnErrorResumeNextOnerrorgoto0DimbFlagbFlag=CBool(bFlag)bFlag=InvokeApplication(C:win2000-calc11111.exe)msgboxbFlagIferr.number0Thenmsgboxerr.descriptionerr.clearEndIfQTP的对象识别原理知识点举例:找关羽!依据的是这个人的特征,而不是人名,人名是有重复的。1、录制原理QTP首先“观看”要录制的对象,然后将其作为测试对象进行存储,确定该对象符合
8、的测试对象类,例如标准Windows对话框(Dialog)、Web按钮(WebButton)或VisualBasic滚动条对象(VbScrollBar)。然后,对于每个测试对象类,QTP都有一个始终要记住的强制属性的列表,在录制对象时,QTP始终记住这些默认的属性值,然后再检查“视图”页面上其余的对象、对话框或其他父对象,以检查该描述是否足以唯一标识该对象,如果不足以进行唯一标识,QTP将向该描述中逐渐添加辅助属性,直到经过编译成为唯一的描述为止,如果没有可用的辅助属性,或者那些可用的辅助属性仍不足够创建一个唯一的描述,QTP将添加一个特殊的顺序标识符(例如页面上或源代码中对象的位置)以创建唯
9、一的描述。在回放过程中,QTP会搜索与录制时记住的测试对象的描述完全匹配的运行时对象,它需要找到与录制时用于创建唯一描述的强制属性和任何辅助属性完全匹配的对象,只要应用程序中的对象没有较大的改变,录制过程中记住的描述几乎总是足以使QTP唯一标识出该对象。对于大部分对象,这种方法是适用的,但应用程序中包含的某些对象可能在后续运行会话期间很难标识。但即使录制的描述不再准确,QTP也能通过其“智能标识”机制使用非常相似的排除过程来标识对象。即使测试对象属性的值有所改变,QTP的TestGuard技术机制也能通过使用“智能标识”标识对象从而维护测试或组件的可重用性。属性识别再到属性value的识别,就
10、确定了对象。QTP能识别对象不是因为对象的名称,而是从对象的强制属性的取值来识别对象。而名称就算不一样都无所谓。菜单项:Tools/ObjectIdentification2、回放原理一、先根据脚本中的对象类型在对象库中查找是否存在该类型的对象。对象类型是指在对象类型库(ObjectIdentification)中存在的类型。二、根据脚本中对象的名称在对象库中查找是否存在该名称的对象。三、根据对象类型库中设定的对象识别机制定位对象:1、先根据强制属性匹配实际对象的属性值:(1)唯一匹配,找到对象,退出识别机制;(2)多个匹配,采用辅助属性辅助识别;(3)不匹配,报错;2、根据辅助属性匹配实际对
11、象的属性值:(1)唯一匹配,找到对象,退出识别机制;(2)多个匹配,采用顺序标识符辅助识别;(3)不匹配,报错;3、根据顺序标识符匹配实际对象的顺序值:(1)唯一匹配,找到对象,退出识别机制;(2)多个匹配,尝试采用智能识别;(3)不匹配,报错;其中顺序标识符中有两种识别机制:index:控件数组的索引值。location:对象在GUI界面上的位置,遵循“先从上到下,再从左到右”的原则。4、QTP采用自身的一套智能识别机制识别(SmartIdentification)。示例利用win2000-calc.exe计算器录制一段脚本1+2=3修改对象库中各对象的Name,则脚本中的名称也一并变化,并
12、且不管把名称修改成什么,回放结果都是1+2=3,并不因Name的不同而去结算别的值(改了名你还是你)。不重新录制,而是修改这段脚本,计算3+4=7。方法:利用对象库中的添加对象按钮把按钮3和4加进来,然后修改脚本。ObjectRepository:对象库,查看每个定义的对象的属性和值。Highlight:高亮显示识别的是哪个对象。ObjectSpy:对象探测器,利用它可以正确探测到对象的实际值。AddObjectstoLocal:添加对象库UpdatefromApplication:更新对象属性locateinrepository:定位指定的对象是对象库中的哪个对象不重新录制,修改脚本,计算5
13、+6=11方法:利用ActiveScreen(ViewActiveScreen)实现,鼠标指向对象,右键执行“Add/ViewObjectAddtorepository”保存脚本,“Action1SnapShots”目录下放着许多png文件。练习录制win2000-calc.exe计算器。QTP脚本的调试知识点Tools/CheckSyntax:运行程序之前先检查语法调试功能:StepInto:F11,单步调试,按一次F11脚本执行一句。StepOver:F10,跳过(其实执行了,只是没有单步调试)。如果是普通语句,则按一次F10执行一句,如果遇到过程/函数,则按一次F10会把该过程/函数一次
14、性执行完。StepOut:Shift+F11,从过程/函数体内跳出(其实也执行了,只是执行完跳出来)。StepOver是在遇到过程/函数时一次性快速把过程/函数执行完,StepOut则是在单步执行到过程/函数内部后,快速执行完并跳出来,进入了过程/函数体后再用StepOver是跳不出来的。运行功能:F5确定:开始运行RunfromStep:鼠标从哪一行开始闪,程序就从哪一行开始运行,会直接运行完。Debugfromstep:从光标处开始调试,要点F5、F11、F10、Shift+F11继续运行。RuntoStep:运行到光标处Breakpoint:F9,断点,运行到断点处会停止,按F5、F11
15、、F10、Shift+F11继续运行。断点与RuntoSetp的相同点是运行到指定位置都会暂停,但断点的好处是可以设置多个暂停点。调试视图:View/DebugViewerwatch监视窗口:选择一个变量,右键执行“AddtoWatch”,就可以在watch窗口中只监视这个变量。Variables变量的查看窗口:在执行时动态的看到变量的值Command命令行窗口:可以动态的更改变量和语句,也可以临时加一些变量和语句示例示例1:录制计算器进行加法计算,先算一个整数相加,再算一个浮点数相加,然后演示运行功能。SystemUtil.RunC:WINDOWSsystem32calc.exeWindow
16、(计算器).WinButton(1).ClickWindow(计算器).WinButton(+).ClickWindow(计算器).WinButton(3).ClickWindow(计算器).WinButton(=).ClickWindow(计算器).WinButton(C).ClickWindow(计算器).WinButton(4).ClickWindow(计算器).WinButton(.).ClickWindow(计算器).WinButton(5).ClickWindow(计算器).WinButton(+).ClickWindow(计算器).WinButton(8).ClickWindow
17、(计算器).WinButton(.).ClickWindow(计算器).WinButton(8).ClickWindow(计算器).WinButton(=).ClickWindow(计算器).Close示例2:录制一个计算器加法功能,把整数加法和浮点数加法分别封装成两个过程,然后演示各个调试功能。参考代码如下:SystemUtil.Runcalc.exeWindow(计算器).ActivateWindow(计算器).WinButton(C).ClickintCalcfloatCalcSubintCalc()WithWindow(计算器).WinButton(1).Click.WinButton
18、(+).Click.WinButton(2).Click.WinButton(=).ClickEndwithEndSubSubfloatCalc()Window(计算器).WinButton(1).ClickWindow(计算器).WinButton(+).ClickWindow(计算器).WinButton(2).ClickWindow(计算器).WinButton(=).ClickWindow(计算器).WinEdit(Edit).SetCaretPos3Window(计算器).WinButton(4).ClickWindow(计算器).WinButton(.).ClickWindow(计
19、算器).WinButton(5).ClickWindow(计算器).WinButton(+).ClickWindow(计算器).WinButton(6).ClickWindow(计算器).WinButton(.).ClickWindow(计算器).WinButton(9).ClickWindow(计算器).WinButton(=).ClickEndSubWindow(计算器).Close示例3:定义两个变量,代替飞机票预定系统输入的用户名和密码。然后将这两个变量加到调试窗口中:AddToWatch。利用F11单步调试时能够看到这两个变量的值。(如果运行时看不到DebugViewer,则可在调试
20、状态下打开该窗口)DimAgentName,PasswordAgentName=adminPassword=mercurySystemUtil.RunD:ProgramFilesMercuryInteractiveQuickTestProfessionalsamplesflightappflight4a.exeDialog(Login).ActivateDialog(Login).WinEdit(AgentName:).SetAgentNameDialog(Login).WinEdit(Password:).SetPasswordDialog(Login).WinButton(OK).Clic
21、kWindow(FlightReservation).Close练习练习1:找到Tab键和Return键的字符串值。练习2:自己录制一下飞机预订系统admin/mercury,做一些调试和运行练习。插入OutputValue知识点输出值OutputValue:获取实际结果,点工具栏的Results快捷键能看到实际运行结果。如何让QTP记住程序的输出值并记录在Results中:在录制脚本并执行到出结果的地方时,执行Insert/OutputValue/StandardOutputValue,选择要记录的对象和对象的属性。等到录制的脚本执行时,程序就会记录实际运行的结果值并输出到Results报表
22、中。示例示例:计算1+2和2+2,把计算结果取出来放到dtGlobalSheet中去。相关语句:Window(计算器).WinEdit(Edit).OutputCheckPoint(Edit)SystemUtil.Runcalc.exeWindow(计算器).WinButton(datatable(num1,dtGlobalSheet).ClickWindow(计算器).WinButton(+).ClickWindow(计算器).WinButton(2).ClickWindow(计算器).WinButton(=).ClickWindow(计算器).WinEdit(Edit).OutputChe
23、ckPoint(Edit_5)Ifdatatable(C,dtglobalsheet)=datatable(Edit_text_out1,dtglobalsheet)ThenmsgboxPelsemsgboxFEndIfWindow(计算器).CloseReporter.ReportEvent:Reporter.ReportEventEventStatus,ReportStepName,Details,ReporterEventStatus:0ormicPass,1ormicFail,2ormicDone,3ormicWarning示例:Reporter.ReportEvent1,Custom
24、Step,Theuser-definedstepfailed.或者Reporter.ReportEventmicFail,CustomStep,Theuser-definedstepfailed.练习练习1:录制飞机订票系统,订完票后把订单号取出来放到OutputValue中。插入同步点知识点QTP脚本语言为VBScript,脚本在执行的时候,执行语句之间的时间间隔是固定的,也就是说脚本在执行完当前语句之后,等待固定的时间间隔后开始执行下一语句。问题是后续的语句是在前面语句执行的结果上执行的,如果语句开始执行但是前面语句还没有执行完,这将导致错误的发生。解决的办法是加入同步点或使用wait语句
25、。Insert/SynchronizationPoint:插入同步点Wait(n):等待n秒钟的时长WaitProperty:插入同步点后,则生成的是WaitProperty语句,表示等待某个属性值的出现。利用统计事物耗时的脚本可以验证wait语句等待的时间:Services.StartTransactionwwait(5)Services.EndTransactionwmsgboxOK可以到Results中查看事物耗时全局同步点:File/TestSettings/Run/Objectsynchronizationtimeout步骤同步点:Insert同步点(开始录制,将鼠标停留在待测试系统
26、的控件上,选择菜单添加同步点,如果此时待测试系统最小化,需要按住键盘左边CTRL加右键点击任务栏使系统恢复显示)Window(FlightReservation).ActiveX(ThreedPanelControl).WaitPropertytext,InsertDone.,10000实际运行时等待时间为:最多等“全局同步点时长+步骤同步点时长”,最短等到同步现象出现为止。示例在进度条走完之后要加个语句来添加同步点:Propertyname=textPropertyValue=“InsertDone”,10000含义是等到“InsertDone”出现,或者最多等10秒钟(毫秒)再做下面的事如
27、果不加这个同步点,QTP就会在进度条还没有走完就迫不及待的做后面的事。添加步骤同步点后,脚本添加如下语句:Window(FlightReservation).ActiveX(ThreedPanelControl).WaitPropertytext,InsertDone.,10000练习1、调试回放错误错误1:调用的程序目录不正确改正方法:修改程序启动脚本为SystemUtil.RunEnvironment(ProductDir)&samplesflightappflight4a.exe错误2:找不到FlyFrom对象改正方法:使用locateinrepository定位时定位不到这个对象。使用
28、AddObjectstoLocal命令把FlyFrom多选框添加进来。然后使用Automation/RunFromStep继续运行,不必从头开始。错误3:无法识别Business按钮,请检查这个对象的属性是否与应用程序中显示的一致。改正方法:利用locateinrepository果然无法定位成功。利用ObjectSpy检查Business按钮,并与对象库中记录的该对象对比,发现text属性不对,应该是“Business”。错误4:Menu对象不可用。原因是QTP一直在尝试选择菜单命令,但是由于进度条没有走完,所以选择不成功。改正方法:可以修改File/Setting/Run中全局同步点,或者
29、也可以添加同步点。错误5:OrderNo对象匹配到了多个对象。添加附加属性以唯一识别这个对象。改正方法:查看ObjectIdentification,发现WinCheckBox的强制属性应该是nativeclass和text,但是对象库中的OrderNo没有text属性。直接使用UpdatefromApplication命令可以更新OrderNo的属性值。(或者使用“+”来添加也可以)错误6:对象不可用。原因是没有输入OrderNo号,所以OK按钮无法点击改正方法:设置一个订单号值,代码如下Window(FlightReservation).Dialog(OpenOrder).WinEdit(
30、Edit).Set12、调试回放错误使用File/ImportTestFromZipFile命令,QTP可以直接导入zip格式文件错误1:调用的程序目录不正确改正方法:修改程序启动脚本为SystemUtil.RunEnvironment(ProductDir)&samplesflightappflight4a.exe错误2:找不到FlightReservation窗口。用户名框为空。改正方法:对象库中AgentName:对象的attachedtext与Password:的attachedtext一样,所以用户名和密码都输入到了密码框中。使用UpdatefromApplication命令更新Ag
31、entName对象。错误3:找不到FlightReservation窗口。改正方法:选择FlightReservation对象,利用Hightlight高亮却找不到对应的对象。原因是强制属性regexpwndtitle的值写错了,应该改成“FlightReservation”。错误4:找不到FlightsTable窗口改正方法:利用Hightlight高亮却找不到对应的对象。原因是强制属性text的值写错了,应该改成“FlightsTable”,加一个空格。错误5:无法识别OK按钮改正方法:OK按钮的text属性值有误,利用UpdatefromApplication命令更新。错误6:无法识别N
32、ame对象改正方法:利用UpdatefromApplication命令更新,nativeclass属性的值应该是Edit。错误7:识别不了Tickets对象改正方法:利用UpdatefromApplication命令更新,nativeclass属性的值应该是Edit。错误8:无法识别Business对象改正方法:利用UpdatefromApplication命令更新,三个按钮的nativeclass都是Button。插入CheckProperty知识点如何在自动化测试当中检查实际结果是否符合预期结果呢?在程序执行到结果刚刚出现的地方时,在QTP中点击键盘快捷键F7,弹出“步骤添加器”点小魔方图
33、标,用“手工具”确定对象,比如文本框,Operation选择CheckProperty方法,设置PropertyName和PropertyValue,其中PropertyName是该对象的某个属性(属性名称要写正确),PropertyValue就是我们加到脚本中的预期结果。脚本实际运行到这里时会取出实际值与我们设置的预期值进行比较。OK后继续录制,直到结束。示例示例1:录制计算器加法运算,先计算5+6,插入属性检查点检查预期结果是否为“11.”,然后再计算10+20,插入属性检查点,但要将预期结果设置为错误的“20.”,观察运行后QTP是否能够正确判断结果对错。参考代码:SystemUtil.
34、RunC:WINDOWSsystem32calc.exeWindow(计算器).WinButton(5).ClickWindow(计算器).WinButton(+).ClickWindow(计算器).WinButton(6).ClickWindow(计算器).WinButton(=).ClickWindow(计算器).WinEdit(Edit).CheckPropertytext,11.Window(计算器).WinButton(C).ClickWindow(计算器).WinButton(1).ClickWindow(计算器).WinButton(0).ClickWindow(计算器).Win
35、Button(+).ClickWindow(计算器).WinButton(2).ClickWindow(计算器).WinButton(0).ClickWindow(计算器).WinButton(=).ClickWindow(计算器).WinEdit(Edit).CheckPropertytext,20.Window(计算器).Close练习练习1:GUI测试中测试Tab顺序是否正确?使用CheckProperty方法,检查每个对象的focused属性是否为True。录制飞机票预定系统的登录和订票窗口,检查每个控件的Tab顺序是否正确。并在插入CheckProperty后把订单号作为输出值输出出
36、来。代码:SystemUtil.RunD:ProgramFilesMercuryInteractiveQuickTestProfessionalsamplesflightappflight4a.exeDialog(Login).WinEdit(AgentName:).CheckPropertyfocused,TrueDialog(Login).WinEdit(AgentName:).SetadminDialog(Login).WinEdit(AgentName:).TypemicTabDialog(Login).WinEdit(Password:).CheckPropertyfocused,t
37、rueDialog(Login).WinEdit(Password:).SetSecure4a92993e3d6d6d1899edcb3bDialog(Login).WinEdit(Password:).TypemicTabDialog(Login).WinButton(OK).CheckPropertyfocused,true插入CheckPoint知识点预期结果:录制时设置并存储实际结果:运行时QTP会自动的捕获测试结果:QTP拿实际结果与预期结果进行比较,如果相同则pass,如果不同则failCheckPoint与CheckProperty有什么区别:CheckProperty只能检查对
38、象的属性值是否正确,但CheckPoint可以检查更广泛的东西。如果只是检查对象的属性值,则两者差不多。CheckPoint与Output有什么区别:Checkpoint(将期望结果和实际结果进行比较)包含了Output(只是输出值)的作用。CheckPoint与同步点有什么区别:检查点(具备Checkpointtimeout属性)是一种特殊的同步点,它具备同步的功能,但并不意味着有检查点就可以不要同步点了,要看你的意图是什么,区别在于同步点预期和实际不符时,不会报错,只会有warning,而检查点预期和实际不符时,结果是fail。1、标准(standard)F12添加一个标准检查点基于对象识
39、别,检查对象的属性值2、图像(image):“图像检查点”检查应用程序或网页中的图像的值。除了看图的内容,还看其它属性隐藏在标准检查点里面选中compareimagecontent常用于Web,检查图片的内容,还有图片的位置等属性3、表(table):“表检查点”检查表内部的信息。隐藏在标准检查点里面4、文本(text):“文本检查点”检查文本字符串是否显示在应用程序或网页的适当位置中。红色表示被检查的内容蓝色表示周围的参照物Matchcase:大小写必须匹配Exactmatch:精确匹配Ignorespaces:忽略空格Textnotdisplayed:该文本不要显示5、文本区域(texta
40、rea)(与文本检查点区别在于文本区域检查点不支持Web页面文字检查)文本区域检查点检查文本字符串是否按照指定的条件显示在WindowsApplications中所定义的区域内6、位图(bitmap):纯粹看图BitmapCheckPointTools/Options/Run:Always只检查选定区域7、可访问性(accessibility)可访问性检查点就是检查网页上的所有图片是否都添加了Alt属性。W3C是一个国际组织,www.w3.org,制定html里面的所有规范。网页的图片常常由于网速慢、带宽不够而显示不出来,但显示不出来的图片上会有文字。Alt属性:当图片无法显示时采用替代文字。
41、规范的要求是最好有Alt属性。如何更改可访问性检查点的勾选(Insert检查点时无法给选项勾选或不选)Tools/Options/Web/Advanced:在这里可以设置8、XMLFromApplication能够检查应用程序的XML文件的Value是否正确FromResources直接设置要检查的XML文件,然后利用RUN就可以检查,不用录制9、页面(page):检查所有与网页有关的东西隐藏在标准检查点里面:Page选择检查点时要点击在空白的地方BrokenLinks:是否有无效链接常用于Web10、数据库(database)后面单独讲练习按照DataTable中的Date、From、To订
42、票,选择了航班后,将OrderInformation中的航班号、航线、订单号作为结果分别输出到DataTable中的FlightNo、Airline和OrderNo字段上去。然后启动传真,并进行传真预览,检查传真预览中的Customer和Class文本区域信息是否与DataTable中预设相同。参考代码:Window(FlightReservation).ActiveX(MaskEdBox).TypeDataTable(Date,dtGlobalSheet)Window(FlightReservation).WinComboBox(FlyFrom:).SelectDataTable(From,
43、dtGlobalSheet)Window(FlightReservation).WinComboBox(FlyTo:).SelectDataTable(To,dtGlobalSheet)Window(FlightReservation).WinButton(FLIGHT).ClickWindow(FlightReservation).Dialog(FlightsTable).WinButton(OK).ClickWindow(FlightReservation).WinEdit(Name:).SetwangWindow(FlightReservation).WinButton(InsertOr
44、der).ClickWindow(FlightReservation).ActiveX(ThreedPanelControl).WaitPropertytext,InsertDone.,10000Window(FlightReservation).WinEdit(FlightNo:).OutputCheckPoint(FlightNo:)Window(FlightReservation).WinEdit(Airline:).OutputCheckPoint(Airline:)Window(FlightReservation).WinEdit(OrderNo:).OutputCheckPoint
45、(OrderNo:)Window(FlightReservation).WinMenu(Menu).SelectFile;FaxOrder.Window(FlightReservation).Dialog(FaxOrderNo.13).ActiveX(MaskEdBox).Type3333333333Window(FlightReservation).Dialog(FaxOrderNo.13).WinButton(PreviewFax).ClickWindow(FlightReservation).Dialog(FaxOrderNo.13).Dialog(FaxPreview).CheckCheckPoint(FaxPreview)Window(FlightReservati