CN112286824A - 基于二分搜索迭代的测试用例生成方法、系统及电子设备 - Google Patents
基于二分搜索迭代的测试用例生成方法、系统及电子设备 Download PDFInfo
- Publication number
- CN112286824A CN112286824A CN202011300325.3A CN202011300325A CN112286824A CN 112286824 A CN112286824 A CN 112286824A CN 202011300325 A CN202011300325 A CN 202011300325A CN 112286824 A CN112286824 A CN 112286824A
- Authority
- CN
- China
- Prior art keywords
- test case
- iteration
- test
- algorithm
- binary 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种基于二分搜索迭代的测试用例生成方法、系统及电子设备,方法包括:对被测程序进行静态分析,提取目标路径集和静态结构信息;基于所提取的静态结构信息,执行二分搜索迭代算法产生新的测试用例;将生成的测试用例驱动被测程序运行,记录并更新路径覆盖信息;从当前迭代产生的测试用例和上一次迭代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代,直到迭代算法满足终止条件。本发明实施例的二分搜索迭代算法充分利用路径之间的潜在关系,其通过利用已有的测试用例快速找到其他路径的测试用例。其中,二分搜索具有较高的搜索效率,提高了面向路径覆盖的测试用例生成效率,降低了测试成本。
Description
技术领域
本发明涉及软件测试领域,更具体地,涉及一种基于二分搜索迭代的测试用例生成方法、系统及电子设备。
背景技术
软件测试是软件开发生命周期中保证软件质量的重要手段之一,自动化软件测试(AST)是一种很有前途的提高软件测试有效性和效率的方法。影响AST效率的一个关键因素是生成满足所选覆盖准则的测试用例,这些覆盖准则有语句覆盖、分支覆盖、路径覆盖等。经证实,语句或分支覆盖问题可以转化为路径覆盖问题。因此,寻找一种合适的面向路径覆盖的自动化测试用例(ATCG-PC)方法是AST中一个重要的课题。
到目前为止,对ATCG-PC的研究已经取得了一定的成就,几种突出的ATCG-PC技术包括符号执行、随机测试和基于搜索的测试。
符号执行使用符号表达式来表示被测试程序的变量值,通过求解相关的约束问题来解决ATCG-PC问题。这种技术在处理数组、过程调用、无限循环和指针引用时会遇到挑战。
随机测试是通过对被测程序的输入域进行随机采样来解决ATCG-PC问题。这项技术很简单,但是有很大的盲目性。
面对日益复杂的程序,基于搜索的测试已成为ATCG-PC的发展趋势。在基于搜索的测试中,采用基于搜索的算法求解ATCG-PC问题。基于搜索的算法通常将ATCG-PC转化为优化问题,然后使用适应度函数来指导算法在搜索空间中找到未覆盖路径的测试用例。
基于搜索的算法可以分为以下两类,基于个体的算法:基于个体的算法随机生成一个个体,然后在优化过程中提高这个个体的质量,直到达到最优输出,已经应用到ATCG-PC中的算法包括爬山(HC)、禁忌搜索(TS)、模拟退火(SA)和交替变量法(AVM)。
基于种群的算法:基于种群的算法随机生成包含多个个体的种群,然后在优化过程中通过个体的信息交互去提高这个种群的质量。已经应用到ATCG-PC中的算法包括遗传算法(GA)、粒子群优化算法(PSO)、差分进化算法(DE)、人工蜂群算法(ABC)、蚁群优化算法(ACO)、否定选择算法(NSA)、帝国竞争算法(ICA)和智能水滴算法(IWD)。
虽然这些基于搜索的算法可以解决ATCG-PC,但在设计时并没有充分利用ATCG-PC的行业知识。在ATCG-PC中,相似的路径通常由相似的测试用例执行,也就是说,覆盖某些路径的现有测试用例可以用来快速找到覆盖其相似路径的测试用例。这种特定于行业的知识我们简称为测试用例的维度相关性(DRst)。目前,只有少数研究者关注到DRst,并利用它来改进一些求解ATCG-PC的算法。经过调查,DRst只用来辅助一些算法,并没有用来构建一个新的算法来求解ATCG-PC。
发明内容
本发明提供一种克服上述问题或者至少部分地解决上述问题的一种基于二分搜索迭代的测试用例生成方法、系统及电子设备。
根据本发明实施例的第一方面,提供了一种基于二分搜索迭代的测试用例生成方法,包括:
a、对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;
b、基于所提取的静态结构信息,执行二分搜索迭代算法产生新的测试用例;
c、将生成的新的测试用例驱动被测程序运行,记录并更新路径覆盖信息;
d、判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从当前迭代产生的测试用例和上一次迭代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代;
e、重复执行b~d,直到迭代算法满足终止条件,生成被测程序的所有目标路径的所有测试用例。
根据本发明实施例的第二方面,提供一种基于二分搜索迭代的测试用例生成系统,包括:
提取模块,用于对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;
生成模块,用于基于所提取的静态结构信息,执行二分搜索迭代算法生成新的测试用例;
更新模块,用于将生成的新的测试用例驱动被测程序运行,记录并更新路径覆盖信息;
迭代模块,用于判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从当前迭代产生的测试用例和上一次迭代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代;重复调用所述生成模块、所述更新模块和所述迭代模块,直到迭代算法满足终止条件,生成被测程序的所有目标路径的所有测试用例。
根据本发明实施例的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现基于二分搜索迭代的测试用例生成方法的步骤。
根据本发明实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现基于二分搜索迭代的测试用例生成方法的步骤。
本发明实施例提供的一种基于二分搜索迭代的测试用例生成方法、系统及电子设备,对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;基于所提取的静态结构信息,执行二分搜索迭代算法产生新的测试用例;将生成的测试用例驱动被测程序运行,记录并更新路径覆盖信息;判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从当代产生的测试用例和上一代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代。反复产生新的测试用例,直到迭代算法满足终止条件。二分搜索迭代算法充分利用路径之间的潜在关系,其通过利用已有的测试用例快速找到其他路径的测试用例,可以以较少的测试用例实现被测程序的最高路径覆盖。其中,二分搜索具有较高的搜索效率,提高了面向路径覆盖的测试用例生成效率,降低了测试成本。
附图说明
图1为本发明实施例提供的一种基于二分搜索迭代的测试用例生成方法流程图;
图2为本发明实施例提供的一种基于二分搜索迭代的测试用例生成方法的整体流程图;
图3为本发明实施例提供的一种基于二分搜索迭代的测试用例生成系统结构图;
图4为本发明实施例提供的一种可能的电子设备的硬件结构示意图;
图5为本发明实施例提供的一种可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1为本发明实施例提供的一种基于二分搜索迭代的测试用例生成方法流程图,如图1所示,所述方法包括:a、对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;b、基于所提取的静态结构信息,执行二分搜索迭代算法产生新的测试用例;c、将生成的新的测试用例驱动被测程序运行,记录并更新路径覆盖信息;d、判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从当前迭代产生的测试用例和上一次迭代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代;e、重复执行b~d,直到迭代算法满足终止条件,生成被测程序的所有目标路径的所有测试用例。
可以理解的是,在面向路径覆盖的自动化测试用例方法中,相似的路径通常由相似的测试用例执行,也就是说,覆盖某些路径的现有测试用例可以用来快速找到覆盖其相似路径的测试用例。
基于此,本发明实施例提出了一种基于二分搜索迭代的测试用例生成方法,能够提高测试用例的搜索效率。具体的,对被测程序进行静态分析,提取目标路径集和相关的静态结构信息。在这个目标路径集中,每条路径都是一条独立路径,即每条路径至少包含一条边在其他路径中从未有过,而且程序中所有的边都能被访问。基于所提取的静态结构信息,执行二分搜索迭代算法产生新的测试用例,将生成的测试用例驱动被测程序运行,记录并更新路径覆盖信息。根据记录更新的路径覆盖信息,判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从上一次迭代产生的测试用例和本次迭代产生的测试用例选取最优的测试用例进行下一次的迭代。重复迭代过程,直到找到一个测试用例集可以覆盖目标路径集中的所有路径或者达到规定的运行时间,则终止算法运行。
本发明实施例采用的二分搜索迭代算法充分利用路径之间的潜在关系,其通过利用已有的测试用例快速找到其他路径的测试用例。其中,二分搜索具有较高的搜索效率,提高了面向路径覆盖的测试用例生成效率,降低了测试成本。
在一种可能的实施例方式中,目标路径集为被测程序中要被覆盖的每一条路径组成的集合,静态结构信息包括测试数据的类型和测试数据的类型。
可以理解的是,对被测程序进行静态分析后,提取对应的目标路径集和静态结构信息,其中,目标路径集为后续生成的测试用例所要覆盖的路径,静态结构信息主要包括测试数据的类型和测试数据的范围等。
在一种可能的实施例方式中,根据静态结构信息,确定二分搜索迭代算法的搜索空间大小和算法终止条件,算法终止条件为路径全覆盖或者达到规定的运行时间;紧接着执行二分搜索迭代算法产生新的测试用例。
其中,在第一次迭代中,初始化测试用例x是随机生成,测试用例x通过如下方式随机生成:
xj=Lowj+rand(0,1)·(Upj-Lowj),j=1,2,…,D;(1)
其中,D是测试用例的维数,Upj、Lowj分别是测试用例x的第j维的上界和下界,rand(0,1)表示由均匀分布在[0,1]范围内产生的随机数。
其中,通过公式(1)可随机生成初始化测试用例x的每一维数据,比如,初始化测试用例总共有D维,按照公式(1)随机生成初始化测试用例x的每一维,可随机初始化测试用例x。
然后根据测试用例x的一个维度生成两个候选测试用例u1和u2,也就是说,uk和x除了第j维外,其他维度均相同,生成候选测试用例u1和u2的实现具体过程如下:
uk=x;(2)
其中,k=1,2,基于二分查找的思想,sj会从(Upj-Lowj)·0.5迭代性减少到一个阈值,对于测试用例x的每一维,共迭代t次,在初始化测试用例x的第j维的第t次迭代中,sj=(Upj-Lowj)·0.5t。
可以理解的是,从测试用例x的第一维开始探索。在测试用例x的第一维的第一次迭代中,sj=(Upj-Lowj)·0.5,基于s1生成两个测试用例u1和u2。在测试用例x的第一维的第t次迭代中,sj=(Upj-Lowj)·0.5t,基于s1又生成两个测试用例u1和u2。
在一种可能的实施例方式中,将生成的测试用例驱动被测程序运行,记录并更新路径覆盖信息包括:将生成的测试用例u1和u2作为被测程序的测试输入数据,记录检测输出结果,更新路径覆盖信息。
可以理解的是,当前迭代生成了两个测试用例u1和u2,将二分搜索迭代算法生成的测试用例u1和u2作为测试驱动模块中被测程序的数据输入,以检测被测程序的缺陷。驱动被测程序运行并记录输出结果,同时更新路径覆盖信息和测试套件。
在一种可能的实施例方式中,在不满足迭代终止的情况下,从当前迭代产生的测试用例和上一代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代包括:判断二分迭代算法是否达到了算法终止条件,若未达到算法终止条件,则基于测试用例的适应度函数值,从测试用例x、测试用例u1和u2中选取最优的测试用例替换初始化测试用例x进行下一次的迭代。
可以理解的是,判断没有达到算法终止条件,即未覆盖目标路径集中的所有路径或者达到设置的运行时间,则重复迭代过程。其中,从测试用例x、u1和u2中选取适应度最优的测试用例更新测试用例x进行下一次迭代,重复生成新的测试用例。
测试用例x的更新是基于目标路径的适应度函数,对于给定的目标路径适应度函数f(x),在u1,u2和x中选择适应度值最优的测试用例进行下一次迭代。u1,u2和x除了第j维外,其他维度都是相同的,所以x的更新过程可以被描述为:
其中,BD(px,pt)是测试用例x所覆盖的路径px和目标路径pt的分支距离,其可以由表1计算;β是大于0的数字,本发明实施例将β设置为1。AL(px,pt)是测试用例x所覆盖的路径px和目标路径pt之间不匹配的分支谓词的数量,目标路径pt的选择是基于最新被覆盖的路径。在未覆盖集合中,首选与最新被覆盖的路径更相似的一条未覆盖路径作为目标路径pt,其中两条径的相似度由AL值来衡量,AL值越小说明这两条路径越相似。在迭代过程中如果找到了覆盖目标路径pt的测试用例,此目标路径就会在未覆盖集合中删除,然后从未覆盖集合中选择另外一条未覆盖路径作为新的目标路径pt。也就是说,首先选择一条未覆盖路径作为目标路径pt,如果在迭代过程中找到覆盖目标路径pt的测试用例,就会选择另外一条未覆盖路径作为新的目标路径pt,在后面的迭代过程中寻找可以覆盖新目标路径pt的测试用例,直到所有未覆盖路径的测试用例被找到。
可以理解的是,采用根据公式(5)选择出的最优的测试用例更新测试用例x的第j维。在第j维的迭代中,如果sj>1,则继续在第j维内迭代;如果sj=1且j<D,则j=j+1,则在第j+1维迭代;如果sj=1且j=D,则对于测试用例x迭代完成。如果为满足算法的终止条件,则重新初始化一个新的测试用例x。
表1
通过不断的迭代过程,生成了覆盖被测程序的目标路径集中的所有路径的测试用例,参见图2,示出了基于二分搜索迭代的测试用例生成方法的整个流程图。
首先,通过对被测程序进行静态分析,提取目标路径集和静态结构信息。根据静态结构信息,确定二分搜索迭代算法的基本参数,基于二分搜索迭代算法生成测试用例。根据生成的测试用例,作为被测程序的测试输入数据,执行被测程序,输入测试结果,并记录更新测试用例所覆盖的路径。
然后判断是否达到迭代算法终止条件,若未达到,则上一次迭代产生的测试用例和本次迭代产生的测试用例选取适应度最优的测试用例更新测试用例进行下一次迭代,继续生成新的测试用例,直到迭代算法满足终止条件,也就是生成的测试用例集能够覆盖被测程序的目标路径集中的每一条路径或者算法的运行时间达到给定的最大值。
对于本发明实施例提供的一种基于二分搜索迭代的测试用例生成方法,进行了实验,选取了6个雾计算基准程序和6个自然语言处理基准程序来验证二分搜索迭代算法求解面向路径覆盖的测试用例生成方法的有效性和效率。实验结果表明,二分搜索迭代算法可以用较少的测试用例来获得了最高的路径覆盖率。这表明了二分搜索迭代算法可以提高了面向路径覆盖的测试用例自动生成效率,从而降低了测试成本。
参见图3,提供了一种基于二分搜索迭代的测试用例生成系统,包括提取模块301、生成模块302、更新模块303和迭代模块304,其中:
提取模块301,用于对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;
生成模块302,用于基于所提取的静态结构信息,执行二分搜索迭代算法生成新的测试用例;
更新模块303,用于将生成的新的测试用例驱动被测程序运行,记录并更新路径覆盖信息;
迭代模块304,用于判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从当前迭代产生的测试用例和上一次迭代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代;重复调用所述生成模块、所述更新模块和所述迭代模块,直到迭代算法满足终止条件,生成被测程序的所有目标路径的所有测试用例。
本发明实施例提供的基于二分搜索迭代的测试用例生成系统与前述的基于二分搜索迭代的测试用例生成方法相对应,基于二分搜索迭代的测试用例生成系统的相关技术特征可参考前述各实施例的基于二分搜索迭代的测试用例生成方法的相关技术特征,在此不再重复说明。
请参阅图4,图4为本申请实施例提供的电子设备的实施例示意图。如图4所示,本申请实施例提了一种电子设备,包括存储器410、处理器420及存储在存储器420上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤:对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;根据静态结构信息确定二分搜索迭代算法的基本参数,执行二分搜索迭代算法生成测试用例;将生成的测试用例驱动被测程序运行,记录并更新路径覆盖信息;在不满足迭代终止的情况下,从上一次迭代保留下来的测试用例和当次迭代生成的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代,直到迭代算法满足终止条件。
请参阅图5,图5为本申请实施例提供的一种计算机可读存储介质的实施例示意图。如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;根据静态结构信息确定二分搜索迭代算法的基本参数,执行二分搜索迭代算法生成测试用例;将生成的测试用例驱动被测程序运行,记录并更新路径覆盖信息;在不满足迭代终止的情况下,从上一次迭代保留下来的测试用例和当次迭代生成的测试用例中选取适应度最优的测试用例进行下一轮的迭代,直到迭代算法满足终止条件。
本发明实施例提供的一种基于二分搜索迭代的测试用例生成方法、系统及电子设备,对被测程序进行静态分析,提取目标路径集和静态结构信息;根据静态结构信息确定二分搜索迭代算法的基本参数,执行二分搜索迭代算法生成测试用例;将生成的测试用例驱动被测程序运行,记录并更新路径覆盖信息;在不满足迭代终止的情况下,从上一次迭代保留下来的测试用例和当次迭代生成的测试用例中选取适应度最优的测试用例进行下一轮的迭代,直到迭代算法满足终止条件。二分搜索迭代算法具有简单、易实现、设置参数少等特点,二分搜索迭代算法充分利用路径之间的潜在关系,其通过利用已有的测试用例快速找到其他路径的测试用例。其中,二分搜索具有较高的搜索效率,在解的左右区域搜索降低了陷入局部最优的概率,这使得二分搜索迭代算法不再局限于求解单峰函数;提高了面向路径覆盖的测试用例生成效率,降低了测试成本。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (8)
1.一种基于二分搜索迭代的测试用例生成方法,其特征在于,包括:
a、对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;
b、基于所提取的静态结构信息,执行二分搜索迭代算法产生新的测试用例;
c、将生成的新的测试用例驱动被测程序运行,记录并更新路径覆盖信息;
d、判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从当前迭代产生的测试用例和上一次迭代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代;
e、重复执行b~d,直到迭代算法满足终止条件,生成覆盖被测程序所有目标路径的所有测试用例。
2.根据权利要求1所述的方法,其特征在于,所述目标路径集为被测程序中所有需要被覆盖的路径的集合,所述静态结构信息包括被测程序的测试数据的范围和测试数据的类型。
3.根据权利要求2所述的方法,其特征在于,所述基于所提取的静态结构信息,执行二分搜索迭代算法产生新的测试用例包括:
根据所述静态结构信息,确定二分搜索迭代算法的搜索空间大小和算法终止条件,所述算法终止条件为路径全覆盖或者达到规定的运行时间;
在第一次迭代中,随机生成测试用例x,测试用例x通过如下方式随机生成:
xj=Lowj+rand(0,1)·(Upj-Lowj),j=1,2,…,D
其中,D是测试用例的维数,Upj、Lowj分别是测试用例x的第j维的上界和下界,rand(0,1)表示由均匀分布在[0,1]范围内产生的随机数。
根据测试用例x的一个维度生成两个候选测试用例u1和u2包括:
uk=x;
其中,k=1,2;基于二分查找的思想,sj会从(Upj-Lowj)·0.5迭代性减少到预设阈值,在测试用例x的第j维探索中,一共迭代t次,在第t次迭代中,sj=(Upj-Lowj)·0.5t;uk和x除了第j维外,其他维度均相同。
4.根据权利要求3所述的方法,其特征在于,所述将生成的测试用例驱动被测程序运行,记录并更新路径覆盖信息包括:
将生成测试用例作为被测程序的测试输入数据,记录检测输出结果,更新路径覆盖信息。
5.根据权利要求4所述的方法,其特征在于,所述判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从当代迭代产生的测试用例和上一次迭代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代包括:
若未达到算法终止条件,则基于测试用例的适应度函数值,从测试用例x、测试用例u1和u2中选取最优的测试用例替换测试用例x进行下一次的迭代;
所述初始化测试用例x的更新过程为:
6.一种基于二分搜索迭代的测试用例生成系统,其特征在于,包括:
提取模块,用于对被测程序进行静态分析,提取所述被测程序的目标路径集和静态结构信息;
生成模块,用于基于所提取的静态结构信息,执行二分搜索迭代算法生成新的测试用例;
更新模块,用于将生成的新的测试用例驱动被测程序运行,记录并更新路径覆盖信息;
迭代模块,用于判断二分迭代算法是否达到了算法终止条件,在不满足迭代终止的情况下,从当前迭代产生的测试用例和上一次迭代保留下来的测试用例中选取适应度最优的一个测试用例进行下一轮的迭代;重复调用所述生成模块、所述更新模块和所述迭代模块,直到迭代算法满足终止条件,生成被测程序的所有目标路径的所有测试用例。
7.一种电子设备,其特征在于,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求1-5任一项所述的基于二分搜索迭代的测试用例生成方法的步骤。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现如权利要求1-5任一项所述的基于二分搜索迭代的测试用例生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011300325.3A CN112286824B (zh) | 2020-11-18 | 2020-11-18 | 基于二分搜索迭代的测试用例生成方法、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011300325.3A CN112286824B (zh) | 2020-11-18 | 2020-11-18 | 基于二分搜索迭代的测试用例生成方法、系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112286824A true CN112286824A (zh) | 2021-01-29 |
CN112286824B CN112286824B (zh) | 2022-08-02 |
Family
ID=74398165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011300325.3A Active CN112286824B (zh) | 2020-11-18 | 2020-11-18 | 基于二分搜索迭代的测试用例生成方法、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112286824B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239022A (zh) * | 2021-04-19 | 2021-08-10 | 浙江大学 | 医疗诊断缺失数据补全方法及补全装置、电子设备、介质 |
CN113342700A (zh) * | 2021-08-04 | 2021-09-03 | 腾讯科技(深圳)有限公司 | 一种模型评估方法、电子设备及计算机可读存储介质 |
CN113468044A (zh) * | 2021-05-27 | 2021-10-01 | 长江大学 | 一种基于改进的灰色预测演化算法的测试用例生成方法 |
CN113591301A (zh) * | 2021-07-28 | 2021-11-02 | 广西大学 | 一种城市轨道交通列车运行参数优化算法 |
CN113672503A (zh) * | 2021-08-03 | 2021-11-19 | 中移(杭州)信息技术有限公司 | 测试用例的生成方法、系统、终端设备以及存储介质 |
CN114490339A (zh) * | 2021-12-30 | 2022-05-13 | 天津大学 | 一种基于搜索测试的智能种子策略方法 |
CN114490339B (zh) * | 2021-12-30 | 2024-05-31 | 天津大学 | 一种基于搜索测试的智能种子策略方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060253839A1 (en) * | 2005-03-30 | 2006-11-09 | Alberto Avritzer | Generating performance tests from UML specifications using markov chains |
US7861226B1 (en) * | 2006-03-16 | 2010-12-28 | Avaya Inc. | Constraint solver to code based test data generation for improving software reliability and security |
CN105468521A (zh) * | 2015-11-18 | 2016-04-06 | 北京航空航天大学 | 一种基于子图搜索的指针相关语义错误定位方法 |
CN107590073A (zh) * | 2017-08-30 | 2018-01-16 | 华南理工大学 | 基于路径覆盖软件测试的测试用例自动生成方法 |
CN108595341A (zh) * | 2018-05-11 | 2018-09-28 | 清华大学 | 测试用例自动生成方法及系统 |
CN111582428A (zh) * | 2020-04-01 | 2020-08-25 | 长江大学 | 一种基于灰色预测演化算法的多模态多目标优化方法 |
-
2020
- 2020-11-18 CN CN202011300325.3A patent/CN112286824B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060253839A1 (en) * | 2005-03-30 | 2006-11-09 | Alberto Avritzer | Generating performance tests from UML specifications using markov chains |
US7861226B1 (en) * | 2006-03-16 | 2010-12-28 | Avaya Inc. | Constraint solver to code based test data generation for improving software reliability and security |
CN105468521A (zh) * | 2015-11-18 | 2016-04-06 | 北京航空航天大学 | 一种基于子图搜索的指针相关语义错误定位方法 |
CN107590073A (zh) * | 2017-08-30 | 2018-01-16 | 华南理工大学 | 基于路径覆盖软件测试的测试用例自动生成方法 |
CN108595341A (zh) * | 2018-05-11 | 2018-09-28 | 清华大学 | 测试用例自动生成方法及系统 |
CN111582428A (zh) * | 2020-04-01 | 2020-08-25 | 长江大学 | 一种基于灰色预测演化算法的多模态多目标优化方法 |
Non-Patent Citations (2)
Title |
---|
AYSH ALHROOB等: "The Genetic Algorithm and Binary Search Technique in the Program Path", 《HTTPS://WWW.RESEARCHGATE.NET/PUBLICATION/339587787》 * |
郑明辉等: "测试用例生成算法TCBSA研究", 《计算机工程与应用》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239022A (zh) * | 2021-04-19 | 2021-08-10 | 浙江大学 | 医疗诊断缺失数据补全方法及补全装置、电子设备、介质 |
CN113468044A (zh) * | 2021-05-27 | 2021-10-01 | 长江大学 | 一种基于改进的灰色预测演化算法的测试用例生成方法 |
CN113591301A (zh) * | 2021-07-28 | 2021-11-02 | 广西大学 | 一种城市轨道交通列车运行参数优化算法 |
CN113591301B (zh) * | 2021-07-28 | 2023-12-08 | 广西大学 | 一种城市轨道交通列车运行参数优化算法 |
CN113672503A (zh) * | 2021-08-03 | 2021-11-19 | 中移(杭州)信息技术有限公司 | 测试用例的生成方法、系统、终端设备以及存储介质 |
CN113342700A (zh) * | 2021-08-04 | 2021-09-03 | 腾讯科技(深圳)有限公司 | 一种模型评估方法、电子设备及计算机可读存储介质 |
CN113342700B (zh) * | 2021-08-04 | 2021-11-19 | 腾讯科技(深圳)有限公司 | 一种模型评估方法、电子设备及计算机可读存储介质 |
CN114490339A (zh) * | 2021-12-30 | 2022-05-13 | 天津大学 | 一种基于搜索测试的智能种子策略方法 |
CN114490339B (zh) * | 2021-12-30 | 2024-05-31 | 天津大学 | 一种基于搜索测试的智能种子策略方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112286824B (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112286824B (zh) | 基于二分搜索迭代的测试用例生成方法、系统及电子设备 | |
CN108154198B (zh) | 知识库实体归一方法、系统、终端和计算机可读存储介质 | |
CN113282759A (zh) | 一种基于威胁情报的网络安全知识图谱生成方法 | |
JP2011150541A (ja) | 学習装置、学習方法、及びプログラム | |
CN108648747A (zh) | 语种识别系统 | |
CN110399286B (zh) | 一种基于独立路径的测试数据自动生成方法 | |
CN108491228A (zh) | 一种二进制漏洞代码克隆检测方法及系统 | |
CN115563610B (zh) | 入侵检测模型的训练方法、识别方法和装置 | |
Ferreira et al. | Software engineering meets deep learning: a mapping study | |
CN109582960B (zh) | 基于结构化关联语义嵌入的零示例学习方法 | |
CN113434685A (zh) | 一种资讯分类处理的方法及系统 | |
CN113468044B (zh) | 一种基于改进的灰色预测演化算法的测试用例生成方法 | |
CN115063664A (zh) | 用于工业视觉检测的模型学习方法、训练方法及系统 | |
Richter et al. | Receptive field analysis for optimizing convolutional neural network architectures without training | |
He et al. | Measuring boundedness for protein complex identification in PPI networks | |
CN112749082B (zh) | 一种基于de-th算法的测试用例生成方法及系统 | |
Abay et al. | A path-finding based method for concept discovery in graphs | |
CN112231650A (zh) | 一种数据隐私保护协议的分析方法、装置及电子设备 | |
CN111626373A (zh) | 多尺度加宽残差网络、小目标识别检测网络及其优化方法 | |
Verhoeven | Optimal performance with Random Forests: does feature selection beat tuning | |
US20240177464A1 (en) | Active learning device and active learning method | |
KR101374379B1 (ko) | 동시 발생 빈발 부분 그래프를 이용한 그래프 분류 장치 및 방법 | |
Assiroj et al. | The implementation of memetic algorithm on image: a survey | |
KR101317540B1 (ko) | 최대 가중화 빈발 패턴 마이닝 방법 | |
EP4053759A1 (en) | Machine learning pipeline skeleton instantiation |
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 |