一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于动静态结合的软件兼容性测试方法与流程

2022-02-20 15:48:13 来源:中国专利 TAG:


1.本发明涉及软件测试技术领域,尤其涉及一种基于动静态结合的软件兼容性测试方法。


背景技术:

2.软件兼容性,指的是某个软件能稳定地工作在某操作系统之中,能够与操作系统中的其它各种软件协调工作,互不影响,软件自身不会出现意外的退出、卡死等异常,不会导致操作系统出现卡慢、蓝屏、断网等问题。软件兼容性测试能够进一步提高产品的质量,提高用户体验,它是衡量一个软件质量的重要指标。
3.目前,windows软件兼容性测试方法通常是利用人工在不同windows操作系统版本、不同型号的终端设备安装软件,并通过人工识别各个终端在软件运行的过程中出现的兼容性问题,这种人工测试方法耗时比较长、测试效率低、容易出现疏漏和错误,不仅如此,参与测试的设备、服务器数量、算力也有限,一般是单一测试服务器进行多次测试,无法达到较好的软件测试结果。


技术实现要素:

4.本发明的目的就在于为了解决上述问题而提供一种基于动静态结合的软件兼容性测试方法,本发明对测试软件可执行程序进行反汇编得到函数调用图,再通过静态分析技术,获取软件函数调用系统api集合;再通过多个客户端同时执行待测软件动态兼容性测试,结合动态分析技术和hook技术,动态获取软件运行时api调用信息以及运行状态记录;最后,将动静态分析出的api调用信息经由缺陷api分析引擎识别其存在兼容性问题的缺陷api,自动生成兼容性测试评估报告,达到测试覆盖范围广、测试效率、精准度高的效果。
5.本发明通过以下技术方案来实现上述目的:
6.一种基于动静态结合的软件兼容性测试方法,包括以下步骤:
7.s1、部署兼容性测试服务端和连接该兼容性测试服务端的基于测试需求的多个子测试客户端;
8.s2、对测试软件可执行程序进行反编译,得到函数调用图,通过静态分析技术,获取软件函数调用系统api集合a1;
9.s3、通过兼容性测试服务端批量分发windows软件安装包测试任务到所有子测试客户端;
10.s4、各个目标系统的子测试客户端接收测试任务,下载软件安装包,并开始进行兼容性测试;
11.s5、采用hook技术对windows api调用情况进行监控,然后测试安装包进行动态分析,采用安装、卸载、升级、模拟人与系统交互行为测试软件,实时记录调用的系统api以及软件异常状态,然后上报至服务端缺陷api识别引擎;
12.s6、服务端缺陷api分析引擎,根据动态、静态分析出的api调用信息、异常状态信
息,分析识别目标系统可能存在兼容性问题的缺陷api;
13.s7、为各个子测试客户端分别生成目标系统兼容性测试报告。
14.进一步方案为,所述步骤s5中,模拟人与系统交互行为的功能是通过c#的windows动态链接库user32.dll实现,在分析过程中使用user32.dll中keybd_event()、findwindow()、sendmessage()函数,模拟出鼠标的移动、点击、拖拽、滚屏和键盘按键输入、按住操作以及鼠标和键盘的热键同时按住一系列交互操作行为,如果软件出现兼容性异常,则记录异常状态。
15.进一步方案为,所述步骤s5中,动态api调用集合的提取采用自动化的动态分析,基于hook技术,在真机分析环境中动态运行和监控每个pe文件得到其真实且完整的api调用集合。
16.进一步方案为,所述步骤s6中,服务端缺陷api分析引擎,根据动态、静态分析出的api集合,去预先整理好的windows api兼容性知识库查询其支持的最低系统版本,如果该系统版本不支持当前测试系统,则标记为缺陷api。
17.进一步方案为,所述步骤s7中,缺陷api分析引擎会根据软件缺陷api以及异常状态信息,为各个子测试客户端分别生成目标系统兼容性测试报告。
18.本发明的有益效果在于:
19.本发明的一种基于动静态结合的软件兼容性测试方法,通过对测试软件可执行程序进行反汇编得到函数调用图,再通过静态分析技术,获取软件函数调用系统api集合;再通过多个客户端同时执行待测软件动态兼容性测试,结合动态分析技术和hook技术,动态获取软件运行时api调用信息以及运行状态记录;最后,将动静态分析出的api调用信息经由缺陷api分析引擎识别其存在兼容性问题的缺陷api,自动生成兼容性测试评估报告,达到测试覆盖范围广、测试效率、精准度高的效果。
附图说明
20.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要实用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1为一种基于动静态结合的软件兼容性测试方法示意图;
22.图2为一种基于动静态结合的软件兼容性测试方法流程图;
具体实施方式
23.为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
24.在任一实施例中,如图1-2所示,本发明的一种基于动静态结合的软件兼容性测试方法,包括:
25.一种基于动静态结合的软件兼容性测试方法,包括以下步骤:
26.s1、部署兼容性测试服务端和连接该兼容性测试服务端的基于测试需求的多个子测试客户端;
27.s2、对测试软件可执行程序进行反编译,得到函数调用图,通过静态分析技术,获取软件函数调用系统api集合a1;
28.s3、通过兼容性测试服务端批量分发windows软件安装包测试任务到所有子测试客户端;
29.s4、各个目标系统的子测试客户端接收测试任务,下载软件安装包,并开始进行兼容性测试;
30.s5、采用hook技术对windows api调用情况进行监控,然后测试安装包进行动态分析,采用安装、卸载、升级、模拟人与系统交互行为测试软件,实时记录调用的系统api以及软件异常状态,然后上报至服务端缺陷api识别引擎;
31.s6、服务端缺陷api分析引擎,根据动态、静态分析出的api调用信息、异常状态信息,分析识别目标系统可能存在兼容性问题的缺陷api;
32.s7、为各个子测试客户端分别生成目标系统兼容性测试报告。
33.在一个具体实施例中,如图1-2所示,本发明的一种基于动静态结合的软件兼容性测试方法,包括以下步骤:
34.s1、部署兼容性测试服务端,该服务端主要包含静态分析模块、缺陷api分析引擎、通信模块以及基础组件。不同子客户端部署在不用windows系统版本终端上,通过消息队列与服务端通信。
35.s2、静态分析模块,主要用于对测试软件可执行程序进行反编译,得到函数调用图,通过静态分析技术,获取软件函数调用的系统api集合a1;
36.s3、通过兼容性测试服务端批量分发windows软件安装包测试任务到所有子测试客户端,服务端与客户端采用消息队列下发指令方式通信;
37.s4、各个目标系统的子测试客户端接收测试任务,在通过服务端https接口,下载测试软件安装包,并开始进行兼容性测试;
38.s5、采用hook技术对windows api调用情况进行监控,然后测试安装包进行动态分析,采用但不限于安装、卸载、升级、模拟人与系统交互行为方式测试软件,实时记录调用的系统api以及软件异常状态,然后上报至服务端缺陷api识别引擎;
39.模拟人与系统交互行为的功能是通过c#的windows动态链接库user32.dll实现的,在分析过程中使用user32.dll中keybd_event()、findwindow()、sendmessage()等函数,模拟出鼠标的移动、点击、拖拽、滚屏和键盘按键输入、按住操作以及鼠标和键盘的热键同时按住等一系列交互操作行为,如果软件出现兼容性异常,则记录异常状态。
40.动态api调用集合的提取采用自动化的动态分析,基于hook技术,在真机分析环境中动态运行和监控每个pe文件得到其真实且完整的api调用集合。
41.s6、服务端缺陷api分析引擎,根据动态、静态分析出的api集合,去预先整理好的windows api兼容性知识库查询其支持的最低系统版本,如果该系统版本不支持当前测试系统,则标记为缺陷api。
42.s7、缺陷api分析引擎会根据软件缺陷api以及异常状态信息,为各个子测试客户端分别生成目标系统兼容性测试报告。
43.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献