什么是QTestWare?
QTestWare是专为QTP自动化测试工程师设计和开发的工具包,是QTP自动化测试的基础框架,QTestWare解决了很多控件识别、录制的问题,并且增强了很多控件的测试接口,让GUI控件测试更加简单、便捷,让QTP测试脚本更加稳健,可维护性和可重用性更强。

QTestWare增强了很多控件的测试接口
QTestWare支持的环境
QTestWare目前支持QTP9、QTP9.2、QTP9.5。
QTestWare目前支持.NET 2.0控件,包括:CheckedListBox、ContextMenuStrip、DataGridView、DomainUpDown、MenuStrip、PropertyGrid、ToolStrip、TrackBar、TreeView、MaskedTextBox、ListView、StatusStrip等。
另外,还增加了对流行的.NET第三方控件ComponentOne的支持,包括:C1FlexGrid、C1TrueDBGrid、C1MainMenu、C1ToolBar。
QTestWare目前支持WEB控件,包括对Browser、Page、WebList、WebTable等对象的支持。
另外,还增加了对流行的AJAX套件YUI(The Yahoo! User Interface Library)的支持,包括其中的Calendar、DataTable、Slider、TreeView等。
QTestWare解决控件录制问题
QTestWare帮您解决很多控件的录制问题,例如对于.NET控件TrackBar,普通的录制将得到如下脚本:
SwfWindow("Form1").SwfObject("trackBar1").Drag 13,12
SwfWindow("Form1").SwfObject("trackBar1").Drop 32,10
录制下来的是鼠标在TrackBar控件上的拖拽动作,这些脚本不仅可读性差,并且回放容易失败,而且不容易理解和维护脚本。
采用QTestWare后,同样的操作将录制成如下脚本:
SwfWindow("Form1").SwfObject("trackBar1").SetValue 6
录制下来的是设置TrackBar控件的位置值的脚本,这样脚本更容易理解,并且回放能准确定位到指定的TrackBar位置,而且增强了脚本的可维护性,这样的脚本要比前面的脚本更容易修改、更容易参数化。
QTestWare解决控件识别问题
QTestWare帮您解决很多控件的识别问题,例如对于.NET控件PropertyGrid,普通的录制将得到如下脚本:
SwfWindow("Form1").SwfObject("PropertyGridView").Click 76,11
脚本不能识别PropertyGrid中的每一项,只能采用坐标位置的方式来记录,而这种方式是非常不稳定,而且无法读取和设置PropertyGrid中的每一项属性值。
采用QTestWare,您可以通过FindPropertyByLabel来读取PropertyGrid中的每一项属性值:
SaveOnClose = SwfWindow("Form1").SwfObject("PropertyGrid").FindPropertyByLabel("SaveOnClose")MaxRepeatRate = SwfWindow("Form1").SwfObject("PropertyGrid").FindPropertyByLabel("MaxRepeatRate")AppVersion = SwfWindow("Form1").SwfObject("PropertyGrid").FindPropertyByLabel("AppVersion")
您可以通过SetPropertyGridValue来设置PropertyGrid中的每一项属性值:
SwfWindow("Form1").SwfObject("PropertyGrid").SetPropertyGridValue "SaveOnClose" ,"True"
SwfWindow("Form1").SwfObject("PropertyGrid").SetPropertyGridValue "MaxRepeatRate","3"
SwfWindow("Form1").SwfObject("PropertyGrid").SetPropertyGridValue " AppVersion ","1.0"
QTestWare让您的脚本更简短
采用QTestWare,可以帮助您缩短脚本行数,让您的自动化测试脚本更加简明扼要,例如,对于.NET控件MenuStrip,普通的录制一个菜单项选择的脚本至少包括两行脚本:
SwfWindow("Form1").SwfToolbar("menuStrip1").ShowDropdown "文件"
SwfWindow("Form1").SwfToolbar("menuStrip1").Select "文件;打开;最近...;A.doc"
如果录制时,对于每个级联菜单都用鼠标点击的话,则可能得到更长的录制脚本:
SwfWindow("Form1").SwfToolbar("menuStrip1").ShowDropdown "文件"
SwfWindow("Form1").SwfToolbar("menuStrip1").Select "文件;打开"
SwfWindow("Form1").SwfToolbar("menuStrip1").Select "文件;打开;最近..."
SwfWindow("Form1").SwfToolbar("menuStrip1").Select "文件;打开;最近...;B.doc"
采用QTestWare,可以利用QTestWare的SelectMenu方法把脚本压缩到一行即可:
SwfWindow("Form1").SwfToolbar("menuStrip1").SelectMenu "文件;打开;最近...;C.doc"
得到的是更加简短的测试脚本、更加容易理解和维护的脚本。
QTestWare为您封装了高可重用性的脚本
QTestWare从测试脚本开发角度出发,为您封装了各种可重用性极强的脚本,总结业界最佳实践,抽取控件测试逻辑成为核心测试方法,为您节省了大量的脚本开发时间。例如,对于.NET控件DataGridView,QTP通过SwfTable来支持控件的测试,但是提供的测试操作过于基础,例如选择某个单元格,SwfTable仅提供了SelectCell(Row,Column)这样的测试方法:
SwfWindow("Form1").SwfTable("dataGridView1").SelectCell 0,"OrderID"
自动化测试工程师往往需要进一步地编写测试脚本来扩展,以便满足测试用例的实现需要,而这一切,QTestWare都帮你设计好了,例如,通过QTestWare的SelectCellByText,可以选择DataGridView中指定内容的单元格:
SwfWindow("Form1").SwfTable("dataGridView1").FindCellByText "107号"
通过QTestWare的SelectRowByField,可以查找到某列中单元格为指定内容的单元格所在的行,并将该行设置为选中状态:
SwfWindow("Form1").SwfTable("dataGridView1").SelectRowByField "OrderID","10031"
QTestWare采用的技术和原理
QTestWare采用了自动化测试领域的最佳实践,融合了业界领先的框架设计思想,采用了先进成熟的QTP核心技术,例如QTP插件扩展技术、QTP对象模型技术等。
自动化测试的成本包括脚本开发和维护成本,开发可重用性和可维护性高的核心基础框架是降低开发成本和维护成本的最佳办法。QTestWare为您封装了大量的控件录制、识别和测试操作函数,是您搭建自动化测试框架的最佳选择。
QTestWare采用了先进成熟的QTP核心技术,让基础框架能很好地与QTP融合,减少不必要的工作量。