专利名称:一种自绘窗口的测试方法和装置的制作方法
技术领域:
本发明涉及领域计算机技术领域,特别涉及一种自绘窗口的测试方法和装置。
技术背景
随着计算机硬件性能的不断提高,带动了各种UI(S卩-.User Interface用户界面) 技术的革新。特别在用户交互UI方面,各种赏心悦目的UI层出不穷,使用户在软件使用体验方面得到了大大的改善。通过这种友好的交互,不但提高了软件的品质,更提高了用户的忠诚度。可想而知,在未来,UI还是会作为软件开发的重中之重,对一个软件的好坏产生直接的影响。
在现有的各种UI技术中,自绘窗口是实现绚丽UI界面的一种常用方式。使用此技术实现了绚丽的界面的同时,也同时为UI的自动化测试带来了麻烦。传统非自绘窗口每个控件都有各自的句柄,可以通过句柄实现UI的自动化测试。而自绘窗口是没有窗口句柄的,因为需要使用新的方法来支持UI的自动化测试。发明内容
本发明提供了一种自绘窗口测试的方法和装置,本发明的技术方案能够灵活实现自绘窗口,同时支持UI的自动化测试。
为达到上述目的,本发明的技术方案是这样实现的
本发明公开了一种自绘窗口的测试方法,该方法包括
以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM 对象,并定义各COM对象的COM接口;
测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。
在上述方法中,该方法进一步包括
为自绘窗口中的每个COM对象分配一个指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在所述自绘窗口中设置一个特定的属性,将所述队列的指针设置到所述自绘窗口中的特定属性中;
则所述测试程序获取COM对象包括测试程序获取所述自绘窗口中的特定属性中的值,根据该值找到所述队列,根据该队列中的各指针获取对应的COM对象。
在上述方法中,将该队列的指针设置到所述自绘窗口中的特定属性中包括
通过Windows API函数中的ktProp函数将该队列的指针设置到自绘窗口中的特定属性中。
在上述方法中,所述测试程序获取所述自绘窗口中的特定属性中的值包括
测试程序通过Windows API函数中的GetProp函数获取自绘窗口中的特定属性中的值。
在上述方法中,所述COM接口包括
控件类型接口、控件ID接口、控件名称接口、控件在窗口的位置接口、控件状态接口、控件支持的事件与消息接口。
在上述方法中,COM接口由一个基COM接口派生;
该基COM接口包括所述每个COM接口对应的方法。
在上述方法中,所述调用COM对象的COM接口对相应控件进行测试包括
通过操作基COM接口中每个COM接口对应的方法实现调用COM对象的COM接口, 进而实现对相应控件进行测试。
本发明还公开了一种自绘窗口的测试装置,该装置包括C0M封装模块和测试模块;
COM封装模块,用于以COM形式封装自绘窗口中的每个控件,则一个控件就是一个 COM对象,并定义各COM对象的COM接口;
测试模块,用于获取COM对象后,调用COM对象的COM接口对相应控件进行测试。
在上述装置中,COM封装模块,进一步为自绘窗口中的每个COM对象分配一个指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在所述自绘窗口中设置一个特定的属性,将所述队列的指针设置到所述自绘窗口中的特定属性中;
则测试模块,用于获取所述自绘窗口中的特定属性中的值,根据该值找到所述队列,根据所述队列中的各指针获取对应的COM对象。
在上述装置中,COM封装模块,用于通过Windows API函数中的ktProp函数将该队列的指针设置到所述自绘窗口中的特定属性中;
测试模块,用于通过Windows API函数中的GetProp函数获取所述自绘窗口中的特定属性中的值。
综上可见,本发明公开一种自绘窗口的测试方法,该方法包括以组件对象模型 COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的 COM接口;测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。本发明的技术方案,能够灵活实现自绘窗口,同时支持UI的自动化测试。
图1是本发明实施例中的一种自绘窗口的测试的方法流程图。
图2本发明实施例中的一种自绘窗口的测试装置的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例中的一种自绘窗口的测试方法流程图,如图1所示,使用如下方式来实现自绘窗口,以支持UI的自动化测试
101,以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个 COM对象,并定义各COM对象的COM接口 ;COM接口包括控件类型接口、控件ID接口、控件名称接口、控件在窗口的位置接口、控件状态接口、控件支持的事件与消息接口。。
102,测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。。
也就是说,自绘窗口中所有的控件都以COM的方式实现,一个控件就是一个COM对象。这样测试程序可以在得到每个COM对象后,调用COM接口来实现对控件的操作,以实现自动化测试。
为实现测试程序能够获取COM对象,首先,应为自绘窗口中的每个COM对象分配一个相应的指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在该自绘窗口中设置一个特定的属性,将上述队列的指针设置到该自绘窗口中的特定属性中。
设置属性值函数是ktProp函数,其功能该函数在指定窗口的属性表中增加一个新项,或者修改一个现有项。如果指定的字符串不在属性表中,那么就增加该新的项,新项中包含该字符串和句柄,否则就用指定的句柄替换该字符串的全前句柄。
因此,可通过Windows API函数中的ktProp函数将该队列的指针设置到该自绘窗口中的特定属性中。
此时,测试程序可采用以下方式获取COM对象测试程序获取该自绘窗口中的特定属性中的值,根据该值找到该队列,根据该队列中的各指针获取对应的COM对象。
获取属性值函数是GetProp函数,其功能该函数从给定窗口的属性列表中检索数据句柄。给定的字符串标识了要检索的句柄。该字符串和句柄必须在前一次调用^^?!“叩函数时已经加到属性表中。
因此,测试程序通过Windows API函数中的GetProp函数来获取该自绘窗口中的特定属性中的值。
简单的说,可以采用先将COM对象指针形成的队列的指针设置到该自绘窗口的属性表中,再通过GetProp函数获取上述根据ktProp函数设置的该队列指针对应的属性值来获取该队列,并通过此队列得到所有控件的COM队形的方式,实现测试软件获取COM对象。
同时,为了实现测试程序获取控件的COM对象后,能够调用控件的COM接口对该控件进行操作,COM接口应由一个基COM接口派生;且基COM接口包括每个COM接口对应的方法,可通过操作基COM接口中每个COM接口对应的方法实现调用COM对象的COM接口,进而实现对相应控件进行测试。
图2本发明实施例中的一种自绘窗口的测试装置的结构图,如图2所示,该装置包括C0M封装模块201和测试模块202。
COM封装模块201,用于以COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;
测试模块202,用于获取COM对象后,调用COM对象的COM接口对相应控件进行测试ο
为实现测试程序获取COM对象,可采用以下方式
COM封装模块201,进一步为自绘窗口中的每个COM对象分配一个指针,将自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在自绘窗口中设置一个特定的属性,将上述队列的指针设置到该自绘窗口中的特定属性中;
则测试模块202,用于获取所述自绘窗口中的特定属性中的值,根据该值找到上述队列,根据该队列中的各指针获取对应的COM对象。
在上述装置中,COM封装模块201,用于通过Windows API函数中的ktProp函数将该队列的指针设置到所述自绘窗口中的特定属性中;
测试模块202,用于通过Windows API函数中的GetProp函数获取所述自绘窗口中的特定属性中的值。
在COM封装模块201中定义的各COM对象的COM接口包括控件类型接口、控件ID 接口、控件名称接口、控件在窗口的位置接口、控件状态接口、控件支持的事件与消息接口。 这些COM接口由一个基COM接口派生。
为了实现测试模块202能够调用COM对象的COM接口对相应控件进行测试,可采用以下方式派生COM接口的基COM接口包括每个COM接口对应的方法,通过操作基COM接口中每个COM接口对应的方法实现调用COM对象的COM接口,进而实现对相应控件进行测试ο
综上可见,本发明公开一种自绘窗口的测试方法,该方法包括以组件对象模型 COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的 COM接口,测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。本发明的技术方案,能够灵活实现自绘窗口,同时支持UI的自动化测试。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
权利要求
1.一种自绘窗口的测试方法,其特征在于,该方法包括以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象, 并定义各COM对象的COM接口;测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括为自绘窗口中的每个COM对象分配一个指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在所述自绘窗口中设置一个特定的属性,将所述队列的指针设置到所述自绘窗口中的特定属性中;则所述测试程序获取COM对象包括测试程序获取所述自绘窗口中的特定属性中的值,根据该值找到所述队列,根据所述队列中的各指针获取对应的COM对象。
3.根据权利要求2所述的方法,其特征在于,所述将该队列的指针设置到所述自绘窗口中的特定属性中包括通过Windows API函数中的ktProp函数将该队列的指针设置到所述自绘窗口中的特定属性中。
4.根据权利要求2所述的方法,其特征在于,所述测试程序获取所述自绘窗口中的特定属性中的值包括所述测试程序通过Windows API函数中的GetProp函数获取所述自绘窗口中的特定属性中的值。
5.根据权利要求1所述的方法,其特征在于,所述COM接口包括控件类型接口、控件ID接口、控件名称接口、控件在窗口的位置接口、控件状态接口、 控件支持的事件与消息接口。
6.根据权利要求5的方法,其特征在于,所述COM接口由一个基COM接口派生;所述基COM接口包括所述每个COM接口对应的方法。
7.根据权利要求6所述的方法,其特征在于,所述调用COM对象的COM接口对相应控件进行测试包括通过操作基COM接口中每个COM接口对应的方法实现调用COM对象的COM接口,进而实现对相应控件进行测试。
8.一种自绘窗口的测试装置,其特征在于,该装置包括C0M封装模块和测试模块;COM封装模块,用于以COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;测试模块,用于获取COM对象后,调用COM对象的COM接口对相应控件进行测试。
9.根据权利要求8所述的装置,其特征在于,COM封装模块,进一步为自绘窗口中的每个COM对象分配一个指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在所述自绘窗口中设置一个特定的属性,将所述队列的指针设置到所述自绘窗口中的特定属性中;则测试模块,用于获取所述自绘窗口中的特定属性中的值,根据该值找到所述队列,根据所述队列中的各指针获取对应的COM对象。
10.根据权利要求9所述的装置,其特征在于,COM封装模块,用于通过Windows API函数中的ktProp函数将该队列的指针设置到所述自绘窗口中的特定属性中;测试模块,用于通过Windows API函数中的Getfrop函数获取所述自绘窗口中的特定属性中的值。
全文摘要
本发明公开了一种自绘窗口的测试方法和装置,涉及领域计算机技术领域,传统非自绘窗口每个控件都有各自的句柄,可以通过句柄实现UI的自动化测试。而自绘窗口是没有窗口句柄的,本发明提供了一种支持自绘窗口的UI的自动化测试的方法。该方法包括以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。本发明的技术方案,能够灵活实现自绘窗口,同时支持UI的自动化测试。
文档编号G06F11/36GK102521129SQ20111040556
公开日2012年6月27日 申请日期2011年12月8日 优先权日2011年12月8日
发明者方顺豹, 郝永建 申请人:北京新媒传信科技有限公司