混合架构应用程序测试方法和计算机程序产品与流程

摘要: 本公开涉及应用程序测试,特别是涉及一种混合架构应用程序测试方法和计算机程序产品。背景技术:1、本部分旨在为本公开实施例提供背景或上下文。此处的描述不因为包括在本...
混合架构应用程序测试方法和计算机程序产品与流程

本公开涉及应用程序测试,特别是涉及一种混合架构应用程序测试方法和计算机程序产品。

背景技术:

1、本部分旨在为本公开实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

2、随着桌面应用复杂度提升,大量应用程序采用混合架构,例如程序的主体框架使用qt、electron或wpf(qt、electron和wpf均为现有技术中的程序主体框架的名称)等进行开发,负责原生窗口、菜单、对话框等;而程序的内容展示区、设置面板、富交互区域则嵌入cef(cef为chromium embedded framework的英文简称,表示现有技术中的一种嵌入式框架)或qt webengine(qt webengine表示现有技术中qt框架自带的浏览器组件)渲染网页页面。典型场景包括:即时通讯客户端、企业网盘/协作工具、安全管控类客户端等等。

3、但是这类应用程序的自动化测试面临一个根本矛盾:同一应用窗口内存在两套截然不同的控件体系:原生控件层通过操作系统辅助功能接口暴露,这类控件有稳定的自动化标识符(对应英文名称automationid)、控件名称(对应英文名称name)、控件类型(对应英文名称controltype)等属性,可通过辅助功能树精确定位;而原生辅助功能接口对cef内嵌网页的dom(dom为‌document object model的英文简称,表示‌文档对象模型)元素识别能力极弱,通常只能识别到外层浏览器控件,无法穿透到网页内的按钮、输入框等dom节点,网页内容需通过浏览器调试协议(英文全称chrome devtools protocol,简称cdp)访问其dom树。

4、因此,在录制测试用例时,系统无法自动判断“测试人员当前点击或输入的目标究竟落在原生控件上还是嵌入式网页上”,导致必须人工选择测试通道或者先盲目地选择一个测试通道,等到发现无法测试时再切换测试通道,这样的处理方式限制了应用程序测试自动化水平的提升。

技术实现思路

1、基于此,有必要针对上述技术问题,提供一种能够准确选择测试通道的混合架构应用程序测试方法。

2、第一方面,本公开提供了一种混合架构应用程序测试方法。所述方法包括:

3、获取目标应用程序的热区坐标,所述目标应用程序包含原生控件层和网页内容层;所述热区坐标为当前可见顶层窗口中所有嵌入式浏览器窗口的区域坐标集合;

4、使用操作控件钩子采集测试操作的屏幕坐标;

5、判断所述屏幕坐标是否落入所述热区坐标对应的热区中,得到第一判断结果;

6、当所述第一判断结果包括屏幕坐标落入热区时,调用操作系统的由屏幕坐标取顶层窗口接口获取所述屏幕坐标处的当前顶层窗口句柄;判断所述当前顶层窗口句柄是否符合命中热区处的嵌入式浏览器窗口句柄,得到第二判断结果;当所述第二判断结果为符合时,选择浏览器调试协议通道;

7、当所述第一判断结果包括屏幕坐标未落入热区时,或者当所述第二判断结果为不符合时,选择原生辅助功能通道。

8、可选地,获取所述热区坐标的方法包括:

9、枚举所述目标应用程序的当前可见顶层窗口,将窗口标题包含预设标识或窗口类名包含预设类名的当前可见顶层窗口,识别为嵌入式浏览器窗口;获取所述嵌入式浏览器窗口的区域坐标,汇总得到热区坐标;

10、或者,通过测试桩注入的方式使所述目标应用程序主动上报热区坐标。

11、可选地,获取目标应用程序的热区坐标之前,所述方法还包括:

12、检测目标应用程序是否同时具备原生控件树和浏览器调试协议,得到第一检测结果;

13、当所述第一检测结果为是时,判断所述目标应用程序为混合架构应用程序;

