CN116028375B - 基于图论的代码测试方法 - Google Patents
基于图论的代码测试方法 Download PDFInfo
- Publication number
- CN116028375B CN116028375B CN202310140397.3A CN202310140397A CN116028375B CN 116028375 B CN116028375 B CN 116028375B CN 202310140397 A CN202310140397 A CN 202310140397A CN 116028375 B CN116028375 B CN 116028375B
- Authority
- CN
- China
- Prior art keywords
- path
- nodes
- node
- searching
- search
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 85
- 238000000034 method Methods 0.000 claims abstract description 69
- 238000012216 screening Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 abstract description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000010420 art technique Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及数据处理技术领域,具体涉及基于图论的代码测试方法,该方法将程序代码中的功能函数作为节点、功能函数之间的接口作为节点之间的边构建图结构进行数据处理,根据图结构中节点的调用关系得到节点的重要程度,根据节点的重要程度筛选搜索路径的起始点,根据节点的重要程度和连接关系进行路径搜索,通过计算搜索路径的停止概率判断停止路径搜索过程,进一步对图结构整体进行两次以上搜索得到对应数量的搜索路径,根据搜索路径完成代码测试路径的搜索。本发明在保证了测试路径在搜索过程中的可控性,且在保证搜索效率的同时保证了测试路径的稳定性。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及基于图论的代码测试方法。
背景技术
随着计算机技术和智能控制技术的不断发展,计算机控制技术也愈发成熟,而计算机控制技术的本质为计算机程序,考虑到计算机程序的底层为代码,所以为了保证计算机程序的稳定性,需要对代码进行完整的测试。对代码进行测试的原理是测试不同功能函数和函数接口的性能,且为了保证测试的完整性,在一次测试中需要对所有的功能函数及接口进行测试。但是通常情况下为了提高测试效率,需要同时选择两个以上功能函数及接口进行测试,所以对同时测试的功能函数和接口的选择将直接影响代码测试效果。由于代码中功能函数和接口的分布特性,现有技术通常利用功能函数和函数之间接口构建图结构,对图结构进行路径搜索确定同时测试的功能函数及接口,现有技术中对图结构进行路径搜索的方法通常是根据图结构中两个节点之间的关系和图结构整体的状态流转方向进行路径搜索。
发明人在实践中,发现上述现有技术存在以下缺陷:
现有技术对图结构进行路径搜索的方法是根据图结构中两个节点之间的关系和图结构整体的状态流转方向进行路径搜索,但是考虑到代码测试的过程是同时选择两个以上功能函数及接口进行测试且由于功能函数和接口的特性,仅根据图结构中节点之间的关系和整体的状态流转方向确定搜索路径,会造成路径搜索的过程存在大量的重复搜索情况。所以采用现有技术对寻找代码测试路径会导致所产生的搜索路径测试效率低下且影响整体代码的稳定性。
发明内容
为了解决采用现有技术对寻找代码测试路径会导致所产生的搜索路径测试效率低下且影响整体代码的稳定性技术问题,本发明的目的在于提供一种基于图论的代码测试方法,所采用的技术方案具体如下:
本发明提出了一种基于图论的代码测试方法,所述方法包括:
以功能函数为节点构建图结构,功能函数之间的接口为所述图结构节点之间的边,根据每个节点的调用频率和同类功能函数节点的连接分布特征得到图结构中每个节点的重要程度;
对图结构进行路径搜索;所述路径搜索过程包括:根据重要程度筛选出路径起始点,根据与路径起始点相连节点的节点重要程度和连接关系筛选出新的路径点;每筛选出一个新的路径点,对应路径点需要根据被搜索的次数和相连未搜索节点的分布对重要程度进行更新;根据搜索路径的最新路径点相连节点在搜索路径中的分布情况和搜索次数获得停止概率,根据停止概率判断是否停止路径搜索;
对图结构进行两次以上搜索直至图结构中所有节点与连接边都处于搜索路径中,完成代码测试路径的搜索;
所述根据被搜索的次数和相连未搜索节点的分布对重要程度进行更新包括:
将路径搜索时新的路径点对应的待选择节点记为目标节点,统计搜索路径搜索次数和目标节点在图结构中通过边相连接的所有相连节点中路径点选取次数为零的数量并记为未搜索分布状况,计算目标节点在路径更新前的重要程度与未搜索分布状况的乘积并将乘积与对应搜索路径搜索次数的比值记为目标节点在路径更新时的重要程度;
改变目标节点得到每次路径更新时待选择节点的重要程度;
所述新的路径点的获取方法包括:
其中,为与路径起始点相连的第/>个待选择节点的路径点可能性,/>表示与路径起始点相连的第/>个待选择节点的节点重要程度,/>表示与路径起始点相连的第/>个待选择节点的度,/>表示第/>个待选择节点所连接的第/>个节点的节点重要程度,/>表示第/>个待选择节点所连接的第/>个节点的度,/>表示第/>个待选择节点的所有待选择节点中除了第/>个节点外第/>个节点的节点重要程度,/>表示第/>个待选择节点的所有待选择节点中除了第/>个节点外第/>个节点的度,/>表示第/>个待选择节点的待选择节点序号,/>表示第/>个待选择节点的所有待选择节点中除了第/>个节点外其他节点的序号,/>为与路径起始点相连的第/>个待选择节点的已存在于路径中的次数,/>为常数;
通过路径点可能性模型计算与路径起始点相连的所有节点的路径点可能性,将与路径起始点相连的所有节点的路径点可能性最大的节点作为新的路径点。
进一步地,所述根据每个节点的调用频率和同类功能函数节点的连接分布特征得到图结构中每个节点的重要程度包括:
计算目标节点对应的功能函数的调用次数与调用函数总次数的比值并记为目标节点的调用占比,获得目标节点对应连接节点的数量并记为节点连接数量,统计目标节点对应的功能函数与每个连接节点对应的功能函数之间的连接调用的次数并记为函数连接调用次数,统计目标节点与各个节点对应的函数连接调用次数中相同连接的次数并记为相同连接次数,计算目标节点对应的各个节点的函数连接调用次数与相同连接次数比值的均值,并将对应的均值记为相同函数连接重要程度,将目标节点对应的调用占比和相同函数连接重要程度的乘积作为目标节点的重要程度;
改变目标节点得到每个节点的重要程度。
进一步地,所述根据搜索路径的最新路径点相连节点在搜索路径中的分布情况和搜索次数获得停止概率包括:
计算搜索路径的最新路径点的所有相连节点中存在于路径中的次数之和,并记为搜索路径的重复搜索特征值,计算搜索路径的重复搜索特征值与搜索路径最新路径点相连节点的数量比值,得到搜索路径对应的停止搜索可能性,将搜索路径的停止搜索可能性与搜索路径的搜索次数的比值作为搜索路径的停止概率。
进一步地,所述路径起始点的获取方法包括:
将路径点选取次数为零的节点与图结构中未搜索的边相连节点记为待选择初始路径点,选取待选择初始路径点中节点的重要程度最小的节点作为搜索路径的路径起始点。
进一步地,所述选取待选择初始路径点中节点的重要程度最小的节点作为搜索路径的路径起始点包括:
当待选择初始路径点中存在两个以上重要程度最小的节点时,随机选择一个待选择初始路径点中重要程度最小的节点作为搜索路径的路径起始点。
进一步地,所述根据停止概率判断是否停止路径搜索包括:
当搜索路径的停止概率大于等于预设停止阈值时,停止当前搜索路径的路径搜索过程。
本发明具有如下有益效果:
考虑到通过功能函数和函数接口所构建的图结构中,不同节点由于节点对应的功能函数在整体代码的调用重要程度不同,因此在进行路径搜索时根据该特点进行测试路径的选择,本发明通过对每个节点的调用频率和同类功能函数节点的连接分布特征得到图结构中每个节点的重要程度,以重要程度作为标准进行路径搜索,避免随机选择路径点造成的搜索资源浪费。根据重要程度筛选出路径起始点,进一步根据节点重要程度和连接关系筛选出新的路径点,在此基础上根据搜索路径最新路径点相连节点在搜索路径中的分布情况和搜索次数,计算每次路径搜索得到的搜索路径的停止概率,使得得到的路径搜索的过程具有可控性。考虑到随着搜索次数的增加,如果仍然按照初始的节点重要程度搜索路径,会出现大量的重复搜索过程,所以需要在搜索过程中对节点的重要程度进行调整,以能够尽量多的将未搜索的点作为路径点,但是又因为在搜索过程中会不可避免的出现重复搜索节点,且当功能函数在代码中越重要时,测试所需要的可靠性越高,因此需要尽可能的保证重复搜索到的节点为重要节点,所以本发明在搜索过程中根据被搜索的次数和相连未搜索节点的分布对重要程度进行更新,调整已经存在于路径中节点的重要程度,使得路径搜索过程中更容易搜索到没有成为路径点的节点,从而提高搜索效率,并且在搜索过程中保证出现重复搜索的节点是代码中比较重要的功能函数对应的节点,保证测试路径的稳定性。综上所述,本发明在保证了测试路径在搜索过程中的可控性,且在保证搜索效率的同时保证了测试路径的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1为本发明一个实施例所提供的一种基于图论的代码测试方法流程图;
图2为本发明一个实施例所提供的一种图结构示意图。
具体实施方式
为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种基于图论的代码测试方法,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或两个以上实施例中的特定特征、结构或特点可由任何合适形式组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
下面结合附图具体的说明本发明所提供的一种基于图论的代码测试方法的具体方案。
请参阅图1,其示出了本发明一个实施例提供的基于图论的代码测试方法流程图,该方法包括:
步骤S1:以功能函数为节点构建图结构,功能函数之间的接口为图结构节点之间的边,根据每个节点的调用频率和同类功能函数节点的连接分布特征得到图结构中每个节点的重要程度。
本发明的目的是利用功能函数及函数接口的特性构建图结构,在图结构中进行两次以上路径搜索得到多条测试路径以完整的实现代码测试,并且在不影响代码测试稳定性的前提下尽可能的提高测试效率。
首先,代码测试需要一个完整的流程,该流程包括代码测试准备阶段及代码测试阶段。本发明所提出的主要发明内容在于代码测试阶段。代码测试准备阶段对整个代码测试而言十分重要,其决定了代码测试效果,所以本发明需要根据代码测试的流程首先完成代码测试准备。代码测试准备阶段包括需求评审、测试计划及测试用例三个过程,其中需求评审过程主要内容为确定代码功能与场景分析,测试计划过程主要内容为明确需求与功能并准备测试设备与测试数据,测试用例过程主要包括为功能测试用例和性能及接口测试用例,在此不做进一步赘述。
在代码测试阶段,本发明利用对功能函数及接口的特性构建图结构。在构建图结构之前,需要考虑到在代码实际运行过程中,存在一个功能函数重复在两个以上功能模块中,直接按照代码实际运行过程中的功能函数作为基础进行测试会造成大量的时间浪费以及测试资源浪费,因此为了提高实际测试过程中的测试效率,将所有的功能函数进行单独封装。此时每一个功能函数会存在于两个以上功能模块中,以一个功能函数为一个测试单元,由于一个功能函数不同的功能模块与其他功能函数存在接口连接,因此在整体上会呈现不同功能函数之间存在两个以上接口相连。将功能函数与函数之间的接口作为基本要素构建图结构,进一步根据所构建的图结构中节点与边的关系进行路径搜索得到测试路径。
以功能函数为节点构建图结构,功能函数之间的接口为图结构节点之间的边。则此时对应的图结构中,节点之间通过边相连接,即功能函数之间通过接口相连接,且由于代码中功能函数及函数接口的特性,在图结构中一个节点通常与两个以上节点相连接。请参阅图2,其示出了本发明一个实施例所提供的一种图结构示意图,在图结构示意图中,存在七个不同的节点,节点通过字母P表示,每个节点通过边与两个以上节点相连接。
在图结构建立完成后,由于完整的代码测试需要测试所有功能函数与接口,即在图结构中需要搜索所有的节点和边。但是在搜索过程中会不可避免的出现重复搜索的节点和边,所以为了提高路径搜索所形成测试路径对代码测试的效率,需要对搜索路径进行控制以减少重复搜索的次数,实现对路径搜索适应性的调整,避免两次以上重复搜索同一节点和边,提高搜索效率。
本发明首先需要保证路径搜索的搜索效率,即减少重复搜索节点和边的数量;又考虑到当功能函数在代码中越重要时,测试所需要的可靠性越高,所以在不可避免的出现重复搜索节点的情况下,尽可能的将重要程度高的功能函数对应的节点作为重复搜索的节点。由于每个功能函数在程序代码中调用的次数和由于函数调用造成的影响范围不同,则每个功能函数在整个代码测试流程中的重要程度不同。所以可根据不同节点对应功能函数的重要程度得到每个节点的重要程度,进一步根据将每个节点的重要程度进行路径搜索。
由于节点表征功能函数,所以可以根据每个节点对应的调用频率和同类功能函数节点的连接分布特征得到图结构中每个节点的重要程度,具体的:计算目标节点对应的功能函数的调用次数与调用函数总次数的比值并记为目标节点的调用占比,获得目标节点对应连接节点的数量并记为节点连接数量,统计目标节点对应的功能函数与每个连接节点对应的功能函数之间的连接调用的次数并记为函数连接调用次数,统计目标节点与各个节点对应的函数连接调用次数中相同连接的次数并记为相同连接次数,计算目标节点对应的各个节点的函数连接调用次数与相同连接次数比值的均值,并将对应的均值记为相同函数连接重要程度,将目标节点对应的调用占比和相同函数连接重要程度的乘积作为目标节点的重要程度;改变目标节点得到每个节点的重要程度。在公式上表现为:
其中,表示节点/>的重要程度,/>表示节点/>对应的功能函数在程序代码中调用的次数,/>表示程序代码中调用函数的总次数,/>表示与节点/>相连接的节点的数量,/>表示与节点相连接节点/>的序号,/>表示与节点/>相连接的第/>个节点与节点/>之间函数连接调用的次数,/>表示与节点/>相连接的第/>个节点与节点/>之间函数连接调用的次数中相同连接的次数。
考虑到当功能函数调用的次数越多时,则该功能函数在代码中越重要,即对应的节点的重要程度高,在该公式中体现为节点对应的功能函数在程序代码中调用的次数与程序代码中调用函数的总次数的比值,即在公式中表现为当越大时,对应的节点/>的重要程度越大。此外,影响节点重要程度的因素除了节点对应功能函数的调用次数,还需要考虑到节点对应的功能函数在程序代码中的影响力,该公式通过/>表示节点对应的功能函数在程序代码中的影响力,虽然/>表征节点与相连节点之间的连接调用次数,且该连接调用次数越大,对应的影响力应当越强,但是节点与相连节点之间的连接调用次数中存在相同连接的情况,所以通过相同连接的情况对连接调用次数的影响力进行限制;即在公式中对应为/>,当节点/>与相连节点之间函数连接调用次数越多,节点/>与相连节点之间函数连接调用次数中相同连接的次数越少,即/>越大,/>越小,对应的节点/>的重要程度越大。
步骤S2:对图结构进行路径搜索;路径搜索过程包括:根据重要程度筛选出路径起始点,根据与路径起始点相连节点的节点重要程度和连接关系筛选出新的路径点;每筛选出一个新的路径点,对应路径点需要根据被搜索的次数和相连未搜索节点的分布对重要程度进行更新;根据搜索路径的最新路径点相连节点在搜索路径中的分布情况和搜索次数获得停止概率,根据停止概率判断是否停止路径搜索。
至此,通过步骤S1得到每个节点的在初始情况下的重要程度,该节点重要程度的目的是将重要程度作为一个重要参数影响路径搜索过程中路径点的筛选,以使得路径搜索的过程具有可控性。由于路径搜索是一个不断延伸的过程,仅将节点的重要程度作为路径搜索的参考因素进行路径搜索,即仅通过图结构中两两相连接得到关系得到测试路径,在搜索结果上体现为存在大量的重复搜索过程,并且重复搜索的节点对代码的测试不具有有益性,使得得到的测试路径效率低下且稳定性差。因此本发明在考虑节点重要程度外,引入路径点相连节点的连接关系筛选出新的路径点。
路径搜索进行的前提是选择路径起始点,因为路径起始点的选择对路径搜索的影响巨大,因此随机选择节点作为路径起始点的方法并不合适。由于路径搜索过程为优先选取重要程度大的节点作为路径点,所以在搜索过程中,重要程度小的节点在路径搜索中筛选出的可能性较小,所以为了提高搜索效率,应当选择重要程度小的节点作为路径起始点,即根据重要程度筛选出路径起始点。
优选地,将路径点选取次数为零的节点与图结构中未搜索的边相连节点记为待选择初始路径点,选取待选择初始路径点中节点的重要程度最小的节点作为搜索路径的路径起始点;当待选择初始路径点中存在两个以上重要程度最小的节点时,随机选择一个待选择初始路径点中重要程度最小的节点作为搜索路径的路径起始点。
在得到搜索路径的路径起始点之后,需要在路径起始点的基础上进行路径搜索,由于在图结构中不同节点具有两个以上连接边与其他不同的节点相连,且不同节点的重要程度不同,因此需要设定具有可控性的路径搜索方法完成路径搜索。
本发明根据与路径起始点相连节点的重要程度和连接关系筛选出新的路径点。分析与路径点相连的三层节点的重要程度和连接关系选取新的路径点,具体的:
其中,为与路径起始点相连的第/>个待选择节点的路径点可能性,/>表示与路径起始点相连的第/>个待选择节点的节点重要程度,/>表示与路径起始点相连的第/>个待选择节点的度,/>表示第/>个待选择节点所连接的第/>个节点的节点重要程度,/>表示第/>个待选择节点所连接的第/>个节点的度,/>表示/>第个待选择节点的所有待选择节点中除了第/>个节点外第/>个节点的节点重要程度,/>表示第/>个待选择节点的所有待选择节点中除了第/>个节点外第/>个节点的度,/>表示第/>个待选择节点的待选择节点序号,/>表示第/>个待选择节点的所有待选择节点中除了第/>个节点外其他节点的序号,/>为与路径起始点相连的第/>个待选择节点的已存在于路径中的次数,/>为常数,在本发明实施例中,常数/>设置为1。通过路径点可能性模型计算与路径起始点相连的所有节点的路径点可能性,将与路径起始点相连的所有节点的路径点可能性最大的节点作为新的路径点。
例如,在图2中的某次路径搜索过程中对于各个节点重要程度相同的情况进行分析,将将各个节点的重要程度表示为1,当搜索路径的最新路径点为P3时,对应的待选择节点为P2、P1、P6和P4,此时需要分别计算这四个节点对应的路径点可能性,以P1的路径点可能性计算为例,将P1对应的节点作为第个待选择节点,/>表示P1对应的路径点可能性,/>表示P1的重要程度,/>表示P1的度,由于P1与六个节点相连,所以P1的度为6。进一步需要考虑的是P1的连接关系特征值,即/>,当/>对应的节点为P6时,P6的度为5,对P6对应的局部影响程度进行计算,在公式中表现为,对应的当/>对应的节点为P4时,P4的度为4,计算P6和P4之间的度差异,并将P4的重要程度作为权值得到P6与P4之间的差异影响度为1,即/>为1,进一步计算P6与其余和P1相连接的节点之间的差异影响度,对应为P6与P3之间的差异影响度为1,P6与P7之间的差异影响度为2,P6与P2之间的差异影响度为2,P6与P3之间的差异影响度为1,P6的局部影响程度为P6对应所有差异影响度的均值与重要程度的乘积,即P6的局部影响程度为1.4;根据P6的局部影响程度计算过程可以分别计算出与P1相连接的其余点的局部影响程度,在结果上表现为:P7、P3、P4、P2、P5的局部影响程度均为0.8,与P1连接的所有点的局部影响程度的均值即为P1的连接关系特征值,计算得到P1的连接关系特征值为/>,进一步计算P1的连接关系特征值与P1的度和重要程度的乘积,得到P1在不考虑存在于路径次数的情况下路径点的可能性为5,进一步引入P1存在于路径的次数得到P1的路径点可能性,若P1已存在于路径中的次数为1,通过计算得到P1的路径点可能性为2.5;需要说明的是,因为存在于路径的次数越大,对应的路径点可能性越小,若在路径搜索过程中P3再次作为了新的路径点,若此时P1已经被选择过了多次,则P1的路径点可能性会被大大减小,进而使得选择其他未被选择过的节点或者选择次数少的节点作为新的路径点,进而保证搜索路径中经过更多的边和节点。根据P1的路径点可能性计算方法计算出与P3相连接的其他节点对应的路径点可能性,选择与P3相连接的所有点中路径点可能性最高的节点作为新的路径点。
路径点可能性模型的主要参数为与路径点相关节点的重要程度和度,重要程度表征节点对应的功能函数在代码中的重要性,度表征节点对应功能函数的连接关系,在选择路径点时,待选择节点对应的重要程度越高、连接节点的可选路径范围越广,对应的节点选择的可能性应当越大。该特点在公式中通过三层进行体现:首先第一层为与路径起始点相连接的待选择节点的度和重要程度,第二层为与待选择节点相连的各个节点的度和重要程度,第三层为与待选择节点相连的各个节点的度在重要程度影响下的互差均值。
首先计算与路径起始点相连接的待选择节点的度和重要程度的乘积,该乘积反映了对应节点在路径搜索过程中的影响程度。对应的待选择的节点的度和重要程度越大,则该节点成为路径点的可能性越大。进一步计算与待选择节点的所连接的节点之间的差异,该差异通过与待选择节点的所连接的节点的重要程度和与待选择节点的所连接的节点两两之间度的差异乘积累加值的均值得到,能够反映出与待选择节点相连接的节点的局部影响程度,在公式中对应为,进一步计算与待选择节点的所连接的节点之间的差异和对应的与待选择节点的所连接的节点的重要程度之间乘积的均值即可表征当前待选择节点的连接关系,在公式中对应为,表征与待选择节点所连接的所有节点之间的互差均值,其值越大,则对应的待选择节点后续路径越明确,说明该待选择节点成为搜索路径下一个节点的可能性越大。此外,由于在两次以上搜索过程中会存在待选择的节点中存在已经存在于路径中的节点,所以为了能够提高路径搜索效率,应当合适的降低对应的节点成为下一个路径点的可能性,即在公式中通过引入/>限制已经存在于路径中的节点作为待选择节点时的路径点可能性,且当与路径起始点相连的待选择节点的已存在于路径中的次数越大时,对应的待选择节点成为下一个路径点的可能性越小。需要说明的是,该过程仅为得到路径初始点后选择下一个路径点的过程,后续的路径点选取过程仅通过将路径初始点改变为新的路径点即可得到。
考虑到随着搜索次数和搜索路径长度的增加,未搜索的节点与边的数量会逐渐减少,同时为了能够提高路径搜索的效率,在选择新的路径点时需要适当提高未搜索节点的权重,以尽可能的避免重复搜索,所以每次得到新的路径点后需要提高未搜索节点的重要程度或者降低已搜索节点的重要程度。但是考虑到路径搜索过程中会不可避免的出现重复搜索节点,且考虑到程序代码测试的稳定性,需要保证出现的重复搜索节点为对应功能函数比较重要的节点,因此本发明通过降低已搜索节点的重要程度来调整每次选择路径点后所有节点的重要程度。
每筛选出一个新的路径点,对应路径点需要根据被搜索的次数和相连未搜索节点的分布对重要程度进行更新。优选地,统计搜索路径搜索次数和目标节点在图结构中通过边相连接的所有相连节点中路径点选取次数为零的数量并记为未搜索分布状况,计算目标节点在路径更新前的重要程度与未搜索分布状况的乘积并将乘积与对应搜索路径搜索次数的比值记为目标节点在路径更新时的重要程度;改变目标节点得到每次路径更新时待选择节点的重要程度。在公式上表现为:
其中,为筛选出新的路径点后与新的路径点相连的节点/>对应的重要程度,/>表示当前搜索路径对应的搜索次数,/>为筛选出新的路径点前与新的路径点相连的节点/>对应的重要程度,/>为与新的路径点相连的节点/>相连接的未搜索的节点数量。随着搜索次数的增大,未搜索的节点数量会减少,在公式中对应为/>增加的同时,/>会随之减小,所以/>整体表征搜索次数的对应搜索路径在搜索时待选择节点的重要程度调整特征值,当搜索次数增加时,整体的重要程度调整征值减小,对应的待选择节点的重要程度减小。
该公式通过搜索次数作为降低节点重要程度的参数的同时,通过待选择节点所连接未搜索节点的数量作为提高节点重要性的参数,能够有效的抑制重复搜索重要程度高的节点的情况,且提高重要程度低的节点被搜索的概率,从而进一步提高搜索效率。
搜索路径进行路径搜索的过程不是持续进行的,当搜索路径满足停止条件时停止搜索,并开始下一次路径搜索过程。每次通过路径搜索得到新的路径点时,都需要对路径搜索得到的搜索路径进行判定,判断当前搜索路径是否满足停止搜索条件。根据搜索路径的最新路径点相连节点在搜索路径中的分布情况和搜索次数获得停止概率,根据停止概率判断是否停止路径搜索。
优选地,计算搜索路径的最新路径点的所有相连节点中存在于路径中的次数之和,并记为搜索路径的重复搜索特征值,计算搜索路径的重复搜索特征值与搜索路径最新路径点相连节点的数量比值,得到搜索路径对应的停止搜索可能性,将搜索路径的停止搜索可能性与搜索路径的搜索次数的比值作为搜索路径的停止概率。在公式上表现为:
其中,P表示当前搜索路径的停止概率,表示当前搜索路径对应的搜索次数,/>表示当前搜索路径中最新路径点相连节点的数量,/>表示当前搜索路径中最新路径点的第/>个相连节点存在于路径中的次数,/>为当前搜索路径中最新路径点的相连节点中已经存在于路径中的节点个数。
对于一次搜索过程,对应的路径搜索停止的目的是减少对重复的节点和边的重复搜索,所以在对搜索路径停止搜索的判定条件需要考虑到对应的待选择节点的路径重复选择分布特征,即成为路径点的次数,在公式中体现为,当搜索路径的待选择节点的路径重复选择分布特征越大,对应的停止概率应当越大。/>为待选择节点的数量,即最新路径点的度,当最新路径点的度越小时,对应的待选择节点的成为路径点的可能性越小,为了提高路径搜索的效率,此时越不能停止路径搜索。/>表示搜索路径的搜索次数,由于搜索次数增加,在图结构中未被搜索的点的数量会减少,则在停止概率计算公式中,/>会随之一直增大导致搜索路径的停止概率提高,从而使得得到的路径搜索长度变短。所以为了提高路径搜索效率,该公式通过引入搜索次数来控制路径搜索的停止概率,随着搜索次数的增加,对应搜索次数的搜索路径的停止概率会减小。
通过停止概率计算每次路径搜索过程中搜索路径的停止概率,进一步根据停止概率判定是否停止当前搜索路径的路径搜索过程,即当搜索路径的停止概率大于等于预设停止阈值时,停止当前搜索路径的路径搜索过程;相反的,当搜索路径的停止概率小于预设停止阈值时,继续当前搜索路径的路径搜索过程。在本发明实施例中,预设停止阈值设置为1。例如:当搜索次数为20次时,搜索路径的最新路径点的待选择节点的数量为3,则当最新路径点的三个待选择节点成为路径点的总次数大于等于60时,认为当前搜索路径需要停止,否则继续进行搜索。需要说明的是,预设停止阈值的具体设置情况需要根据实施者的具体实施情况设定,在此不做进一步赘述。
步骤S3:对图结构进行两次以上搜索直至图结构中所有节点与连接边都处于搜索路径中,完成代码测试路径的搜索。
至此,通过步骤S2得到了一个具体的搜索路径的路径搜索过程。考虑到对整体图结构进行搜索的目的是通过路径搜索过程搜索所有的节点和边,以达到对程序代码进行完全测试的目的。但是由于搜索过程中会不可避免的出现重复搜索的节点和边,而且只进行一次搜索的情况下,重复搜索的节点和边的数量会更多,因此为了提高搜索效率,本发明对图结构进行两次以上搜索直至图结构中所有节点与连接边都处于搜索路径中,在图结构中表现为得到多条搜索路径。
此时在图结构中的搜索路径对应代码整体的测试路径,即通过图结构中搜索路径的路径搜索过程完成代码测试路径的搜索。进一步根据代码中的测试路径,在程序代码中按照测试路径的节点顺序对功能函数进行调用测试,从而实现对程序代码的测试。
综上所述,本发明将程序代码中的功能函数作为节点、功能函数之间的接口作为节点之间的边构建图结构进行数据处理,根据图结构中节点的调用关系得到节点的重要程度,根据节点的重要程度筛选搜索路径的起始点,根据节点的重要程度和连接关系进行路径搜索,通过计算搜索路径的停止概率判断停止路径搜索过程,进一步对图结构整体进行两次以上搜索得到对应数量的搜索路径,根据搜索路径完成代码测试路径的搜索。本发明在保证了测试路径在搜索过程中的可控性,且在保证搜索效率的同时保证了测试路径的稳定性。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
Claims (6)
1.一种基于图论的代码测试方法,其特征在于,所述方法包括:
以功能函数为节点构建图结构,功能函数之间的接口为所述图结构节点之间的边,根据每个节点的调用频率和同类功能函数节点的连接分布特征得到图结构中每个节点的重要程度;
对图结构进行路径搜索;所述路径搜索过程包括:根据重要程度筛选出路径起始点,根据与路径起始点相连节点的节点重要程度和连接关系筛选出新的路径点;每筛选出一个新的路径点,对应路径点需要根据被搜索的次数和相连未搜索节点的分布对重要程度进行更新;根据搜索路径的最新路径点相连节点在搜索路径中的分布情况和搜索次数获得停止概率,根据停止概率判断是否停止路径搜索;
对图结构进行两次以上搜索直至图结构中所有节点与连接边都处于搜索路径中,完成代码测试路径的搜索;
所述根据被搜索的次数和相连未搜索节点的分布对重要程度进行更新包括:
将路径搜索时新的路径点对应的待选择节点记为目标节点,统计搜索路径搜索次数,并统计目标节点在图结构中通过边相连接的所有相连节点中路径点选取次数为零的数量,并记为未搜索分布状况,计算目标节点在路径更新前的重要程度与未搜索分布状况的乘积,并将乘积与对应搜索路径搜索次数的比值记为目标节点在路径更新时的重要程度;
改变目标节点得到每次路径更新时待选择节点的重要程度;
所述新的路径点的获取方法包括:
其中,为与路径起始点相连的第/>个待选择节点的路径点可能性,/>表示与路径起始点相连的第/>个待选择节点的节点重要程度,/>表示与路径起始点相连的第/>个待选择节点的度,/>表示第/>个待选择节点所连接的第/>个节点的节点重要程度,/>表示第/>个待选择节点所连接的第/>个节点的度,/>表示第/>个待选择节点的所有待选择节点中除了第/>个节点外第/>个节点的节点重要程度,/>表示第/>个待选择节点的所有待选择节点中除了第/>个节点外第/>个节点的度,/>表示第/>个待选择节点的待选择节点序号,/>表示第/>个待选择节点的所有待选择节点中除了第/>个节点外其他节点的序号,/>为与路径起始点相连的第/>个待选择节点的已存在于路径中的次数,/>为常数;
通过路径点可能性模型计算与路径起始点相连的所有节点的路径点可能性,将与路径起始点相连的所有节点的路径点可能性最大的节点作为新的路径点。
2.根据权利要求1所述的一种基于图论的代码测试方法,其特征在于,所述根据每个节点的调用频率和同类功能函数节点的连接分布特征得到图结构中每个节点的重要程度包括:
计算目标节点对应的功能函数的调用次数与调用函数总次数的比值并记为目标节点的调用占比,获得目标节点对应连接节点的数量并记为节点连接数量,统计目标节点对应的功能函数与每个连接节点对应的功能函数之间的连接调用的次数并记为函数连接调用次数,统计目标节点与各个节点对应的函数连接调用次数中相同连接的次数并记为相同连接次数,计算目标节点对应的各个节点的函数连接调用次数与相同连接次数比值的均值,并将对应的均值记为相同函数连接重要程度,将目标节点对应的调用占比和相同函数连接重要程度的乘积作为目标节点的重要程度;
改变目标节点得到每个节点的重要程度。
3.根据权利要求1所述的一种基于图论的代码测试方法,其特征在于,所述根据搜索路径的最新路径点相连节点在搜索路径中的分布情况和搜索次数获得停止概率包括:
计算搜索路径的最新路径点的所有相连节点中存在于路径中的次数之和,并记为搜索路径的重复搜索特征值,计算搜索路径的重复搜索特征值与搜索路径最新路径点相连节点的数量比值,得到搜索路径对应的停止搜索可能性,将搜索路径的停止搜索可能性与搜索路径的搜索次数的比值作为搜索路径的停止概率。
4.根据权利要求1所述的一种基于图论的代码测试方法,其特征在于,所述路径起始点的获取方法包括:
将路径点选取次数为零的节点与图结构中未搜索的边相连节点记为待选择初始路径点,选取待选择初始路径点中节点的重要程度最小的节点作为搜索路径的路径起始点。
5.根据权利要求4所述的一种基于图论的代码测试方法,其特征在于,所述选取待选择初始路径点中节点的重要程度最小的节点作为搜索路径的路径起始点包括:
当待选择初始路径点中存在两个以上重要程度最小的节点时,随机选择一个待选择初始路径点中重要程度最小的节点作为搜索路径的路径起始点。
6.根据权利要求1所述的一种基于图论的代码测试方法,其特征在于,所述根据停止概率判断是否停止路径搜索包括:
当搜索路径的停止概率大于等于预设停止阈值时,停止当前搜索路径的路径搜索过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310140397.3A CN116028375B (zh) | 2023-02-21 | 2023-02-21 | 基于图论的代码测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310140397.3A CN116028375B (zh) | 2023-02-21 | 2023-02-21 | 基于图论的代码测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028375A CN116028375A (zh) | 2023-04-28 |
CN116028375B true CN116028375B (zh) | 2023-06-16 |
Family
ID=86091422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310140397.3A Active CN116028375B (zh) | 2023-02-21 | 2023-02-21 | 基于图论的代码测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028375B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273297A (zh) * | 2017-06-28 | 2017-10-20 | 百度在线网络技术(北京)有限公司 | 用于生成测试用例的方法和装置 |
CN108195380A (zh) * | 2017-12-26 | 2018-06-22 | 广东嘉腾机器人自动化有限公司 | 一种基于最短路径的agv最优路径选择方法 |
CN111949534A (zh) * | 2020-08-12 | 2020-11-17 | 汪礼君 | 一种基于控制流启发式搜索策略的软件测试方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9218169B2 (en) * | 2013-11-19 | 2015-12-22 | Google Inc. | Callpath finder |
-
2023
- 2023-02-21 CN CN202310140397.3A patent/CN116028375B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273297A (zh) * | 2017-06-28 | 2017-10-20 | 百度在线网络技术(北京)有限公司 | 用于生成测试用例的方法和装置 |
CN108195380A (zh) * | 2017-12-26 | 2018-06-22 | 广东嘉腾机器人自动化有限公司 | 一种基于最短路径的agv最优路径选择方法 |
CN111949534A (zh) * | 2020-08-12 | 2020-11-17 | 汪礼君 | 一种基于控制流启发式搜索策略的软件测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116028375A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111782544B (zh) | 一种基于多种群遗传算法的软件无线电符合性测试方法 | |
CN109067725A (zh) | 网络流量异常检测方法及装置 | |
CN112364584B (zh) | 一种基于分布式的静态时序分析方法 | |
CN108363876B (zh) | 一种考虑关键故障的测试优化选择方法 | |
CN113468839B (zh) | 一种提高时序性能的布线方法及装置 | |
CN116028375B (zh) | 基于图论的代码测试方法 | |
CN110996365B (zh) | 一种基于多目标优化模型的异构网络垂直切换算法及系统 | |
CN113407185A (zh) | 基于贝叶斯优化的编译器优化选项推荐方法 | |
CN110515845A (zh) | 基于改进ipo策略的组合测试用例优化生成方法 | |
CN110162379A (zh) | 虚拟机迁移方法、装置和计算机设备 | |
JP2008140210A (ja) | 弾性表面波フィルタの設計方法及びその該設計方法を実行するプログラム及びそれを記録した媒体 | |
CN117422031B (zh) | Atpg系统测试向量生成和精简的方法和装置 | |
CN112699936B (zh) | 一种电力cps广义虚假数据注入攻击识别方法 | |
CN109687877A (zh) | 一种降低多级循环移位网络级联级数的方法及装置 | |
CN113886092A (zh) | 一种计算图执行方法、装置及相关设备 | |
CN112799961A (zh) | 基于贪婪算法和搜索算法的组合测试用例生成算法 | |
CN112130927A (zh) | 一种可靠性增强的移动边缘计算任务卸载方法 | |
KR102460485B1 (ko) | 정책 벡터 기반 인공신경망 탐색 장치 및 방법 | |
CN106682290B (zh) | 可编程逻辑器件布线方法及装置 | |
CN116010291A (zh) | 基于均衡优化理论与灰色预测模型的多路径覆盖测试方法 | |
CN115640845A (zh) | 基于生成对抗网络的图神经网络少数类别样本生成方法 | |
CN110659034B (zh) | 云边混合计算服务的组合优化部署方法、系统及存储介质 | |
CN115208818B (zh) | 一种基于遗传算法的QoS选路方法 | |
CN108632913A (zh) | 基于ncs测量的lte-gsm邻区核查方法及系统 | |
Huang et al. | Elastic DNN Inference with Unpredictable Exit in Edge Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |