软件缺陷检测方法、装置、设备和存储介质与流程

文档序号:32666719发布日期:2022-12-24 01:10阅读:31来源:国知局
软件缺陷检测方法、装置、设备和存储介质与流程

1.本技术涉及软件技术领域,尤其涉及软件缺陷检测方法、装置、设备和存储介质。


背景技术:

2.随着软件产业的发展,越来越多的软件系统被开发出来。为了增加软件的可靠性,通常采用各种检测手段对软件进行检测,以检测软件是否存在缺陷。但这些检测手段通常是在软件庞大的用例集中选择一部分进行检测,难以保证软件检测的完备性,导致软件缺陷检测准确性较低。


技术实现要素:

3.本技术实施例提供软件缺陷检测方法、装置、设备和存储介质,解决了现有的软件缺陷检测方法的准确性较低的问题。
4.为实现上述技术目的,本技术实施例采用如下技术方案:
5.第一方面,本技术实施例提供一种软件缺陷检测方法,包括:获取待检测的软件的接口配置信息;其中接口配置信息用于指示待检测的软件包括的接口以及每个接口对应的接口参数;对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态;根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷;其中预设检测规范用于规定在软件合格的情况下软件包括的接口对应的软件状态所遵循的规则。
6.本技术实施例中,获取待检测的软件的接口配置信息,然后对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态,再根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,将待检测的软件的完整的接口配置信息作为软件缺陷检测的数据来源,而不是仅仅通过软件的部分用例集进行检测,能够全面模拟出软件的运行软件状态,并且通过多样的预设检测规范对软件接口执行后的软件状态进行检测,确保了检测的准确性。
7.在一种实施例中,接口参数包括接口执行优先级和接口执行参数;对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态,包括:基于接口执行优先级、以相同的初始软件状态依次根据接口执行参数对应执行接口,分别输出执行接口后的第一软件状态;
8.基于接口执行优先级、以相同的第一软件状态依次根据接口执行参数对应执行接口,分别输出执行接口后的第二软件状态;直至软件状态队列中不再生成新的软件状态,软件状态队列中记录有初始软件状态以及执行接口后的软件状态,软件状态队列中记录的软件状态均不同。
9.在一种实施例中,方法还包括:根据接口的执行先后顺序,建立执行接口前、后的软件状态之间的关联关系信息。
10.在一种实施例中,第一软件状态或者第二软件状态,通过如下步骤输出:根据接口
执行优先级建立接口对应的接口执行参数的执行队列;遍历执行队列中的接口执行参数,根据接口执行参数和执行接口所应用的软件状态执行对应的接口,分别输出第一软件状态,或者,分别输出第二软件状态。
11.在一种实施例中,根据接口的执行先后顺序,建立执行接口前、后的软件状态之间的关联关系信息,包括:建立有向图,有向图包括与软件状态对应的节点,存在关联关系信息的两个软件状态对应的节点用有向边连接。
12.在一种实施例中,预设检测规范包括死锁规范;根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,包括:通过死锁规范检测关联关系信息,确定待检测的软件是否存在缺陷;和/或,预设检测规范包括活性检查规范;根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,包括:通过活性检查规范检测关联关系信息,确定待检测的软件是否存在缺陷。
13.在一种实施例中,预设检测规范包括安全检测规范;根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,包括:通过安全检测规范检测每个接口对应的软件状态,确定待检测的软件是否存在缺陷。
14.第二方面,本技术实施例提供一种软件缺陷检测装置,包括:获取模块,用于获取待检测的软件的接口配置信息;其中接口配置信息用于指示待检测的软件包括的接口以及每个接口对应的接口参数;执行模块,用于对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态;检测模块,用于根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷;其中预设检测规范用于规定在软件合格的情况下软件包括的接口对应的软件状态所遵循的规则。
15.在一种实施例中,接口参数包括接口执行优先级和接口执行参数;执行模块,具体用于:基于接口执行优先级、以相同的初始软件状态依次根据接口执行参数对应执行接口,分别输出执行接口后的第一软件状态;基于接口执行优先级、以相同的第一软件状态依次根据接口执行参数对应执行接口,分别输出执行接口后的第二软件状态;直至软件状态队列中不再生成新的软件状态,软件状态队列中记录有初始软件状态以及执行接口后的软件状态,软件状态队列中记录的软件状态均不同。
16.在一种实施例中,检测模块,用于根据接口的执行先后顺序,建立执行接口前、后的软件状态之间的关联关系信息。
17.在一种实施例中,执行模块,具体用于:根据接口执行优先级建立接口对应的接口执行参数的执行队列;遍历执行队列中的接口执行参数,根据接口执行参数和执行接口所应用的软件状态执行对应的接口,分别输出第一软件状态,或者,分别输出第二软件状态。
18.在一种实施例中,检测模块,具体用于:建立有向图,有向图包括与软件状态对应的节点,存在关联关系信息的两个软件状态对应的节点用有向边连接。
19.在一种实施例中,预设检测规范包括死锁规范;检测模块,具体用于通过死锁规范检测关联关系信息,确定待检测的软件是否存在缺陷;和/或,预设检测规范包括活性检查规范;检测模块,具体用于:通过活性检查规范检测关联关系信息,确定待检测的软件是否存在缺陷。
20.在一种实施例中,预设检测规范包括安全检测规范;检测模块,具体用于:通过安全检测规范检测每个接口对应的软件状态,确定待检测的软件是否存在缺陷。
21.第三方面,本技术提供一种电子设备,包括:处理器,以及用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现如上述第一方面提供的软件缺陷检测方法。
22.第四方面,本技术提供一种计算机可读存储介质,存储有信息传递的实现程序,该程序被处理器执行时实现如第一方面提供的软件缺陷检测方法。
23.第五方面,本技术提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述第一方面提供的方法。
24.本技术中第二方面、第三方面、第四方面和第五方面描述的有益效果,可以参考第一方面的有益效果分析,此处不再赘述。
附图说明
25.图1为本技术实施例提供的一种软件缺陷检测方法的流程示意图;
26.图2为本技术实施例提供的另一种软件缺陷检测方法的流程示意图;
27.图3为本技术实施例提供的另一种软件缺陷检测方法的流程示意图;
28.图4为本技术实施例提供的另一种软件缺陷检测方法的流程示意图;
29.图5为本技术实施例提供的另一种软件缺陷检测方法的流程示意图;
30.图6为本技术实施例提供的一种有向图示意图;
31.图7为本技术实施例提供的一种软件缺陷检测装置的结构示意图;
32.图8为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
33.下面将详细描述本技术的各个方面的特征和示例性实施例,为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本技术进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本技术,并不被配置为限定本技术。对于本领域技术人员来说,本技术可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本技术的示例来提供对本技术更好的理解。
34.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序;也不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
35.随着软件产业的发展,越来越多的软件系统被开发出来。例如,分布式软件系统(distributed software systems),分布式软件系统是支持分布式处理的软件系统,是在
由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。为了增加软件的可靠性,通常采用各种检测手段对软件进行检测,以检测软件是否存在缺陷。但这些检测手段通常是在软件庞大的用例集中选择一部分用例进行检测,对于复杂的分布式软件检测,需要在检测环境模拟各种可能的情况来发现软件是否存在缺陷,效率较低。并且很难保证软件检测的完备性,导致软件缺陷检测准确性较低。
36.为了解决上述技术问题,本技术实施例提供一种软件缺陷检测方法。本技术实施例提供的软件缺陷检测方法的执行主体可以是计算机、服务器等具有数据处理能力的电子设备。其中,服务器可以是单独的一个服务器,或者,也可以是由多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。本技术对该软件缺陷检测方法的执行主体不作限制。
37.图1示出了本技术一个实施例提供的软件缺陷检测方法的流程示意图。
38.如图1所示,该方法可以包括以下步骤:
39.s110,获取待检测的软件的接口配置信息。
40.其中,待检测的软件可以是用户预配置的软件,例如系统软件和应用软件。
41.接口配置信息用于指示待检测的软件包括的接口(或者称为接口函数)以及每个接口对应的接口参数。一个接口对应的接口参数可以包括该接口对应的接口执行优先级和该接口对应的接口执行参数。接口执行优先级能够指示接口的执行先后顺序,接口执行参数能够指示执行接口所必要的数据,接口执行参数可以包括一个或者多个,不予限制。可以通过与软件服务器进行数据交互以获取该接口配置信息。具体的,可以通过与软件服务器进行数据交互以直接获取该接口配置信息,还可以通过与软件服务器进行数据交互以获取软件源代码,再通过解析软件源代码得到该接口配置信息。
42.示例性的,初始化接口的接口执行优先级为l1级(l1级通常只有一个,其他级别可以有多个),其他接口的接口执行优先级为l2级,l3级等,在执行接口时,执行顺序从前到后依次为l1级,l2级,l3级。同一等级的接口调用时不分先后顺序,可以任选顺序执行同级的接口。
43.s120,对于每个接口,基于该接口对应的接口参数执行该接口,得到执行接口后该接口的软件状态。
44.其中,基于接口对应的接口参数执行接口可以指:将接口参数赋值给接口,再执行接口。本技术中,基于接口对应的接口参数执行接口还可以替换描述为基于接口对应的接口参数运行该接口(或者称为接口函数)。接口的软件状态还可以称为接口的运行结果,用于表征基于接口参数执行该接口后的结果,示例性的,接口的一组接口参数对应接口的一个软件状态,即基于多组不同接口参数运行同一接口可以得到多个不同的软件状态(或者运行结果)。
45.在一种实施例中,如图2所示,s120:对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态,可以包括:
46.s1201,基于接口执行优先级、以相同的初始软件状态依次根据接口执行参数对应执行接口,分别输出执行接口后的第一软件状态。
47.其中,初始软件状态可以预先设置,基于接口执行优先级、以相同的初始软件状态
依次根据接口执行参数对应执行接口,进而能够分别输出执行接口后的第一软件状态。
48.示例性的,假设初始软件状态为卡余额为10,则在余额为10的基础上根据对应的接口执行参数分别执行消费接口和退卡接口,进而能够分别输出执行消费接口和退卡接口后的第一软件状态。
49.进一步地,待检测的软件可以包括多个接口,对于多个接口中接口执行优先级不同的接口,依据接口执行优先级,先后根据接口执行参数和相同的初始软件状态对应执行接口,并输出执行接口后的软件状态;而对于多个接口中接口执行优先级相同的接口,则分别以相同的初始软件状态根据接口执行参数对应执行接口(可以同步执行,也可以先后执行),分别输出执行接口后的第一软件状态。不同接口执行优先级的接口对应的初始软件状态可以相同,也可以不同。
50.参考s110中对接口执行优先级的示例,l1级的接口执行,输出l1级的接口执行后的软件状态s1;然后执行l2级的接口,输出l2级的接口执行后的软件状态s2;然后执行l3级的接口,输出l3级的接口执行后的软件状态s3。直至所有的接口执行完成,即可得到每个接口执行后的软件状态。
51.s1202,基于接口执行优先级、以相同的第一软件状态依次根据接口执行参数对应执行接口,分别输出执行接口后的第二软件状态,直至软件状态队列中不再生成新的软件状态。
52.其中,软件状态队列中记录有初始软件状态以及执行接口后的软件状态,软件状态队列中记录的软件状态均不同,也就是说,软件状态队列中会记录本技术实施例中提及的所有软件状态,但是每种软件状态仅记录一次,例如,输出第一软件状态后,则对第一软件状态去重后,再记录到软件状态队列中,然后再基于软件状态队列中未参与接口执行的软件状态对应执行接口,并同步更新软件状态队列,直至软件状态队列中所有的软件状态均执行接口,且软件状态队列中不再生成新的软件状态。确保全面模拟出软件运行产生的软件状态。
53.进一步地,s1202的执行原理与s1201相同,对于s1202的接口执行过程,可以参考s1201的说明,不再赘述。
54.在一种实施例中,可以创建执行队列,采用队列顺序执行方式实现第一软件状态和第二软件状态的输出。具体的,如图3所示,s1201可以包括s121~s122:
55.s121,根据接口执行优先级建立接口对应的接口执行参数的执行队列。
56.其中,可以根据接口执行优先级建立接口对应的接口执行参数的执行队列,该执行队列中按序排列有各接口对应的接口执行参数。示例性的,可以从前到后排列有:l1级的接口对应的接口执行参数c1,l2级的接口对应的接口执行参数c2,l3级的接口对应的接口执行参数c3等。
57.s122,遍历执行队列中的接口执行参数,根据接口执行参数和执行接口所应用的软件状态执行对应的接口,分别输出第一软件状态,或者,分别输出第二软件状态。
58.示例性的,参考s121的示例,首先执行队列中接口执行参数c1,根据接口执行参数c1执行对应的接口,输出接口执行后的软件状态s1;然后,执行队列中接口执行参数c2,根据接口执行参数c2执行对应的接口,输出接口执行后的软件状态s2;再之后,执行队列中接口执行参数c3,根据接口执行参数c3执行对应的接口,输出接口执行后的软件状态s3。直至
执行队列中接口执行参数全部被执行。
59.进一步地,上述示例中,如果输出的软件状态s1、软件状态s2和软件状态s3是基于初始软件状态执行接口得到的,则软件状态s1、软件状态s2和软件状态s3为第一软件状态;如果输出的软件状态s1、软件状态s2和软件状态s3是基于第一软件状态执行接口得到的,则软件状态s1、软件状态s2和软件状态s3为第二软件状态。
60.s130,根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷。
61.其中,预设检测规范用于规定在软件合格的情况下软件可以包括的接口对应的软件状态所遵循的规则。预设检测规范可以是预先配置在本地存储中,也可以从其他设备即时获取。基于预设检测规范能够根据接口执行后的软件状态确定待检测的软件是否存在缺陷,比如每个接口执行后的软件状态符合预设检测规范规定,则意味着该软件不存在缺陷,是合格的,反之,若每个接口执行后的软件状态不符合预设检测规范规定,则意味着该软件存在缺陷。
62.进一步地,可以通过配置文件解析器根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷。
63.示例性的,配置文件解析器可以选用为configparser、minini等。
64.本技术实施例中,获取待检测的软件的接口配置信息,然后对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态,再根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,将待检测的软件的完整的接口配置信息作为软件缺陷检测的数据来源,而不是仅仅通过软件的部分用例集进行检测,即通过对软件包括的所有接口的检测能够全面模拟出软件运行产生的软件状态,并且通过多样的预设检测规范对软件接口执行后的软件状态进行检测,确保了检测的准确性。
65.在一种实施例中,在执行s130之前,还可以生成关联关系信息以用于步骤s130中确定待检测的软件是否存在缺陷,如图4所示,该方法还可以包括:
66.s140,根据接口的执行先后顺序,建立执行接口前、后的软件状态之间的关联关系信息。
67.本技术实施例中,根据接口的执行先后顺序,建立执行接口前、后的软件状态之间的关联关系信息,通过一个接口的关联关系信息能够表征该接口对应的软件状态之间的关联关系,比如表征相邻软件状态,该关联关系信息能够用于步骤s130中确定待检测的软件是否存在缺陷。
68.进一步地,在一种实施例中,如图5所示,s140可以包括:
69.建立有向图,有向图可以包括与软件状态对应的节点,存在关联关系信息的两个软件状态对应的节点用有向边连接。
70.可以理解的是,有向边是包括指向的一条连接边,如果一条有向边从一个节点指向另一个节点,则表示该节点对应的软件状态的下一个相邻变更状态为另一个节点对应的软件状态。
71.示例性的,结合s122的示例,有向图可以如图6所示,s1为软件的初始软件状态,s2为s1变更之后的软件状态,s3为s2变更之后的软件状态,即可视为s1、s2以及s3存在关联关系信息,根据变更顺序用有向边连接s1、s2以及s3,即可得到有向图。
72.在建立有向图时,新生成的接口的软件状态相对有向图中已有的接口的软件状态,可以称之为需要新增的节点,可以检测需要新增的节点是否已经存在于有向图中,如果不存在,将新增的节点存储到有向图中,并用有向边连接与该节点有关联的节点,具体的,有向边从与该节点有关联的节点出发,指向新增的节点。反之,如果需要新增的节点存在于有向图中,则用有向边连接与该节点有关联的节点即可。
73.本技术实施例中,通过有向图表征软件状态的变更过程,该有向图能够用于确定待检测的软件是否存在缺陷。
74.在一种实施例中,预设检测规范可以包括死锁规范deadlock、活性检查规范liveness、以及安全检测规范safetycheck。在确定待检测的软件是否存在缺陷时,可以单独采用上述任一规范,也可以组合采用上述多个规范,在组合采用上述多个规范,只要其中一个规范确定待检测的软件存在缺陷,则判定软件存在缺陷。下面分别对应用死锁规范、活性检查规范、以及安全检测规范确定待检测的软件存在缺陷进行说明:
75.在应用死锁规范检测时,s130:根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,可以包括:
76.通过死锁规范检测关联关系信息,确定待检测的软件是否存在缺陷。
77.其中,通过死锁规范检测关联关系信息时,首先确定关联关系信息中最后的一个软件状态是否为预设的软件终态,如果不是,并且在该关联关系信息中最后的一个软件状态之后,没有其他的软件状态加入到关联关系信息中,则表明关联关系信息出现死锁,待检测的软件存在缺陷。
78.进一步地,可以上报错误提示信息提醒待检测的软件存在死锁缺陷。
79.另一方面,在应用活性检查规范检测时,s130:根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,可以包括:
80.通过活性检查规范检测关联关系信息,确定待检测的软件是否存在缺陷。
81.其中,活性检查规范能够检测关联关系信息所表征的执行接口前、后的软件状态是否符合软件要求,进而确定待检测的软件是否存在缺陷。
82.示例性的,加入软件正常运行要求软件状态按序出现s1、s2、以及s3,而通过活性检查规范检测出关联关系信息所表征出的软件状态出现顺序为s1、s2,并未出现s3,则确定待检测的软件存在缺陷。
83.又一方面,在应用安全检测规范检测时,s130:根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,可以包括:
84.通过安全检测规范检测每个接口对应的软件状态,确定待检测的软件是否存在缺陷。
85.其中,安全检测规范能够检测出每个接口对应的软件状态是否安全,进而确定待检测的软件是否存在缺陷。
86.本技术实施例中,通过多个预设检测规范确定待检测的软件是否存在缺陷,确保了软件缺陷检测结果的准确性。
87.为了帮助理解本技术实施例提供的软件缺陷检测方法,本技术实施例还提供一个具体实例如下:
88.待检测软件用于实现购卡,消费,退卡3个功能。软件具有balance和state两个软
件状态,其中balance表示卡余额,state表示卡软件状态。balance需要大于等于0,state的范围是{0,1,2,3},0表示卡无效软件状态,卡购买之前是该软件状态;1表示卡已购买软件状态,购卡之后卡是该软件状态,2表示已消费软件状态,购买的卡有消费后变为该软件状态,3表示已退卡软件状态,退卡后是该软件状态。其中当state=0时,才可以执行购卡操作,购卡之后balance大于0,当state=1时才可以执行消费软件状态,消费之后balance大于等于0,当state=1或者state=2时,才可以执行退卡操作,退卡之后balance等于0。
89.在该实例中,预设检测规范如下:
90.deadlock:false//表示不检测死锁。safetycheck:state\in{1,2,3}&balance》=0//表示卡软件状态只能是1,2,3中的一个,余额只能是大于等于0。livenesscheck:state=1=》state=3//表示购卡成功的卡最后一定可以注销。
91.该软件的接口配置信息包括:{购卡(amount1):l1,消费(amount2):l2,退卡:l2}//l1,l2表示接口执行优先级,这里的配置表示需要先执行购卡接口,然后执行消费和退卡接口,消费和退卡接口平级,没有先后顺序。l1级别用于系统的初始化。
92.进一步的,接口参数可以包括:
93.amount1\in{10,20,50,100}//表示购卡金额是{10,20,50,100}其中一个值。amount2\in 0..amount1//表示消费金额是从0到amount1之间的值。实际配置可以将amount2配置的值超过amount1,用来验证超额消费的情况。
94.软件状态查询接口:getstate()(balance,state)//用于获取卡的余额和软件状态,用于s120得到执行接口后的软件状态。getstate接口返回的数据结构与配置的数据结构一致。可以根据需要配置setstate接口。
95.设软件状态队列q,有向图g,接口执行参数的执行队列p;软件状态队列q用于存储全部软件状态,有向图g用于存储执行接口后输出过的软件状态;有向图g以软件状态为节点,以软件状态的变更行为为边。软件缺陷检测方法的流程如下:
96.取软件状态队列q中的初始软件状态,在该状态基础上,遍历执行队列p中的各级接口参数,相应执行各级接口;然后通过软件状态查询接口getstate获取各组balance,state作为第一软件状态s1(每一个接口执行后都会输出一组balance,state);将去重后的s1存储到有向图g和软件状态队列q中;通过safetycheck检测s1,即当s1对应的state的值不在{1,2,3}或者s1对应的balance的值小于0时报告错误。
97.相似的,取软件状态队列q中的任一第一软件状态s1,在该状态基础上,遍历执行队列p中的各级接口参数,相应执行各级接口;然后通过软件状态查询接口getstate获取各组balance,state作为软件状态s2。查询s2是否存在于有向图g中,如果存在,则连接s1和s2,如果不存在,则在有向图g中新增s2,并在有向图g中连接s1和s2,同时将s2存储到软件状态队列q中。通过safetycheck检测s2,即当s2对应的state的值不在{1,2,3}或者s2对应的balance的值小于0时报告错误。直到队列q中所有软件状态均参与接口执行,且队列q中没有新的软件状态生成。
98.通过liveness检测有向图g,在有向图g中查找从初始节点对应的软件状态开始,到最终软件状态经过的所有软件状态,如果出现某个软件状态的state=1,那就检测在该软件状态之后经过的软件状态是否出现了state=3,如果没有出现state=3,那就报告错误。
99.对于deadlock检测:由于配置deadlock为false,不需要检测,即使发现有deadlock也不报告错误。
100.本技术实施例中,获取待检测的软件的接口配置信息,然后对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态,再根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,将待检测的软件的完整的接口配置信息作为软件缺陷检测的数据来源,而不是仅仅通过软件的部分用例集进行检测,能够全面模拟出软件的运行软件状态,并且通过多样的预设检测规范对软件接口执行后的软件状态进行检测,确保了检测的准确性。
101.图1-图6描述了软件缺陷检测方法,下面结合图7-图8描述本技术实施例提供的装置。为了实现上述功能,软件缺陷检测装置包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
102.本技术实施例可以根据上述方法,示例性的对软件缺陷检测装置进行功能模块的划分。软件缺陷检测装置可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
103.图7示出了本技术一个实施例提供的软件缺陷检测装置的结构示意图,图7所示装置中各模块具有实现图1中各个步骤的功能,并能达到其相应技术效果。如图7所示,该装置可以包括:
104.获取模块710,用于获取待检测的软件的接口配置信息。其中接口配置信息用于指示待检测的软件包括的接口以及每个接口对应的接口参数。
105.执行模块720,用于对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态。
106.检测模块730,用于根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷。其中预设检测规范用于规定在软件合格的情况下软件包括的接口对应的软件状态所遵循的规则。
107.本技术实施例中,获取待检测的软件的接口配置信息,然后对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态,再根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,将待检测的软件的完整的接口配置信息作为软件缺陷检测的数据来源,而不是仅仅通过软件的部分用例集进行检测,能够全面模拟出软件的运行软件状态,并且通过多样的预设检测规范对软件接口执行后的软件状态进行检测,确保了检测的准确性。
108.在一种实施例中,接口参数包括接口执行优先级和接口执行参数。
109.执行模块720,具体用于:
110.基于接口执行优先级、以相同的初始软件状态依次根据接口执行参数对应执行接
口,分别输出执行接口后的第一软件状态;基于接口执行优先级、以相同的第一软件状态依次根据接口执行参数对应执行接口,分别输出执行接口后的第二软件状态,直至软件状态队列中不再生成新的软件状态。
111.其中,软件状态队列中记录有初始软件状态以及执行接口后的软件状态,软件状态队列中记录的软件状态均不同。
112.在一种实施例中,检测模块还用于根据接口的执行先后顺序,建立执行接口前、后的软件状态之间的关联关系信息。
113.在一种实施例中,执行模块720,具体用于:
114.根据接口执行优先级建立接口对应的接口执行参数的执行队列。
115.遍历执行队列中的接口执行参数,根据接口执行参数和执行接口所应用的软件状态执行对应的接口,分别输出第一软件状态,或者,分别输出第二软件状态。
116.在一种实施例中,检测模块,具体用于:
117.建立有向图,有向图包括与软件状态对应的节点,存在关联关系信息的两个软件状态对应的节点用有向边连接。
118.在一种实施例中,预设检测规范包括死锁规范。
119.检测模块730,具体用于:
120.通过死锁规范检测关联关系信息,确定待检测的软件是否存在缺陷。
121.和/或,预设检测规范包括活性检查规范。
122.检测模块730,具体用于:
123.通过活性检查规范检测关联关系信息,确定待检测的软件是否存在缺陷。
124.在一种实施例中,预设检测规范包括安全检测规范。
125.检测模块730,具体用于:
126.通过安全检测规范检测每个接口对应的软件状态,确定待检测的软件是否存在缺陷。
127.本技术实施例中,获取待检测的软件的接口配置信息,然后对于每个接口,基于接口对应的接口参数执行接口,得到执行接口后的软件状态,再根据每个接口执行后的软件状态以及预设检测规范确定待检测的软件是否存在缺陷,将待检测的软件的完整的接口配置信息作为软件缺陷检测的数据来源,而不是仅仅通过软件的部分用例集进行检测,能够全面模拟出软件的运行软件状态,并且通过多样的预设检测规范对软件接口执行后的软件状态进行检测,确保了检测的准确性。
128.图8示出了本技术一个实施例提供的电子设备的结构示意图。如图8所示,该设备可以包括处理器801以及存储有计算机程序指令的存储器802。
129.具体地,上述处理器801可以包括中央处理器(central processing unit,cpu),或者特定集成电路(application specific integrated circuit,asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
130.存储器802可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器802可包括硬盘驱动器(hard disk drive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,usb)驱动器或者两个或更多个以上这些的组合。在一个实例中,存储器802可以包括可移除或不可移除(或固定)的介质,或者存储器802是非易
失性固态存储器。存储器802可在综合网关容灾设备的内部或外部。
131.在一个实例中,存储器802可以是只读存储器(read only memory,rom)。在一个实例中,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。
132.处理器801通过读取并执行存储器802中存储的计算机程序指令,以实现图1所示实施例中的方法,并达到图1所示实例执行其方法达到的相应技术效果,为简洁描述在此不再赘述。
133.在一个示例中,该电子设备还可包括通信接口803和总线810。其中,如图8所示,处理器801、存储器802、通信接口803通过总线810连接并完成相互间的通信。
134.通信接口803,主要用于实现本技术实施例中各模块、装置、单元和/或设备之间的通信。
135.总线810包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(accelerated graphics port,agp)或其他图形总线、增强工业标准架构(extended industry standard architecture,eisa)总线、前端总线(front side bus,fsb)、超传输(hyper transport,ht)互连、工业标准架构(industry standard architecture,isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线810可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
136.该电子设备可以执行本技术实施例中的软件缺陷检测方法,从而实现图1描述的软件缺陷检测方法的相应技术效果。
137.另外,结合上述实施例中的软件缺陷检测方法,本技术实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种软件缺陷检测方法。
138.在示例性的实施例中,本技术实施例还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机实现上述实施例中的软件缺陷检测方法。
139.通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
140.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
141.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个
不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
142.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
143.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
144.以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1