采用不同的项目开发模型对自动化测试有不同的影响。
(1)瀑布模型:瀑布模型在需求定义方面做得很好,这对自动化测试是有益的,包括可以尽早选择合适的自动化测试策略,让自动化测试可以高层次、整体地进行计划。
(3)敏捷:敏捷方法打破了传统的自动化测试方法。第一个破坏点集中在自动化的可接受性测试。这种测试所使用的工具超越了传统的自动化测试工具的范围,并且,很难被其他类型的自动化重用。细粒度的迭代让每次自动化测试难以集中目标和定义标准。
要想成为专业的QTP自动化测试工程师,需要掌握很多方面的专业技术。包括:
1、VBScript。QTP使用VBScript作为测试脚本语言,因此需要掌握很多VBScript的知识。
2、软件测试自动化框架知识。为了让自动化测试脚本的可重用性、可维护性更强,自动化测试框架方面的知识不可或缺。
4、SQL语言。查询数据库读取测试数据、添加数据库验证点,这些都需要SQL语言的基础和数据库应用基础。
5、HTML、XML、DOM。测试WEB页面、Web服务、AJAX应用时经常需要跟这些技术打交道。
学习《QTP自动化测试进阶》第二章。
手工测试不可替代的地方至少包括以下几点:
测试用例的设计:测试人员的经验和对错误的猜测能力是工具不可替代的。
界面和用户体验测试:人类的审美观和心理体验是工具不可模拟的。
正确性的检查:人们对是非的判断、逻辑推理能力是工具不具备的。
在进行项目的自动化测试之前,先要考虑以下5个方面:
(1)测试自动化类似于软件开发过程
(2)测试自动化是一个长期的过程
(3)确保测试自动化的资源,包括人员和技能
(4)循序渐进地开展自动化测试
(5)确保测试过程的成熟度
IBM的网站上提供了一个自动化ROI计算器:
自动化测试项目计划
1工作阶段分解
1.1项目启动阶段
1.1.1评估过去的项目
1.1.2目标范围
1.1.3效果衡量
1.1.4团队成员构成
1.1.5招聘
1.2早期项目支持阶段
1.2.1目标和目的
1.2.2约束调研
1.2.3可测试性评审
1.2.4需求评审
1.2.5测试流程分析
1.2.6组织介入
1.3测试自动化计划阶段
1.3.1测试需求
1.3.2自动化测试策略
1.3.3可交付的成果
1.3.4测试程序参数
1.3.5培训计划
1.3.6技术环境
1.3.7自动化工具兼容性检查
1.3.8风险评估
1.3.9测试计划归档
1.3.10自动化测试数据
1.3.11自动化测试环境
1.3.12角色和责任
1.3.13自动化测试系统管理
1.4测试自动化设计阶段
1.4.1原型自动化测试环境
1.4.2自动化技术和工具
1.4.3自动化设计标准
1.4.4自动化脚本编码计划
1.4.5测试自动化库
1.5自动化开发阶段
1.5.1自动化脚本编码任务分配
1.5.2脚本同行评审
1.5.3测试脚本和工具的改进
1.5.4测似脚本配置管理
1.6自动化集成阶段
1.6.1环境建立
1.6.2测试阶段执行
1.6.3自动化测试报告
1.6.4问题处理
1.7自动化过程改进阶段
1.7.1测试工具/脚本评估
1.7.2回顾和评审
1.7.3维护测试过程库
1.7.4自动化内部知识网
1.7.5持续培训
2.1关键里程碑
2.2迭代周期目标的实现
2.3项目进度表
3项目资源
3.1组队计划
3.2资源需求计划
3.3培训计划
3.4预算
4项目监控
4.1自动化效果评估
4.2进度控制计划
4.3预算控制计划
4.4报告计划
4.5度量计划
5配套流程
5.1配置管理计划
5.2缺陷跟踪和问题处理
5.3自动化框架评估
5.4框架归档计划
5.5过程改进
自动化功能测试脚本的开发方式主要有以下几种:
线性的
结构化的
共享的
数据驱动的
关键字驱动的
更多参考资料:
1、《修炼成QTP高手的十个步骤》:
4、AlanS.Koch在《AgilityandQuality》一文中讨论了敏捷项目中测试人员的角色问题:
5、AlanS.Koch在《TheQACatchall》一文中提到,测试不能保证质量、技术评审也不能保证质量,质量保证必须内建于开发中:
6、《自动化测试与脚本编写能力》:
7、作为一名专业的自动化测试工程师,不应该仅仅局限于对工具的掌握和使用,应该建立测试的自动化知识体系(ABOK,AutomationBodyofKnowledge):
8、在《AreYouReadyfortheTestAutomationGame》一文中,KerryZallar描述了软件测试组织的成熟度对于成功实施自动化测试的重要影响:
9、《敏捷测试的最佳实践,第4部分:自动化测试的ROI》一文从自动化测试的测试脚本的开发维护成本量,测试脚本生命周期即脚本重复运行次数,测试脚本运行错误比率,测试周期长度来估算自动化测试投入产出比(EROI)模式:
10、DionJohnson在《TestAutomationROI》一文中介绍了几种计算自动化测试ROI的方法:
11、IBM的网站上提供了一个自动化ROI计算器:
12、软件在设计时考虑可测性的问题,可以让自动化测试开展得更加顺利,TarunLalwani在《Developingautomationfriendlywebapplication》一文中介绍了如何设计和开发自动化“友好”的Web应用程序:
13、MichaelKelly在《Choosingatestautomationframework》一文中介绍了几种自动化测试框架的脚本编写方法:
14、AutomatedTestingInstitute归纳了自动化测试框架的演变历史,第一代框架为“线性的”,第二代框架是“数据驱动的”,第三代框架是“关键字驱动的”:
16、《TenStepstoBuildingSoftwareTestAutomationThatWorks》一文描述了迈向成功自动化测试的路线图:
17、LogiGear的白皮书《AchievingtheFullPotentialofTestAutomation》中总结了一些自动化测试的经验:
学习《QTP自动化测试进阶》第三章。
测试工具的选型是成功应用测试工具的第一步,测试工具的选型应该注意以下几点:
(1)首先,分析项目的特点,软件系统采用的开发工具、语言、技术、平台等。还要结合测试的类型、测试的要求。
(2)同时还要了解目前存在的各种测试工具的情况,包括工具的生产厂家、价格、产品特性、技术支持和售后服务情况,还要了解该工具的市场占有率、使用人群等情况,如果是国外厂商生产的测试工具,最好再了解清楚国内的代理机构的情况等。
(3)选型的最后一步是编写选型报告。通过综合分析所有收集回来的材料,横向比较测试工具的优势和劣势。
自动化测试工具的原理:
1、基于代码层面的功能自动化测试工具主要是一些单元测试工具
2、基于浏览器和DOM对象模型的功能自动化测试工具
3、基于GUI对象识别的测试工具原理
4、反射机制在自动化功能测试工具中的使用
5、UIAutomation在自动化功能测试工具中的使用
QTP的对象识别:
1、ObjectIdentification
2、QTP的3类顺序标识(OrdinalIdentifiers):Location,Index和CreationTime
3、QTP的智能识别(SmartIdentification)
学习《QTP自动化测试进阶》第4章
1、下载QTP10:
2、安装QTP
3、很多初学者往往忽略了对QTP自带的帮助文档的学习,而实际上,这些正是最佳的学习QTP使用和自动化测试脚本开发的渠道。
4、观看QTP的视频教程:
C:\ProgramFiles\HP\QuickTestProfessional\help
5、熟悉QTP自带的样例程序Flight
6、录制、回放
录制的设置
熟悉关键字视图、专家视图
1、《ThreeKeyToolsforAutomatedTesting:Language,Driver,Harness》-BretPettichord:
2、自动化测试工具Watir与SilkTest的比较:
3、《Flex自动化功能测试工具大比拼》:
5、微软的开源测试框架White(通过开源的代码分析有助于大家理解自动化测试工具的原理):
6、《微软UI自动化测试的技术演变》:
7、《SelectingAutomatedTestingTools》一文介绍了选择自动化测试工具时需要考虑的各个方面:
8、制定QTP自动化测试工具培训大纲可参考:
10、QTP安装包中的Readme.htm文件
11、HPQuickTestProfessional最新试用版本的下载地址:
12、HPQualityCenter资源库(HPQualityCenterResourceLibrary):
13、QTP升级补丁查询页面(需要先注册HPPassport):
14、《QTP9.2的帮助文件》:
15、DionJohnson在《Record&Playback,YouHaveMyApologies》一文中以一种独特的方式提醒大家要以正确的态度对待录制回放模式的脚本编写方式:
16、HP在线视频中心(HPSoftwareWebEventsCenter):
学习《QTP自动化测试进阶》第5章–QTP的基本使用
使用QTP进行自动化测试的基本过程:
(1)录制测试脚本。
(2)编辑测试脚本。
(3)调试测试脚本。
(4)运行测试脚本。
(5)分析测试结果。
ObjectSpy的使用,测试过程中查看GUI对象的属性和方法!
对象库管理比较关键,录制时会自动添加对象到对象库,也可以手工添加!
测试对象作为资源,可导出到文件中,以方便其他测试脚本的使用,方法是在对象库管理界面中,选择菜单“File|ExportLocalObject”
Action与对象库之间要关联
Reporter.ReportEvent用于写测试日志
脚本调试技巧:
1、选择菜单“Tools|CheckSyntax”,或者按快捷键“CTRL+F7”对测试脚本进行语法检查
2、设置断点(F9)
3、步进(F10)
4、跳入函数(F11)
5、DebugViewer查看对象、变量
F5运行脚本
TestBatchRunner可以批量运行测试脚本
收集了更多参考资料有待研究:
1、《QTP的Action模板》:
2、《增强QTP调试器功能的方法》:
4、《QTP测试脚本的维护-使用Update运行模式和Maintenance运行模式》:
5、《QTP测试脚本批处理运行的两个工具》:
6、MTM(MultiTestManager,QTP批量运行测试的小工具)的下载地址:
7、QTP附带的介绍对象库管理的视频:
8、QTP附带的介绍基本使用方法的视频:
学习《QTP自动化测试进阶》第6章–QuickTestProfessional与其他工具的整合
QTP可以与WinRunner、LoadRunner、QC整合。
QTP与QC结合能实现BPT(BusinessProcessTesting)测试。该框架让非技术人员,例如领域专家、业务专家可以在非脚本编程的环境下通过业务组件(BusinessComponents)构建业务测试过程。
QC插件下载:
BPT过程:
1、业务专家编写手工组件
2、把手工组件转换成自动化组件
3、自动化测试工程师创建应用程序域和对象库
4、自动化工程师编写自动化脚本(建立函数库、实现关键字)
5、业务专家编辑业务流程(组合组件)
6、业务专家把业务流程测试用例添加到测试集并运行
要成功地通过QC调用QTP执行业务流程测试脚本,需要在QTP中设置“AllowotherHPproductstoruntestsandcomponents”
补充学习参考资料:
1、关于QTP调用AutoIt的方法可参考:
2、《UsingQTPwithLoadRunnerforLoadTesting》:
3、《HPQuickTestProfessionalforBusinessProcessTesting》详细介绍了如何进行BPT测试:
在QTP安装目录中的help目录查阅帮助文档QTP4BPT.pdf
4、QualityCenter安装包下载地址:
5、ConnectedTesting.com的BPT-BasedTestAutomationFramework就是一个基于BPT的框架,《TestAutomationwithCTAFramework》这个PPT对这种框架的使用作了详细的解释:
6、《QTP整合Sikuli》:
学习《QTP自动化测试进阶》第7章
QTP支持的检查点类型:
(1)标准检查点(StandardCheckpoint):用于检查测试对象的属性。
(2)图像检查点(ImageCheckpoint):用于检查被测试应用程序的图像。
(3)位图检查点(BitmapCheckpoint):把检查被测试应用程序的某个区域当成位图来检查。
(4)表格检查点(TableCheckpoint):用于检查表格信息。
(5)文本检查点(TextCheckpoint):用于检查文本字符串是否在应用程序中的适当位置出现。
(6)文本区域检查点(TextAreaCheckpoint):用于检查文本字符串是否按既定的标准出现在应用程序的预定区域。
(7)可访问性检查点(AccessibilityCheckpoint):用于检查网页是否满足W3C的网页内容可访问性指南的要求。
(8)页面检查点(PageCheckpoint):用于检查网页的属性。
(9)数据库检查点(DataBaseCheckpoint):用于检查应用程序所访问的数据库。
(10)XML检查点(XMLCheckpoint):用于检查XML文档。
扩展学习资料:
1、《自定义CheckPoint》:
2、YaronAssa在《Checkpointsandpoints-of-view》一文中介绍了自定义的CheckPoint脚本编写的方法:
4、《QTP下基于XML+DP的关键字驱动DEMO》:
5、《用TestComplete实现一个关键字驱动测试框架》:
6、《51测试天地》第十二期《框架经理-FrameworkManager简介》
FrameworkManager是由YaronAssa开发的一个开源的QTP自动化测试框架,目的是让QTP的脚本编写更为优雅和清晰(forelegant,cleanscriptingwithQTP)。下载地址:
学习《QTP自动化测试进阶》第8章–数据驱动
测试脚本的开发和维护是自动化测试的重要环节,适当地调整和增强测试脚本,能提高测试脚本的灵活性,增加测试覆盖面,以及提高应对测试对象变更的能力。数据驱动方式的测试脚本开发是解决这类问题的重要手段。
数据驱动的测试方法要解决的核心问题是把数据从测试脚本中分离出来,从而实现测试脚本的参数化。
数据驱动测试的一般步骤:
(1)参数化测试步骤的数据,绑定到数据表格中的某个字段。
(2)编辑数据表格,在表格中编辑多行测试数据(取决于测试用例以及测试覆盖率的需要)。
(3)设置迭代次数,选择数据行,运行测试脚本每次迭代从中选择一行数据。
QTP参数化的方式:
1、随机数
2、环境变量
3、DataTable
参考资料:
1、《QTP的Action间的信息共享的4种方法》:
2、《该使用QTP的Action还是Function》:
3、《在QTP中使用Dictionary对象来替代环境变量》:
4、《在DataTable中如何保留数据格式》:
5、《如何从Excel文件中导入所有Sheet到DataTable中》:
6、《ShareStore-进程间数据共享》:
8、AdvancedQTP.com上有一个在线测试QTP的DataTable的掌握程度的网页:
9、《QTP:CreatingaHighlyEfficientTest-DataDictionary》:
10、《IntroductiontoParameterizationwithQTP’sLocalDataTable》:
学习《QTP自动化测试进阶》第9章–VBScript基础
作为QTP的脚本语言,VBScript是写好QTP脚本的必备知识!
字符串连接使用“&”运算符,虽然可以使用“+”运算符来连接两个字符串,但是由于“+”同样用于数值相加运算,所以还是建议使用“&”运算符来连接字符串,以避免产生混淆,加强代码的可理解性。
Sub和Function都是过程,但是Sub不能返回值,而Function可以返回值。Function的返回值是通过赋值给Function名来传递的,而不是“Return”语句。
可利用ReDim语句来动态创建数组
可使用UBound函数来获得数组的大小
正则表达式提供了功能强大、灵活而又高效的方法来处理文本。利用正则表达式的全面模式匹配表达法,可以快速分析大量文本,从而找到特定的字符模式。
RegisterUserFunc是一个很有用的函数,可以将VBS函数注册到指定的测试对象中。
补充学习资料:
1、《如何在QTP中使用IntelliSense(智能敏感)访问自定义的VBS函数和对象》:
2、MeirBar-Tal给我们展现了用VBS的类实现面向对象的QTP自动化测试框架:
3、《QTP面向对象框架》:
4、AdvancedQTP.com上的一个在线测试VBScript脚本掌握程度的页面:
5、《QTP操作注册表》:
6、《在QTP中使用Dictionary对象》:
7、《OnErrorResumeNext》:
8、《VBS中的ExecuteGlobal语句的使用》:
9、《VBS中如何获取一个数组中最大值的位置》:
10、《FileSystemObject对象》:
12、《获取两个字符串之间的字符串的VBS函数》:
13、AdvancedQTP.com上关于VBScript的教程:
14、QTP帮助文档VBScript56.CHM
15、《QTP脚本编写技巧-从函数中返回多个值的方法》:
16、推荐一个学习正则表达式的网站:
学习《QTP自动化测试进阶》第10章–QTP测试脚本开发
Utility对象:
用PathFinder对象查找文件
用XMLUtil对象检查XML
用Extern对象加载DLL
用SystemUtil的Run方法启动被测试程序
用Reporter写测试结果
用Environment读写环境变量
QTP内置函数的使用:
用Print函数显示信息
用Wait函数暂停测试脚本的执行
用ExecuteFile执行VBScript脚本
用DotNetFactory对象访问.NET类库
恢复场景(RecoveryScenario):让QTP在碰到非预期的事件或错误时,可以恢复脚本的执行控制权
2、《QTP中为什么恢复场景(RecoveryScenario)没有被触发》:
3、《QTP的TextUtil对象的使用》:
4、《揭秘QTP保留对象机制》:
6、《重写QTP的Reporter对象》:
7、《QTP的报告管理扩展框架-ReporterManager》:
8、ReporterManager下载地址:
9、DaniVainstein写的StringUtil,可以让我们拥有类似.NETFramework中的字符串处理类库般的能力,下载地址:
10、《RFT的异常处理方式》:
11、《RecoveryScenarioTestRunError:Iteminlistormenunotfound》
学习《QTP自动化测试进阶》第11章–QTP描述性编程
使用QTP的描述性编程编写脚本的方式,与录制脚本以及在关键字视图编写脚本的方式有很大的不同。描述性编程能提供更加灵活的测试脚本编写方法,并且能摆脱测试对象库的限制,编写出更为复杂、适应力更强的测试脚本。
两种描述性编程的开发方式:
直接描述
使用Description对象
描述性编程的“后续强迫性”:如果在测试对象层次结构的某一点开始使用了描述性编程,则该测试对象层次结构下的后续测试对象都要使用描述性编程的方式来描述对象。
其他学习资料:
1、《两种DP描述方法的比较》:
2、《什么时候使用DP》:
3、《QTP中使用OR还是DP对于IE内存泄漏的影响》:
4、《QTP:CreatingObjectDescriptions“OnTheFly”》:
5、《QTP:UnderstandingtheDescriptionObject(Description.Create)》介绍了Description对象的使用方法:
6、《DescriptiveProgramming(DP)–4(CreatingaTestScript)》:
7、《DescriptiveProgramming(DP)Concepts–3(OrdinalIdentifiers)》介绍了使用描述性编程时顺序标识符的用法:
8、《DescriptiveProgramming(DP)vsObjectRepository(OR)》介绍了使用对象库和使用描述性编程的区别:
9、《DescriptiveProgramming(DP)Concepts–2{RegularExpressions}》介绍了描述性编程中正则表达式的使用:
10、《DescriptiveProgramming(DP)Concepts–1》介绍了描述性编程的基本概念和脚本编写方法:
学习《QTP自动化测试进阶》第12章–使用QTP测试标准Windows对象
使用CaptureBitmap方法来截屏
使用ChildObjects方法获取某个对象中包含的对象列表
使用RunAnalog方法运行低级录制过程
熟悉和掌握各类标准Windows控件的测试:
Dialog
Static
WinButton
WinCalendar
WinCheckBox
WinCombobox
Window
WinEdit
WinEditor
WinList
WinListView
WinMenu
WinRadioButton
WinScrollBar
WinSpin
WinStatusBar
WinTab
WinToolbar
WinTreeview
WinObject
在GUI测试过程中,通常会碰到对象无法被测试工具识别的问题,这时候往往需要特殊的解决办法,其中一种方法就是通过发送键盘按键的方式来操纵控件
Mercury.DeviceReplay对象是QTP的一个隐藏对象(QTP的帮助文档中并没有记载),可用于模拟鼠标单击和移动,还有键盘输入等操作。
2、《揭秘QTP的DeviceReplay对象》:
5、《QTP测试WinToolbar控件》:
学习《QTP自动化测试进阶》第13章–使用QTP测试ActiveX对象
要测试ActiveX控件,首先,需要在启动QTP时加载ActiveX插件
AcxUtil对象可用于操作ActiveX控件,使用FireEvent方法来执行ActiveX控件中的方法
熟悉和掌握各类ActiveX控件的测试:
RadioButton
CheckBox
Calendar
Label
ProgressBar
SliderBar
ListBox
2、daniva在《AutomatingGoogleEarth》一文中介绍了如何在QTP中测试GoogleEarth这种包含ActiveX插件的WEB页面:
3、《QTP测试CodeJockXtremeSuite控件》:
学习《QTP自动化测试进阶》第14章–使用QTP测试VB对象
要想QTP能识别和录制各种VB控件,首先,必须在QTP启动时加载VisualBasic插件。
测试这些VB控件应该注意利用其Object属性,通过Object属性来访问其内部属性和方法,从而达到控制VB控件的效果。
熟悉和掌握各类VB控件的测试:
VbButton
VbCheckBox
VbComboBox
VbEdit
VbEditor
VbFrame
VbLabel
VbList
VbRadioButton
VbScrollBar
VbWindow
其他学习资源:
1、《QTP测试CodeJockXtremeSuite控件》:
2、QTP帮助文档VisualBasic.chm
学习《QTP自动化测试进阶》第15章–使用QTP测试Web对象
加载Web插件
先启动QTP,再启动浏览器,否则Web元素识别不了
最新版本QTP11支持的浏览器:
IE:6、7、8
Firefox:3.0.x、3.5、
QTP支持直接访问DOM(DocumentObjectModel),可以通过DOM来访问HTML标签。例如:
OnErrorResumeNext
SetDoc=Browser("Google").Page("Google").Object
'循环获取Page中的所有对象
ForEachElementInDoc.all
TagName=Element.TagName'获取标签名
InnerText=Element.innerText'获取innertext
'把信息写入测试结果
Reporter.ReportEvent0,TagName,InnerText
Next
在测试WEB站点应用程序时,通常会碰到验证码的问题(尤其是论坛类的站点),对于这类问题,通常的做法是利用OCR(OpticalCharacterRecognization,光学字符识别)技术,通过识别图片中的文字来获取验证码,但是这种方法可靠性不高,受到验证码图片混淆程度的影响。另外一种做法是在开发阶段由程序员屏蔽验证码功能,或者提供所谓的“万能验证码”。
还有另外一种解决方法,参考:
15.4WEB页面测试案例分析2–Discuz!验证码问题
1、SAFFRON框架是针对Web开发的一个简单的QTP测试框架原型,是AdamGensler于06年写的,需要QTP9.1版本以上:
2、《使用QTP进行WEB页面性能测试》:
3、《QTP&DOM》:
4、《QTP访问DOM的方法》:
5、《利用QTP在WEB应用程序上进行简单的猴子测试》:
6、《扩展QTP的WebTable测试对象》:
7、《QTP的RegisterNewBrowserControl工具》:
8、《在QTP中列举当前打开的所有浏览器对象的函数》:
9、《在QTP中巧用WebTable对象的ChildItem方法进行测试》:
10、《TestCompelte与QTP在Web测试方面的比较》:
11、《RadComboBoxforASP.NETAJAX(Telerik)》:
学习《QTP自动化测试进阶》第16章–QTP的插件技术
Adobe为Flex程序的自动化测试提供的QTP插件:
Jamo为手机应用程序自动化测试提供的QTP插件:
DimqtApp
DimblnNeedChangeAddins
DimarrTestAddins
'创建QTP应用程序实例对象
SetqtApp=CreateObject("QuickTest.Application")
'创建一个数组用于存储QTP启动的测试项目所关联的插件
arrTestAddins=qtApp.GetAssociatedAddinsForTest("C:\Tests\AddInTest")
blnNeedChangeAddins=False
'检查是否所有需要的插件都已经加载
ForEachtestAddinInarrTestAddins
'如果插件未加载,则需要修改插件关联设置
IfqtApp.Addins(testAddin).Status<>"Active"Then
blnNeedChangeAddins=True
ExitFor
EndIf
'如果需要修改插件设置,则退出QTP
IfqtApp.LaunchedAndblnNeedChangeAddinsThen
qtApp.Quit
'重新加载插件
IfblnNeedChangeAddinsThen
DimblnActivateOK
blnActivateOK=qtApp.SetActiveAddins(arrTestAddins,errorDescription)
'如果加载插件碰到问题,则显示包含问题信息的消息框
IfNotblnActivateOKThen
MsgBoxerrorDescription
'退出脚本运行
WScript.Quit
'启动QTP(加载新的插件设置)
IfNotqtApp.LaunchedThen
qtApp.Launch
'让QTP可见
qtApp.Visible=True
'打开测试项目
qtApp.Open"C:\Tests\AddInTest"
'释放QTP对象
SetqtApp=Nothing
ExtensibilityAccelerator提供给了一个类似VisualStudio的IDE,用于简化和加速Web插件扩展的设计、开发和部署工作。
其他参考资料:
1、《QTP测试Flash程序的方法》:
2、《QTP与手机测试》:
3、Adobe为QTP提供的Flex4插件下载地址:
4、《WebExtensibilityLesson–BuildingatoolkitSupport》介绍了一个Web插件扩展开发的例子:
5、QTPExtensibilityAccelerator的demo视频:
6、ExtensibilityAccelerator下载地址:
7、W3School的JavaScript教程:
学习《QTP自动化测试进阶》第17章–使用QTP的.NET插件测试.NET平台软件
QTP.NET插件用于识别和录制WPF(WindowsPresentationFoundation)控件、WindowsForms控件或者WebForms控件
额外多了一个.NETWindowsFormsSpy查看控件属性
WinForm:
通过Object属性来获取对象的内部属性、访问并执行控件方法
WPF:
可通过三种方法访问WPF对象的内部属性和方法,分别是:AutomationElement、AutomationPattern和Object
其它资源
1、《RuntimeObjectEditor-与QTP的.NETSpy类似的对象查看工具》:
2、RuntimeObjectEditor可从以下地址下载(需要注册CodeProject用户):
3、《QTP测试.NET控件CheckedListBox》
4、《Expanding.NetDevExpresstrees》:
5、《ExploringCustomControls》:
学习《QTP自动化测试进阶》第18章–QTP的.NET插件扩展技术及其使用
在碰到一些不被直接支持的.NET控件时,可利用QTP的.NET插件的可扩展性来开发出支持第三方控件,或者是个性化控件的特性。
.NET插件扩展开发步骤:
1、安装CustomServer模板
2、建立.NET控件的测试扩展项目
3、实现控件录制逻辑
4、注册TrackBar控件的事件处理器
5、实现控件的运行逻辑
6、部署插件扩展包到QTP
7、运行和调试插件扩展包
参考:
1、《HPQuickTestProfessional.NETAdd-inExtensibility》:
2、《使用QTP的.NET插件扩展技术测试ComponentOne的ToolBar控件》:
QTestWare:
学习《QTP自动化测试进阶》第19章–QTP的自动化对象模型及其使用
QTP提供了完整的自动化对象模型,可用多种编程语言和开发工具来编写控制QTP运行和测试的代码
使用QTP自动化模型的场景:
初始化脚本:编写脚本自动化地启动QTP,并设置必要的录制、回放等环境变量选项。
维护测试:可以编写脚本循环遍历测试项目,更新一些测试对象的值,或者为已有的测试项目设置新的选项。
从其他程序中调用QTP:在其他测试程序中调用QTP、管理和安排测试脚本的运行。
其它学习资源
1、《在HTML页面中调度QTP》:
2、《C#通过AOM调用QTP的内存泄漏问题》:
3、自动化测试框架中必不可少的一部分是测试脚本的调度执行,一般采用AOM方式调用QTP,需要包括设置测试参数、指定测试结果文件存储的目录、记录执行过程日志、发送邮件等功能,应该可以与持续集成框架结合。QTRunner就是这样一个用VBS写的QTP调度框架:
学习《QTP自动化测试进阶》第20章–使用QTP开发一个猴子测试工具
“猴子测试”,也叫随机测试,因为它的原理是利用测试工具随机产生键盘敲击和鼠标点击事件,就像一只大猩猩在狂敲键盘,因此,也叫猴子测试。
产生随机数:
DimMyValue,Response
'初始化随机数产生器
Randomize
DoUntilResponse=vbNo
'随机选取0到10之间的整数
MyValue=Int((10*Rnd+0))
MsgBoxMyValue
Response=MsgBox("重新来一遍",vbYesNo)
Loop
通过WMI对象获取屏幕高度和宽度:
strComputer="."
'获取WMI对象
SetobjWMIService=GetObject("winmgmts:\\"&strComputer&"\root\CIMV2")
'通过WMI查询桌面显示器的高度和宽度
SetcolItems=objWMIService.ExecQuery(_
"SELECT*FROMWin32_DesktopMonitor",,48)
ForEachobjItemincolItems
Height=objItem.ScreenHeight
Width=objItem.ScreenWidth
MsgBoxWidth&","&Height
调用Win32API的鼠标函数:
'通过Extern访问WindowsAPI函数
Extern.DeclaremicVoid,"MouseEvent","user32.dll","mouse_event",
micInteger,micInteger,micInteger,micInteger,micInteger
'把鼠标移到该位置
Extern.MouseEvent80+1,10,100,0,0
'鼠标左键单击
Extern.MouseEvent2+4,0,0,0,0
Extern.DeclaremicInteger,"WindowFromPoint","user32.dll",
"WindowFromPoint",micInteger,micInteger
MsgboxExtern.WindowFromPoint(0,0)
截屏可用:
DeskTop.CaptureBitmap
参考资源:
1、《一个简单的猴子测试小工具》:
2、《使用猴子测试工具》:
3、这个网站有很多WMI的例子代码可以参考:
学习《QTP自动化测试进阶》第21章–使用QTP测试WebServices
QTP的WebServices插件可用于测试WebServices应用程序,可以使用QTP来调用WebServices的操作,并获取返回的XML数据,使用XML检查点对这些数据进行验证,从而测试WebServices的功能正确性。
1、《51测试天地》杂志第八期《开源的WebService测试工具》:
2、WebService介绍:
3、QTP帮助文档《HPQuickTestProfessionalWebServicesAdd-in》:
4、QTP附带的WebService视频:
5、《QTP:NotjustforGUIanymore》:
学习第22章-如何编写高质量的QTP测试脚本
高质量的QTP测试脚本可以让测试脚本的后期维护工作量较少,可以让代码的可读性增强,从而有利于测试员之间基于测试脚本的交流。
由于QTP的测试脚本采用的是VBScript脚本语言,因此,QTP的测试脚本应该采用和遵循VBScript的代码编写规范。代码编写规范可包括:
对象、变量和函数的命名规范
注释规范
代码行缩进规范
常用的代码风格规范:
(1)每个缩进为4个空格。
(2)为整体的注释缩进1个空格。
1、《VBScriptProgrammer'sReference》第三版,作者:AdrianKingsley-Hughes、KathieKingsley-Hughes、DanielRead