14、当所述第一检测结果包括目标应用程序同时不具备原生控件树和浏览器调试协议时,通过图像识别选择测试通道。

15、可选地,选择浏览器调试协议通道之后,所述方法还包括:

16、当通过浏览器调试协议通道无法定位网页元素时,则回退后使用原生辅助功能通道;所述无法定位网页元素的情况包括调试协议无响应、坐标转换后视口坐标越界或屏幕坐标处没有dom交互元素。

17、可选地,所述坐标转换的方式为:

18、获取窗口原点坐标和窗口dpi缩放系数;

19、根据所述窗口原点坐标和所述窗口dpi缩放系数,将所述屏幕坐标转换为视口坐标。

20、可选地,通过原生辅助功能通道定位原生控件之后,所述方法还包括:

21、利用主线程将测试需求封装为命令闭包;

22、利用所述主线程通过命令通道将所述命令闭包发送至专用工作线程;

23、利用所述专用工作线程内部初始化组件对象模型单线程单元后,创建、持有辅助功能接口对象,执行所述命令闭包对应的uia操作,得到值类型结果。

24、可选地,在完成测试用例录制后,所述方法还包括:

25、当所述测试操作包括鼠标操作时,删除所述测试用例中的鼠标移动轨迹,删除所述测试用例中小于第一预设时长且无工具提示的鼠标停留事件,删除所述测试用例中未触发状态变化的鼠标焦点切换事件,删除所述测试用例中仅包含滚动查看的鼠标操作事件;

26、当所述测试操作包括键盘操作时,判断同一输入框内的相邻键盘输入是否为单字符且间隔小于第二预设时长,得到第三判断结果;当所述第三判断结果为是时,判断所述相邻键盘输入对应连续打字,拼接每次连续打字的文本;当所述第三判断结果为否时,判断所述相邻键盘输入对应重新输入,仅保留相应相邻键盘输入的最终输入文本。

27、可选地,在选择测试通道之后,所述方法还包括:

28、在录制测试用例过程中,当键盘钩子回调收到按键时,查询当前焦点控件句柄,将所述当前焦点控件句柄和当前键盘事件打包存储;录制停止时依据所述当前焦点控件句柄经辅助功能接口转换为用户界面元素快照,作为相应键盘输入操作的目标输入框。

29、可选地,所述方法还包括:

30、使用操作控件钩子采集测试操作的单调时钟时间戳;

31、动态刷新所述热区坐标。

32、第二方面,本公开还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

33、获取目标应用程序的热区坐标,所述目标应用程序包含原生控件层和网页内容层;所述热区坐标为当前可见顶层窗口中所有嵌入式浏览器窗口的区域坐标集合;

34、使用操作控件钩子采集测试操作的屏幕坐标;

35、判断所述屏幕坐标是否落入所述热区坐标对应的热区中,得到第一判断结果;

36、当所述第一判断结果包括屏幕坐标落入热区时,调用操作系统的由屏幕坐标取顶层窗口接口获取所述屏幕坐标处的当前顶层窗口句柄;判断所述当前顶层窗口句柄是否符合命中热区处的嵌入式浏览器窗口句柄,得到第二判断结果;当所述第二判断结果为符合时,选择浏览器调试协议通道;

37、当所述第一判断结果包括屏幕坐标未落入热区时,或者当所述第二判断结果为不符合时,选择原生辅助功能通道。

38、上述混合架构应用程序测试方法和计算机程序产品,提供了一种混合架构应用程序测试中自动选择测试通道的新方案,首先利用当前可见顶层窗口中的所有嵌入式浏览器窗口建立热区,然后判断测试操作的屏幕位置是否在热区范围内,如果不在热区范围内,则直接选择原生辅助功能通道,如果在热区范围内,则根据两种途径获取的窗口句柄进行二次判断,如果句柄一致则选择浏览器调试协议通道,如果句柄不一致则选择原生辅助功能通道。整个方案简洁、明确,能够显著提升测试通道选择的准确度,从而提升混合架构应用程序的测试自动化水平。