CN114490316B - 一种基于损失函数的单元测试用例自动生成方法 - Google Patents

一种基于损失函数的单元测试用例自动生成方法 Download PDF

Info

Publication number
CN114490316B
CN114490316B CN202111545425.7A CN202111545425A CN114490316B CN 114490316 B CN114490316 B CN 114490316B CN 202111545425 A CN202111545425 A CN 202111545425A CN 114490316 B CN114490316 B CN 114490316B
Authority
CN
China
Prior art keywords
individual
population data
data
population
test case
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
Application number
CN202111545425.7A
Other languages
English (en)
Other versions
CN114490316A (zh
Inventor
王俊峰
傅瑞华
李凡
方智阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN202111545425.7A priority Critical patent/CN114490316B/zh
Publication of CN114490316A publication Critical patent/CN114490316A/zh
Application granted granted Critical
Publication of CN114490316B publication Critical patent/CN114490316B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Quality & Reliability (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computer Hardware Design (AREA)
  • Genetics & Genomics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Physiology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于损失函数的单元测试用例自动生成方法,属于软件测试用例生产技术领域,在遗传算法的执行过程中,根据测试用例种群的路径覆盖情况,动态改变后续种群的分布,以保证整体数据分布的平衡性,并利用分支信息优化自适应交叉变异算子,最终达到自动生成规模尽可能小且高覆盖的有效测试用例集的目的,本方法解决了传统模型中初值依赖、收敛早熟、局部寻优能力滞后等缺陷,保证了生成的测试用例平均覆盖率达到95%,提升了搜索效率及数据有效率。

Description

一种基于损失函数的单元测试用例自动生成方法
技术领域
本发明涉及软件测试用例生产技术领域,确切地说涉及一种基于损失函数的单元测试用例自动生成方法。
背景技术
软件测试是软件质量保证的核心环节,是软件产品生命周期内质量保证不可缺少的有效措施。
软件测试方法可大类分为黑盒测试及白盒测试。黑盒测试注重的是在不清楚内部结构和细节的情况下验证软件功能可用性;白盒测试则是基于程序源码内部逻辑知识,并通过特定的测试覆盖率标准如语句覆盖率、分支覆盖率等,来检测编码过程中存在的潜在错误。
目前而言,完整的软件测试过程最多可占项目开发总成本的40%,而早期及时通过软件测试可大大降低修复软件生命周期中的缺陷的成本。但是在现有技术中,仍有相当数量的软件产品是依靠手工编写测试用例来进行软件测试过程的,这种人工编写测试用例的方式需保证测试人员有较丰富的行业经验以及较高的技术水平,并且即便是在有高质量测试人员情况下,这种基于人工编写的方式依旧会花费较高的成本(包括时间成本和人力成本),也不能完全保证所编写的测试用例的软件质量以及对被测试软件潜在问题的覆盖率,因此研究测试用例自动化生成技术成为了软件开发行业发展的必然趋势。
测试用例的自动生成和构建可以视为一个优化问题,即如何在生成最小数量的测试用例集合的标准下、尽可能覆盖更多的目标,并保证测试数据分布的平衡性,使得测试用例高有效。现有技术中目前已经有较多成熟的软件工具如Log iscope、Load Runner、WebStress等,可以用于软件测试中测试用例的自动生成,常见的测试用例自动生成算法可分为随机测试方法、符号执行方法、UML模型检测法、基于元启发式算法的测试用例自动生成方法等。其中,元启发式测试用例自动生成算法是根据测试充分性标准自动生成最优解测试用例集,包括粒子群优化算法、遗传算法、模拟退火算法、蚁群算法等,其中,遗传算法的应用最为广泛,相比于其他算法,元启发式算法可适用于更大规模及更高复杂度的空间,并能更敏捷地找到最优解或近似最优解,但是由于算法受限于适应度函数且依赖于初始种群,容易产生以下问题:算法时间复杂度过高、种群过早收敛、非全局最优解、局部最优导致数据冗余。
即大多数现有的软件工具和测试用例自动生成算法仍然无法解决如何自动生成高质量测试、如何使得测试用例全面覆盖等自动化测试痛点问题,所以要实现真正意义上的自动生成测试用例,仍需投入大量研究及技术支持。
发明内容
本发明目的在于针对上述问题,提供一种通过改进遗传算法执行过程提升单元测试用例自动生成的有效率、最大程度构建出高覆盖低数量高有效的最优解测试数据集的基于损失函数的白盒单元测试用例生成方法。
本发明提供的这一种基于损失函数的单元测试用例自动生成方法,包括以下步骤:
步骤1,通过静态预分析的方式对被测程序片段进行分析,收集被测程序片段的关键信息收集,所述关键信息包括被测程序的分支节点集合、参数集合(即给定的路径集合)、以及被测程序的输入与范围,即,首先对被测试的程序片段进行对应的分析和特征提取,得到其关键的分支、路径等信息,以便后续能够针对性的给出测试用数据、以及供模型对所有备选的测试用数据进行评估,以便自动选出并生成最合适的测试用例数据集。
步骤2,根据所述步骤1中收集到的被测程序片段的关键信息,进行路径的优化,并对被测程序片段进行统一插桩处理,优化路径去除重复,对应解决了过去涵盖低数量高的问题,统一插桩处理后相当于打上路标,为后续的数据提供“指引”;
进一步的,在所述步骤2中,所述路径的优化具体的,是根据所述步骤1中收集到的分支节点集合T={t1,t2,…,tn}、以及路径信息集合P={p1,p2,…,pn},计算使pi∈T,其中,pi代表路径信息集合P的子集中没有重复、且所有子集的并集涵盖被测程序片段的全部分支节点集合T,i即路径信息集合中每一个个体(每一条路径)的数据表示。若路径信息集合P中存在pm∈pn、即存在一个子集pn被另一个子集pm完全涵盖时,则仅保留路径最长的子集pm,即,在绝对相同以外也要去除覆盖式的重复,进一步优化结果中的数据量同时不影响测试的覆盖率。
步骤3,初始化种群数据算法的实验参数,根据目标函数、通过适应度评估函数对种群数据算法随机生成的种群数据初值进行评估,完成对种群数据初值的随机生成的优化,即对应要测试的软件特点设置种群数据算法的参数以便生成更贴近需求的数据种群,节省后续调优的时间优化调优效果,然后对应步骤2中的每一条进行路径生成对应的种群数据。
更进一步的,所述适应度评估函数为
Figure BDA0003415693150000031
且i≤N;式中,N代表种群数据待选择的个体总数,ui为路径集合中个体路径pi所包含的测试数据的数目,umax为在个体路径pi下达到理想平衡状态的种群数据个数;其中,越易被覆盖的路径会有更多的测试数据集、对应的个体适应度值越低,在择优选择的过程中表现为更劣势的个体,就会被舍弃,最终通过循环比较等方式,就能留下预定数量的数据个体形成最符合测试要求的数据集,即我们的高效测试用例。
进一步,优选地,所述步骤3中,算法的实验参数初始化设置为:种群规模保持为50;最大迭代次数设上限500;自适应遗传操作中设置单点交叉概率上限0.9;自适应遗传操作中设置变异概率上限0.1,这是根据本发明的设计特点,根据计算得到的较优的初始值设置条件,在足以满足结果需求的前提下,也能够极大程度降低计算量、去除无效计算过程。
步骤4,将步骤3中生成的种群数据输入到损失函数中,通过迭代选择过程判断每个种群数据的个体累计是否符合其对对应路径的分支节点的覆盖预期,完成对每个种群数据的个体择优,通过损失函数和预设预期来对应调整种群数据中的个体贴合度,以便后续能够形成更为高效的测试集。
步骤5,根据损失函数验证方式,通过累计各个路径、选取数目相对较多和较少的分支种群集合进行交叉变异,形成新一代种群数据的有效输入,这里相对较多和较少是根据先验和数目差异进行设定的阈值标准,通过交叉融合构成新的集合基础、通过变异覆盖可能的周边数据类型,保证覆盖率的同时也很好的限定了数据数量,真正实现“少”而精的需求。
进一步的,所述步骤5中,损失函数进行的验证方式,具体的:
首先,判断是否满足终止条件,若否则继续后续流程;
接着,根据种群数据在每个分支上的累积情况,对种群数据中的个体进行选择和舍弃;
再接着,采用自适应算子对选择的个体进行交叉、变异处理;
最后,输出新一代的种群数据。
更进一步地,选择和舍弃的过程中是采用轮盘赌个体选择策略rf(i)=f(i)/∑f(i)式中,∑f(i)表示由上述适应度评估函数计算出的当前个体的相对适应度的总和,个体的相对适应度rf(i)越高表示为更优良的个体,将保留至分支损失函数执行阶段,更为具体的,这里的个体是指种群数据中经过步骤4择优后的待选择的数据个体。
所述采用自适应算子对选择的个体进行交叉、变异处理,更为具体的,所述交叉处理算子
Figure BDA0003415693150000041
变异处理算子
Figure BDA0003415693150000051
式中,fmax代表适应度评估函数计算出的相对适应度最大的个体,fi代表待变异个体的相对适应度,favg代表种群数据中所有个体的平均相对适应度,k1、k2、k3、k4为随机常数。
并且,更为优选地,所述交叉处理算子Pc的取值范围一般为[0.25,0.99),变异处理算子Pm的取值范围一般为[0.001,0.1),所述k1和k2、k3和k4是通过随机函数分别从[0.25,0.99)和[0.001,0.1)的区间内随机选出的常数值。
步骤6,根据终止条件判断是否继续进行种群数据的迭代,若不满足终止条件,则循环所述步骤5及步骤6;否则,终止程序并输出个体结果数据为测试用例。
与现有技术相比,本发明的有益效果在于:本方法通过判断算法过程中平衡性变化,改进种群适应度及精英策略评估方式,并利用分支信息优化自适应交叉变异算子,自动完成数据收敛过程,最终生成最小高覆盖有效测试用例集。
方法中采用了损失函数的思想,在最优种群集合评估模块中,为确保数据集至少覆盖一次决策点的每个条件的所有可能结果(即取真、取假分支),通过分支损失函数实时调整后序种群分布,其中分支损失函数在流程中作为用于找到最优解集合的目的函数,控制选择及交叉变异方向,从而增强测试例数据之间的公平性、友好性。
在本方法中,损失函数的实现一方面用于步骤4的迭代选择过程中判断个体累计是否符合分支覆盖预期,由于前序步骤中进行了正则切割及插桩等过程,程序能够获取存储的分支数据结构信息,包括分支id、分支所含变量范围及关系、分支概率阈值等,当进入某分支的个体数占比超过设定的该分支概率阈值则选择舍弃,重新随机选取其他分支进行参考值范围内的数据随机生成以补位,再结合精英个体选择策略下的剩余种群形成新一代种群数据的有效输入;另一方面,损失函数提供了个体交叉变异的趋势判断,由于适应度函数的设计易使测试数据后续汇集在已生成数据的路径上(即概率阈值更大),考虑在经过选择阶段后,通过累计各路径个体,选取数目相对较多和较少的分支种群集合进行交叉变异。
与其他测试用例自动生成算法相比,本发明中提出的方法能够有效收敛种群,增强了算法全局寻优能力,并较好解决初值依赖、收敛早熟、局部寻优能力滞后等传统缺陷,尽可能地提升搜索效率及数据有效率。并且,本发明中基于损失函数的单元测试用例自动生成算法,能够有效地实现白盒类单元测试用例的自动生成,最终输出的测试用例数据经过验证达到高有效。与基于遗传算法的测试用例生成方法相比,更便于测试用例的有效自动生成。
附图说明
本发明的前述和下文具体描述在结合以下附图阅读时变得更清楚,其中:
图1是本发明测试用例生成模型的示意图;
图2是本发明中损失函数验证流程的示意图;
图3是本发明中路径覆盖率横向比较结果示意图;
图4是本发明种群数据收敛趋势的示意图;
图5是现有技术中其他算法的种群收敛趋势的示意图;
图6是本发明实施例中DOT类型文件数据字段结果的示意图。
具体实施方式
下面通过具体的实施例来进一步说明实现本发明目的技术方案,需要说明的是,本发明要求保护的技术方案包括但不限于以下实施例。
实施例1
作为本发明一种具体的实施方案,如图1,本实施例公开了一种基于损失函数的单元测试用例自动生成方法,包括以下步骤:
步骤1,通过静态预分析的方式对被测程序片段进行分析,收集被测程序片段的关键信息收集,所述关键信息包括被测程序的分支节点集合、参数集合(即给定的路径集合)、以及被测程序的输入与范围,即,首先对被测试的程序片段进行对应的分析和特征提取,得到其关键的分支、路径等信息,以便后续能够针对性的给出测试用数据、以及供模型对所有备选的测试用数据进行评估,以便自动选出并生成最合适的测试用例数据集。
步骤2,根据所述步骤1中收集到的被测程序片段的关键信息,进行路径的优化,并对被测程序片段进行统一插桩处理,优化路径去除重复,对应解决了过去涵盖低数量高的问题,统一插桩处理后相当于打上路标,为后续的数据提供“指引”;
步骤3,初始化种群数据算法的实验参数,根据目标类/函数、通过适应度评估函数对种群数据算法随机生成的种群数据初值进行评估,完成对种群数据初值的随机生成的优化,即对应要测试的软件特点设置种群数据算法的参数以便生成更贴近需求的数据种群,节省后续调优的时间优化调优效果,然后对应步骤2中的每一条进行路径生成对应的种群数据。
步骤4,将步骤3中生成的种群数据输入到损失函数中,通过迭代选择过程判断每个种群数据的个体累计是否符合其对对应路径的分支节点的覆盖预期,完成对每个种群数据的个体择优,通过损失函数和预设预期来对应调整种群数据中的个体贴合度,以便后续能够形成更为高效的测试集。
步骤5,根据损失函数验证方式,通过累计各个路径、选取数目相对较多和较少的分支种群集合进行交叉变异,形成新一代种群数据的有效输入,这里相对较多和较少是根据先验和数目差异进行设定的阈值标准,通过交叉融合构成新的集合基础、通过变异覆盖可能的周边数据类型,保证覆盖率的同时也很好的限定了数据数量,真正实现“少”而精的需求。
步骤6,根据终止条件判断是否继续进行种群数据的迭代,若不满足终止条件,则循环所述步骤5及步骤6;否则,终止程序并输出个体结果数据为测试用例。
本方法通过判断算法过程中平衡性变化,改进种群适应度及精英策略评估方式,并利用分支信息优化自适应交叉变异算子,自动完成数据收敛过程,最终生成最小高覆盖有效测试用例集。
方法中采用了损失函数的思想,在最优种群集合评估模块中,为确保数据集至少覆盖一次决策点的每个条件的所有可能结果(即取真、取假分支),通过分支损失函数实时调整后序种群分布,其中分支损失函数在流程中作为用于找到最优解集合的目的函数,控制选择及交叉变异方向,从而增强测试例数据之间的公平性、友好性,流程如图2所示。
并且,在本方法中,损失函数的实现一方面用于步骤4的迭代选择过程中判断个体累计是否符合分支覆盖预期,由于前序步骤中进行了正则切割及插桩等过程,程序能够获取存储的分支数据结构信息,包括分支id、分支所含变量范围及关系、分支概率阈值等,当进入某分支的个体数占比超过设定的该分支概率阈值则选择舍弃,重新随机选取其他分支进行参考值范围内的数据随机生成以补位,再结合精英个体选择策略下的剩余种群形成新一代种群数据的有效输入;另一方面,损失函数提供了个体交叉变异如图4所示的趋势判断,相较于图5所示的现有技术中其他算法的种群收敛趋势,本方法损失函数对种群收敛效果明显更为优异,由于适应度函数的设计易使测试数据后续汇集在已生成数据的路径上(即概率阈值更大),考虑在经过选择阶段后,通过累计各路径个体,选取数目相对较多和较少的分支种群集合进行交叉变异
总而言之,相较于如图5中所展示的现有技术的分布情况,本方法通过判断算法过程中平衡性变化,改进种群适应度及精英策略评估方式,并利用分支信息优化自适应交叉变异算子,自动完成数据收敛过程,最终生成最小高覆盖有效测试用例集,能够有效收敛种群,增强了算法全局寻优能力,并较好解决初值依赖、收敛早熟、局部寻优能力滞后等传统缺陷,尽可能地提升搜索效率及数据有效率。并且,基于损失函数的单元测试用例自动生成算法,能够有效地实现白盒类单元测试用例的自动生成,如图3,最终输出的测试用例数据经过验证达到高有效,更便于测试用例的有效自动生成。
实施例2
作为本发明一种更为优选地实施方案,本实施例公开了一种基于损失函数的单元测试用例自动生成方法,包括以下步骤:
步骤1,通过静态预分析的方式对被测程序片段进行分析,收集被测程序片段的关键信息收集,所述关键信息包括被测程序的分支节点集合、参数集合(即给定的路径集合)、以及被测程序的输入与范围,即,首先对被测试的程序片段进行对应的分析和特征提取,得到其关键的分支、路径等信息,以便后续能够针对性的给出测试用数据、以及供模型对所有备选的测试用数据进行评估,以便自动选出并生成最合适的测试用例数据集。以DOT类型文件数据为例,字段结果内容如图6所示。
步骤2,根据所述步骤1中收集到的被测程序片段的关键信息,进行路径的优化,根据所述步骤1中收集到的分支节点集合T={t1,t2,…,tn}、以及路径信息集合P={p1,p2,…,pn},计算使pi∈T,其中pi代表路径信息集合P的子集中没有重复、且所有子集的并集涵盖被测程序片段的全部分支节点集合T,i即路径信息集合中每一个个体(每一条路径)的数据表示。若路径信息集合P中存在pm∈pn、即存在一个子集pn被另一个子集pm完全涵盖时,则仅保留路径最长的子集pm,即,在绝对相同以外也要去除覆盖式的重复,进一步优化结果中的数据量同时不影响测试的覆盖率。
优化后,对被测程序片段进行统一插桩处理,优化路径去除重复,对应解决了过去涵盖低数量高的问题,统一插桩处理后相当于打上路标,为后续的数据提供“指引”。
步骤3,初始化种群数据算法的实验参数,实验参数初始化设置为:种群规模保持为50;最大迭代次数设上限500;自适应遗传操作中设置单点交叉概率上限0.9;自适应遗传操作中设置变异概率上限0.1,这是根据本发明的设计特点,根据计算得到的较优的初始值设置条件,在足以满足结果需求的前提下,也能够极大程度降低计算量、去除无效计算过程。
然后,根据目标类/函数、通过适应度评估函数对种群数据算法随机生成的种群数据初值进行评估,完成对种群数据初值的随机生成的优化,适应度评估函数为
Figure BDA0003415693150000101
且i≤N;式中,N代表种群数据待选择的个体总数,ui为路径集合中个体路径pi所含有的测试数据的数目,umax为在个体路径pi下达到理想平衡状态的种群数据个数;其中,越易被覆盖的路径会有更多的测试数据集、对应的个体适应度值越低,在择优选择的过程中表现为更劣势的个体,就会被舍弃,最终通过循环比较等方式,就能留下预定数量的数据个体形成最符合测试要求的数据集,即我们的高效测试用例。
即,对应要测试的软件特点设置种群数据算法的参数以便生成更贴近需求的数据种群,节省后续调优的时间优化调优效果,然后对应步骤2中的每一条进行路径生成对应的种群数据。
步骤4,将步骤3中生成的种群数据输入到损失函数中,通过迭代选择过程判断每个种群数据的个体累计是否符合其对对应路径的分支节点的覆盖预期,完成对每个种群数据的个体择优,通过损失函数和预设预期来对应调整种群数据中的个体贴合度,以便后续能够形成更为高效的测试集。
步骤5,根据损失函数验证方式,通过累计各个路径、选取数目相对较多和较少的分支种群集合进行交叉变异,形成新一代种群数据的有效输入,这里相对较多和较少是根据先验和数目差异进行设定的阈值标准,通过交叉融合构成新的集合基础、通过变异覆盖可能的周边数据类型,保证覆盖率的同时也很好的限定了数据数量,真正实现“少”而精的需求。
其中,所述损失函数进行的验证方式,如图2,具体的:
首先,判断是否满足终止条件,若否则继续后续流程。
接着,根据种群数据在每个分支上的累积情况,对种群数据中的个体进行选择和舍弃,选择和舍弃的过程中是采用轮盘赌个体选择策略rf(i)=f(i)/∑f(i)式中,∑f(i)表示由适应度评估函数计算出的当前个体的相对适应度的总和,个体的相对适应度rf(i)越高表示为更优良的个体,将保留至分支损失函数执行阶段。
再接着,采用自适应算子对选择的个体进行交叉、变异处理:所述交叉处理算子
Figure BDA0003415693150000111
交叉处理算子Pc的取值范围为[0.25,0.99);变异处理算子
Figure BDA0003415693150000112
变异处理算子Pm的取值范围为[0.001,0.1);式中,fmax代表适应度评估函数计算出的相对适应度最大的个体,fi代表待变异个体的相对适应度,favg代表种群数据中所有个体的平均相对适应度,所述k1和k2、k3和k4是通过随机函数分别从[0.25,0.99)和[0.001,0.1)的区间内随机选出的常数值。最后,输出新一代的种群数据。
步骤6,根据终止条件判断是否继续进行种群数据的迭代,若不满足终止条件,则循环所述步骤5及步骤6;否则,终止程序并输出个体结果数据为测试用例。

Claims (4)

1.一种基于损失函数的单元测试用例自动生成方法,其特征在于,包括以下步骤:
步骤1,通过静态预分析的方式对被测程序片段进行分析,收集被测程序片段的关键信息收集,所述关键信息包括被测程序的分支节点集合、给定的路径集合、以及被测程序的输入与范围;
步骤2,根据所述步骤1中收集到的被测程序片段的关键信息,进行路径的优化,并对被测程序片段进行统一插桩处理;
步骤3,初始化种群数据算法的实验参数,根据目标函数、通过适应度评估函数对种群数据算法随机生成的种群数据初值进行评估,完成对种群数据初值的随机生成的优化,然后对应步骤2中的每一条路径生成对应的种群数据;
步骤4,将步骤3中生成的种群数据输入到损失函数中,通过迭代选择过程判断每个种群数据的个体累计是否符合其对对应路径的分支节点的覆盖预期,完成对每个种群数据的个体择优;
步骤5,根据损失函数验证方式,通过累计各个路径、选取数目相对较多和较少的分支种群集合进行交叉变异,形成新一代种群数据的有效输入,这里相对较多和较少是根据先验和数目差异进行设定的阈值标准;
其中,所述步骤5中,损失函数进行的验证方式,具体的:
首先,判断是否满足终止条件,若否则继续后续流程;
接着,根据种群数据在每个分支上的累积情况,对种群数据中的个体进行选择和舍弃;
再接着,采用自适应算子对选择的个体进行交叉、变异处理;
最后,输出新一代的种群数据;
选择和舍弃的过程中是采用轮盘赌个体选择策略rf(i)=f(i)/∑f(i),式中,∑f(i)表示由适应度评估函数计算出的当前个体的相对适应度的总和,个体的相对适应度rf(i)越高表示为更优良的个体,将保留至分支损失函数执行阶段;
所述采用自适应算子对选择的个体进行交叉、变异处理,更为具体的,交叉处理算子
Figure FDA0004086117400000021
变异处理算子
Figure FDA0004086117400000022
式中,fmax代表适应度评估函数计算出的相对适应度最大的个体,fi代表待变异个体的相对适应度,favg代表种群数据中所有个体的平均相对适应度,k1、k2、k3、k4为随机常数;
所述交叉处理算子Pc的取值范围为[0.25,0.99),变异处理算子Pm的取值范围为[0.001,0.1),所述k1和k2、k3和k4是通过随机函数分别从[0.25,0.99)和[0.001,0.1)的区间内随机选出的常数值;
步骤6,根据终止条件判断是否继续进行种群数据的迭代,若不满足终止条件,则循环所述步骤5及步骤6;否则,终止程序并输出个体结果数据为测试用例。
2.如权利要求1所述的一种基于损失函数的单元测试用例自动生成方法,其特征在于:在所述步骤2中,所述路径的优化,具体的,是根据所述步骤1中收集到的分支节点集合T={t1,t2,…,tn}、以及路径信息集合P={p1,p2,…,pn},计算使pi∈T,其中pi代表路径信息集合P的子集中没有重复、且所有子集的并集涵盖被测程序片段的全部分支节点集合T,若存在pm∈pn、即存在一个子集被另一个子集完全涵盖时,则仅保留路径最长的子集pm
3.如权利要求1所述的一种基于损失函数的单元测试用例自动生成方法,其特征在于:所述步骤3中的适应度评估函数为
Figure FDA0004086117400000023
且i≤N;式中,N代表种群数据待选择的个体总数,ui为路径集合中个体路径pi所包含的测试数据的数目,umax为在个体路径pi下达到理想平衡状态的种群数据个数。
4.如权利要求1或3所述的一种基于损失函数的单元测试用例自动生成方法,其特征在于:所述步骤3中,算法的实验参数初始化设置为:种群规模保持为50;最大迭代次数设上限500;自适应遗传操作中设置单点交叉概率上限0.9;自适应遗传操作中设置变异概率上限0.1。
CN202111545425.7A 2021-12-16 2021-12-16 一种基于损失函数的单元测试用例自动生成方法 Active CN114490316B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111545425.7A CN114490316B (zh) 2021-12-16 2021-12-16 一种基于损失函数的单元测试用例自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111545425.7A CN114490316B (zh) 2021-12-16 2021-12-16 一种基于损失函数的单元测试用例自动生成方法

Publications (2)

Publication Number Publication Date
CN114490316A CN114490316A (zh) 2022-05-13
CN114490316B true CN114490316B (zh) 2023-04-18

Family

ID=81494481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111545425.7A Active CN114490316B (zh) 2021-12-16 2021-12-16 一种基于损失函数的单元测试用例自动生成方法

Country Status (1)

Country Link
CN (1) CN114490316B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115248781B (zh) * 2022-09-22 2022-12-27 西南科技大学 一种组合测试用例生成方法、装置、设备及可读存储介质
CN117493174A (zh) * 2023-10-23 2024-02-02 中移互联网有限公司 测试用例确定、云盘回归测试方法及装置
CN117520191B (zh) * 2023-11-27 2024-06-21 浙江大学 一种基于程序路径的测试完备性检查方法、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445821A (zh) * 2016-09-23 2017-02-22 郑州云海信息技术有限公司 一种基于遗传算法实现测试用例自动生成的方法
CN107590073A (zh) * 2017-08-30 2018-01-16 华南理工大学 基于路径覆盖软件测试的测试用例自动生成方法
CN111176990A (zh) * 2019-12-23 2020-05-19 深圳壹账通智能科技有限公司 基于数据决策的测试数据生成方法、装置、计算机设备
CN113268419A (zh) * 2021-05-19 2021-08-17 北京金山云网络技术有限公司 测试用例优化信息的生成方法、装置、设备和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010018415A1 (en) * 2008-08-15 2010-02-18 Verum Holding B.V. A method and system for testing complex machine control software
CN108509335B (zh) * 2018-01-31 2021-03-19 浙江理工大学 基于遗传算法优化的软件测试数据生成方法
CN112069061B (zh) * 2020-08-19 2021-08-20 北京科技大学 深度学习梯度指导变异的软件安全漏洞检测方法及***
CN112346997B (zh) * 2020-12-04 2022-05-31 福州理工学院 一种测试用例自动生成方法及终端
CN113590477B (zh) * 2021-07-16 2023-06-09 四川大学 一种移动应用功能测试用例生成方法
CN113468071B (zh) * 2021-07-23 2023-10-03 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 模糊测试用例生成方法、***、计算机设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445821A (zh) * 2016-09-23 2017-02-22 郑州云海信息技术有限公司 一种基于遗传算法实现测试用例自动生成的方法
CN107590073A (zh) * 2017-08-30 2018-01-16 华南理工大学 基于路径覆盖软件测试的测试用例自动生成方法
CN111176990A (zh) * 2019-12-23 2020-05-19 深圳壹账通智能科技有限公司 基于数据决策的测试数据生成方法、装置、计算机设备
CN113268419A (zh) * 2021-05-19 2021-08-17 北京金山云网络技术有限公司 测试用例优化信息的生成方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN114490316A (zh) 2022-05-13

Similar Documents

Publication Publication Date Title
CN114490316B (zh) 一种基于损失函数的单元测试用例自动生成方法
CN107506865B (zh) 一种基于lssvm优化的负荷预测方法及***
CN110135167B (zh) 一种随机森林的边缘计算终端安全等级评估方法
TW201734837A (zh) 一種多重抽樣模型訓練方法及裝置
CN103559129B (zh) 基于遗传算法的统计回归测试数据生成方法
CN109388565B (zh) 基于生成式对抗网络的软件***性能优化方法
CN110083531B (zh) 改进个体信息共享的多目标路径覆盖测试方法及实现***
CN105808426A (zh) 一种用于弱变异测试的路径覆盖测试数据生成方法
CN108052968A (zh) 一种qsfla-svm的感知入侵检测方法
CN111382875A (zh) 联邦模型参数确定方法、装置、设备及存储介质
CN107360032A (zh) 一种网络流识别方法及电子设备
CN113486337B (zh) 一种基于粒子群算法的网络安全态势要素识别***和方法
CN106953768A (zh) 一种网络可靠性模型及混合智能优化方法
CN113362913A (zh) 一种基于随机森林回归的汽油辛烷值损失预测及优化方法
CN115272776B (zh) 基于双路卷积与双注意的高光谱图像分类方法及存储介质
CN106919504B (zh) 一种基于ga算法的测试数据进化生成方法
CN111507824A (zh) 风控模型入模变量最小熵分箱方法
CN105372989B (zh) 一种调度控制***不完整数据参数的估计方法和装置
CN106156107A (zh) 一种新闻热点的发现方法
KR101827124B1 (ko) 운전자의 주행 패턴 인식 시스템 및 방법
CN113986636B (zh) 一种基于硬盘自适应报告数据的数据中心硬盘故障预测方法
CN112016774A (zh) 一种基于数据增强技术的配网运行状态辨识方法及***
CN105654498A (zh) 基于动态局部搜索和免疫克隆自动聚类的图像分割方法
CN113962158A (zh) 基于改进决策树的压路机施工工艺知识库构建方法及***
CN111898666A (zh) 一种随机森林算法结合模群种群的数据变量选择方法

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