CN112732583B - 一种基于聚类和多种群遗传算法的软件测试数据生成方法 - Google Patents

一种基于聚类和多种群遗传算法的软件测试数据生成方法 Download PDF

Info

Publication number
CN112732583B
CN112732583B CN202110051670.6A CN202110051670A CN112732583B CN 112732583 B CN112732583 B CN 112732583B CN 202110051670 A CN202110051670 A CN 202110051670A CN 112732583 B CN112732583 B CN 112732583B
Authority
CN
China
Prior art keywords
variants
test data
variant
population
cluster
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
CN202110051670.6A
Other languages
English (en)
Other versions
CN112732583A (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.)
Beijing Yunqi Infinite Technology Co ltd
Original Assignee
Xuzhou University of Technology
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 Xuzhou University of Technology filed Critical Xuzhou University of Technology
Publication of CN112732583A publication Critical patent/CN112732583A/zh
Application granted granted Critical
Publication of CN112732583B publication Critical patent/CN112732583B/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
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Genetics & Genomics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physiology (AREA)
  • Computer Hardware Design (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Quality & Reliability (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公布了一种基于聚类和多种群遗传算法的软件测试数据生成方法,目的是将模糊聚类方法和遗传算法应用于软件测试中,提高软件缺陷检测的效率。首先,在弱变异测试准则下,基于统计分析计方法计算变异体之间的相似度和变异体的杀死难度,进而排序变异体;接着基于排序好的变异体序列,选择难杀死的变异体为聚类中心,模糊聚类变异体。然后,针对每个簇,建立基于分支覆盖约束的测试数据生成数学模型;最后,对于多个变异体簇,基于强变异测试准则,采用多种群遗传算法生成测试数据,其中对于每个簇中变异体,优先生成杀死聚类中心的变异体,聚类中心动态调整。

Description

一种基于聚类和多种群遗传算法的软件测试数据生成方法
技术领域
本发明涉及计算机软件测试领域,具体是一种基于聚类和多种群遗传算法的软件测试数据生成方法。
背景技术
软件质量评价是软件工程领域一个重要研究内容,软件的正确性和可靠性,需要通过软件测试进行评估。变异测试是由Hamlet和DeMillo等提出的一种面向缺陷的测试技术,它不仅可以根据程序或语句的特征,模拟真实软件中的各种类型的缺陷,也可以基于程序的复杂情况,针对性的选择缺陷发生位置和注入缺陷的数目。因此,对于软件测试来说,变异测试是一种方便、灵活、个性化的技术。与传统的结构化测试相比,变异测试具备的充分性测试准则,使其具有更强的缺陷检测能力。因此,上述变研究的结果,为本方法研究奠定了坚实的基础。
为了进行变异测试,首先,通过使用变异算子,对程序的某一语句做合乎语法的微小变动,以产生一个新的程序,称该程序为一个变异体。生成缺陷的规则称为变异算子。根据变异测试可达性、必要性和充分性满足的条件不同,变异测试分为强变异和弱变异测试两种。在强变异测试准则下,判断一个变异体能否被杀死,需要满足如下3个条件:(1)可达性,测试数据能够执行到变异体中的变异语句;(2)必要性,测试数据执行变异语句之后,产生与原程序不同的状态;(3)充分性,上述不同的状态,能够导致原程序和变异体的输出不同。在弱变异测试准则下,只需满足可达性和必要性条件。
一个程序往往生成为数众多的变异体,为了杀死这些变异体,也需要大量的测试数据;而且,为了生成有效的测试数据集,最大限度地杀死变异体,必须反复执行原程序和变异体,这增加了变异测试的成本,严重阻碍了其在软件工程中的广泛应用,因此,需要研究合适的方法,提高变异测试的效率。
人工智能技术近年来在软件测试中得到广泛的应用,并取得了丰硕的研究成果。本方法借鉴其中的机器学习和进化算法这两种技术,解决众多变异体的测试数据生成的问题。
聚类方法是在无监督情况下,对数据进行分类。如果类与类之间有重叠数据,采用模糊聚类更有效,也更符合现实情况。基于模糊聚类可以将相似度高的变异体分到同一簇中,减少生成测试数据的代价。此外,进化算法受自然界生物进化机制启发而来,具有自组织、自适应、自学习、全局搜索的特性,能够有效地处理传统优化算法难以解决的复杂问题。若将变异测试数据生成问题转化为进化优化问题,那么,可以借助进化算法,提高变异测试数据生成的效率。由此可见,将聚类方法和进化算法融入变异测试,可以丰富变异测试理论和方法,增强变异测试的性能。
遗传算法是一种受自然界生物进化和遗传变异机制启发产生的全局概率搜索方法,该算法特点是,不要求被优化的目标函数是连续的和可微的,且能在允许的时间内,找到复杂优化问题的满意解,因此,该方法比较适用于变异测试数据生成。单种群遗传算法的特点是对单个种群的进化个体实施遗传操作,比如编码、选择、交叉、变异和解码。多种群遗传算法是一种高性能扩展版本的遗传算法,它首先将一个种群划分为几个孤立的子种群,每个子种群可以完成相同的任务,也可以完成不同的子任务。一般情况,在子种群中,个体实施遗传操作与单种群遗传算法相同,在子种群进化过程中,各子种群中的个体具有潜在的并行性,个体也被允许从一个子种群迁移到另一个子种群。因此,多种群遗传算法对于处理复杂的优化问题,具有更强的处理能力和更高的效率。与单种群遗传算法相比,多种群遗传算法更接近于自然界遗传进化的过程。
发明内容
为了解决上述现有技术中变异测试效率低下、测试数据质量低的问题,本发明提供了一种基于聚类和多种群遗传算法的软件测试数据生成方法,深入挖掘变异体形成机理和它们之间内在关联,借鉴“分而治之”思想,基于弱变异测试准则,采用模糊聚类方法,“分”变异体;采用多种群遗传算法,基于强变异测试准则,以并行方式“治”变异体,期望以低测试代价,高效生成高质量测试数据。该方法不仅使变异测试更加智能,而且有利于变异测试在产业界的广泛应用。
本方法采用的技术方案:一种基于聚类和多种群遗传算法的软件测试数据生成方法,其特征在于:该方法包括以下步骤:
S1.1:确定变异体杀死难度;
S1.2:确定变异体之间的相似度;
S2:聚类变异体;
S3:构建测试数据生成数学模型;
S4:基于多种群遗传算法生成测试数据。
优选的,步骤S1.1中,确定变异体杀死难度的方法为:
设某一测试程序为G,程序的输入为X,s为G中某一原语句,对其实施变异之后,得到变异语句s';条件语句“if s!=s'”,和它的真分支,基于弱变异测试准则称为变异分支,它对应的变异体记为Mi,其中“!=”为不等于符号;一个变异体对应一个变异分支;按照同样的方法,可以得到所有变异体的集合,记为M={M1,M2,…,Mn},n为变异体的个数;将这些变异分支插入G中对应原语句前面,形成的新被测程序,记为G';X运行G',如果Mi对应的变异分支被覆盖,那么基于弱变异准则Mi被杀死;
为了反映X杀死变异体Mi情况,定义一个随机变量μi(X),
Figure GDA0003446223720000031
为了计算μi(X),采用数理统计的方法;首先,需要得到一个测试数据集,为此,在程序G输入域内随机生成R个样本,记为X1,X2,...,XR;将Xk,k=1,2,…,R执行程序,考察在弱变异测试准则下它是否能杀死Mi,然后计算μi(Xk)的值;因此,Mi的杀死的难度Dif(Mi),可以表示为:
Figure GDA0003446223720000032
所有变异体杀死难度,记为Dif(M1),Dif(M2),...,Dif(Mn),将这些变异体基于杀死难度进行降序排序,排序之后对应的变异体序列,记为S,其中,S的第一个元素为最难杀死的变异体,最后一个元素为最容易杀死的变异体。
优选的,步骤S1.2中确定变异体之间的相似度的方法为:
假设变异体Mi,Mj,i,j=1,2,...,n,i≠j是两个不同的变异体;定义两个随机变量μi(Xk)和μj(Xk),它们分别反映Mi,Mj被杀死的可能性;那么μj(Xk)=1的概率表示为:
Figure GDA0003446223720000041
Mi和Mj之间的相似度,记为αi,j,由上式可以表示为:
Figure GDA0003446223720000042
由上式可知,αi,j∈[0,1]。
优选的,步骤S2中聚类变异体的方法为:
对于所有变异体M1,M2,…,Mn之间的相似度,建立变异体了相似矩阵Λ,记为:
Figure GDA0003446223720000043
设第i簇为Ci,开始时
Figure GDA0003446223720000044
设阈值为T∈(0,1);
聚类变异体步骤如下,
A1:变量i=1,
Figure GDA0003446223720000045
A2:从S中选出首元素作为聚类中心
Figure GDA0003446223720000046
更新簇为
Figure GDA0003446223720000047
A3:将
Figure GDA0003446223720000048
分别从S和M中删除;
A4:考察Λ中
Figure GDA0003446223720000049
对应的行,
Figure GDA00034462237200000410
与Mj,Mj∈M,j=1,2,...,n,
Figure GDA00034462237200000411
的αi,j值,如果αi,j≥T,可以把Mj放入Ci,由此得到,以
Figure GDA00034462237200000412
为中心的簇
Figure GDA00034462237200000413
其中|ci|为簇中元素的个数,
Figure GDA00034462237200000414
为第i个簇中第j个元素;
A5:将
Figure GDA00034462237200000415
从S中删除;
A6:i=i+1;
A7:判断S中是否还有变异体,如果还有变异体,转A2:;
A8:输出所有的簇,记为C1,C2,…Cm,其中
Figure GDA0003446223720000051
为每个簇的聚类中心,m为簇的个数。
优选的,步骤S3中构建测试数据生成数学模型的方法为:
对于
Figure GDA0003446223720000052
设目标函数为
Figure GDA0003446223720000053
其中X为决策变量,即为程序的输入;当决X能杀死
Figure GDA0003446223720000054
否则
Figure GDA0003446223720000055
因此,当且仅当
Figure GDA0003446223720000056
取最小值0时,
Figure GDA0003446223720000057
被X杀死;通过这种方式,杀死
Figure GDA0003446223720000058
的问题转化为求
Figure GDA0003446223720000059
最小值问题,表示为:
Figure GDA00034462237200000510
然而,由上式可知
Figure GDA00034462237200000511
的取值只有0和1两种,为了提供更多的信息指导种群进化,需要增加一个约束函数;
在杀死
Figure GDA00034462237200000512
之前,测试数据须先覆盖变异语句s′;因此,基于分支覆盖的约束函数,表示为:
Figure GDA00034462237200000513
其中Appr(s′,X)是X对于s′的层接近度,dist(s',X)为分支距离;由上式可知,当且仅当
Figure GDA00034462237200000514
时,X能覆盖s′;
根据X,
Figure GDA00034462237200000515
Figure GDA00034462237200000516
建立杀死
Figure GDA00034462237200000517
的优化模型为:
Figure GDA00034462237200000518
优选的,步骤S4基于多种群遗传算法生成测试数据的方法为:
对于上面的数学模型,基于强变异准则,采用多种群遗传算法生成测试数据;为了引导种群进化,需要计算进化个体的适应值;考虑到数学模型中包括一个目标函数和一个约束函数,适应值函数
Figure GDA00034462237200000519
表示为:
Figure GDA00034462237200000520
其中,
Figure GDA0003446223720000061
是很小的正整数,它的作用确保括号里的值大于0;由上式可知,当且仅当
Figure GDA0003446223720000062
时,X能杀死了
Figure GDA0003446223720000063
在多种群遗传算法中,一个种群包含m个子种群,分别处理m个簇C1,C2,...,Cm中变异体的测试数据生成,所有的子种群并行进化,第i个子种群的进化个体为
Figure GDA0003446223720000064
其中Size为子种群中进化个体个数;算法的输出为生成的测试数据集;终止条件有两个,一个是对于m个簇的变异体,期望的测试数据全部找到;另一个是种群进化到最大进化代数g
生成测试数据的步骤:
B1:初始化m个子种群和算法中的各种参数;
B2:设变量count=1;
B3:判定终止条件是否满足,如果满足,转B13;
B4:设变量i=1;
B5:
Figure GDA0003446223720000065
首先执行Ci中的聚类中心变异体
Figure GDA0003446223720000066
判断
Figure GDA0003446223720000067
是否被杀死,如果是,标记
Figure GDA0003446223720000068
被杀死,并保存杀死它的测试数据,转B6;否则,转B9;
B6:
Figure GDA0003446223720000069
继续执行Ci中未被杀死的变异体;判断
Figure GDA00034462237200000610
是否杀死Ci中所有变异体,如果是,转B7;否则转12;
B7:停止第i个子种群的进化;m=m-1;保存生成的测试数据;转B13;
B8:
Figure GDA00034462237200000611
执行其它簇中未杀死的变异体,保存杀死的变异体和测试数据;转B9;
B9:计算所有个体的适应值
Figure GDA00034462237200000612
B10:实施选择、交叉和变异操作;生成新进化个体,不引起混淆,仍记为
Figure GDA00034462237200000613
B11:count=count+1;转B5;
B12:在每一个簇中,从未杀死的变异体中,选择难杀死的变异体为新的聚类中心;转B1;
B13:输出测试数据集。
本发明的有益效果:
(1)基于弱变异准则排序和模糊聚类,大大降低了变异测试的代价,提高了变异测试的实用性,而且模糊聚类更适合变异分支之间的真实的相似情况。
(2)多种群遗传算法,能够通过进化个体信息共享,以并行方式,高效生成测试数据,同时提高杀死变异体的能力;而且,优先生成杀死簇中心变异体的测试数据,有利于提高杀死簇中其它变异体概率。
(3)人工智能技术中的模糊聚类和多种群遗传算法融入变异测试,有利于增强了变异测试的性能。
附图说明
图1为本发明提出的一种基于聚类和多种群遗传算法的软件测试数据生成方法总流程图;
图2为本发明实施例中的示例程序;
图3为变异体之间相似矩阵。
具体实施方式
(1)模糊聚类变异体
步骤S1.1确定变异体杀死难度
设某一测试程序为G,程序的输入为X,s为G中某一原语句,对其实施变异之后,得到变异语句s';条件语句“ifs!=s'”,和它的真分支,基于弱变异测试准则称为变异分支,它对应的变异体记为Mi,其中“!=”为不等于符号;一个变异体对应一个变异分支;按照同样的方法,可以得到所有变异体的集合,记为M={M1,M2,…,Mn},n为变异体的个数;将这些变异分支插入G中对应原语句前面,形成的新被测程序,记为G';X运行G',如果Mi对应的变异分支被覆盖,那么基于弱变异准则Mi被杀死;
难杀死变异体是指,在给定的测试集中,很少测试数据能够杀死的变异体。显而易见,杀死变异体的测试数据越少,变异体越难杀死。因此,变异体杀死难度可以用杀死它的测试数据衡量。
为了反映X杀死变异体Mi情况,定义一个随机变量μi(X),
Figure GDA0003446223720000081
为了计算μi(X),采用数理统计的方法。首先,需要得到一个测试数据集,为此,在程序G输入域内随机生成R个样本,记为X1,X2,...,XR。将Xk,k=1,2,…,R执行程序,考察在弱变异测试准则下它是否能杀死Mi,然后计算μi(Xk)的值。因此,Mi的杀死的难度Dif(Mi),可以表示为:
Figure GDA0003446223720000082
所有变异体杀死难度,记为Dif(M1),Dif(M2),...,Dif(Mn),将这些变异体基于杀死难度进行降序排序,排序之后对应的变异体序列,记为S,其中,S的第一个元素为最难杀死的变异体,最后一个元素为最容易杀死的变异体。
步骤S1.2确定变异体之间的相似度
假设变异体Mi,Mj,i,j=1,2,...,n,i≠j是两个不同的变异体。可以定义两个随机变量μi(Xk)和μj(Xk),它们分别反映Mi,Mj被杀死的可能性。那么,当μi(Xk)=1时,μj(Xk)=1的概率可以表示为:
Figure GDA0003446223720000083
Mi和Mj之间的相似度,记为αi,j,由上式可以表示为:
Figure GDA0003446223720000084
由上式可知,αi,j∈[0,1]。对于所有变异体M1,M2,…,Mn之间的相似度,可以建立变异体了相似矩阵Λ,记为:
Figure GDA0003446223720000091
设第i簇为Ci,开始时
Figure GDA0003446223720000092
设阈值为T∈(0,1)。
步骤S3聚类变异体如下,
A1:变量i=1,
Figure GDA0003446223720000093
A2:从S中选出首元素作为聚类中心
Figure GDA0003446223720000094
更新簇为
Figure GDA0003446223720000095
A3:将
Figure GDA0003446223720000096
分别从S和M中删除;
A4:考察Λ中
Figure GDA0003446223720000097
对应的行,
Figure GDA0003446223720000098
与Mj,Mj∈M,j=1,2,...,n,
Figure GDA0003446223720000099
的αi,j值,如果αi,j≥T,可以把Mj放入Ci,由此得到,以
Figure GDA00034462237200000910
为中心的簇
Figure GDA00034462237200000911
其中|ci|为簇中元素的个数,
Figure GDA00034462237200000912
为第i个簇中第k个元素;
A5:将
Figure GDA00034462237200000913
从S中删除;
A6:i=i+1;
A7:判断S是否还有变异体,如果还有变异体,转A2:;
A8:输出所有的簇,记为C1,C2,…Cm,其中
Figure GDA00034462237200000914
为每个簇的聚类中心,m为簇的个数。
步骤3构建测试数据生成数学模型
对于
Figure GDA00034462237200000915
设目标函数为
Figure GDA00034462237200000916
其中X为决策变量,即为程序的输入。当决X能杀死
Figure GDA00034462237200000917
否则
Figure GDA00034462237200000918
因此,当且仅当
Figure GDA00034462237200000919
取最小值0时,
Figure GDA00034462237200000920
被X杀死。通过这种方式,杀死
Figure GDA00034462237200000921
的问题转化为求
Figure GDA00034462237200000922
最小值问题,可以表示为:
Figure GDA00034462237200000923
然而,由上式可知
Figure GDA00034462237200000924
的取值只有0和1两种,为了提供更多的信息指导种群进化,需要增加一个约束函数。
在杀死
Figure GDA0003446223720000101
之前,测试数据必须先覆盖变异语句s′。因此,基于分支覆盖的约束函数,可以表示为:
Figure GDA0003446223720000102
其中Appr(s′,X)是X对于s′的层接近度,dist(s',X)为分支距离。由上式可知,当且仅当
Figure GDA0003446223720000103
时,X能覆盖s′。
根据X,
Figure GDA0003446223720000104
Figure GDA0003446223720000105
建立杀死
Figure GDA0003446223720000106
的优化模型为:
Figure GDA0003446223720000107
步骤4基于多种群遗传算法生成测试数据
对于上面的数学模型,基于强变异准则,采用多种群遗传算法生成测试数据。为了引导种群进化,需要计算进化个体的适应值。考虑到数学模型中包括一个目标函数和一个约束函数,适应值函数
Figure GDA0003446223720000108
可以表示为:
Figure GDA0003446223720000109
其中,
Figure GDA00034462237200001010
是很小的正整数,它的作用确保括号里的值大于0。由上式可知,当且仅当
Figure GDA00034462237200001011
时,X能杀死了
Figure GDA00034462237200001012
在多种群遗传算法中,一个种群包含m个子种群,分别处理m个簇C1,C2,...,Cm中变异体的测试数据生成,所有的子种群并行进化,第i个子种群的进化个体为
Figure GDA00034462237200001013
其中Size为子种群中进化个体个数。算法的输出为生成的测试数据集。终止条件有两个,一个是对于m个簇的变异体,期望的测试数据全部找到;另一个是种群进化到最大进化代数g
生成测试数据的步骤:
B1:初始化m个子种群和算法中的各种参数;
B2:设变量count=1;
B3:
Figure GDA00034462237200001014
执行Ci中的簇中心变异体
Figure GDA00034462237200001015
B4:判定终止条件是否满足,如果满足,转B13;
B5:判断
Figure GDA0003446223720000111
是否杀死
Figure GDA0003446223720000112
如果是,标记
Figure GDA0003446223720000113
被杀死,并保存杀死它的测试数据,转B6;否则,转B9;
B6:
Figure GDA0003446223720000114
继续执行Ci中未被杀死的变异体;判断
Figure GDA0003446223720000115
是否杀死Ci中所有变异体,如果是,转B7;否则转12;
B7:停止第i个子种群的进化;m=m-1;保存生成的测试数据;转B4;
B8:
Figure GDA0003446223720000116
执行其它簇中未杀死的变异体,保存杀死的变异体和测试数据;转B9;
B9:计算所有个体的适应值
Figure GDA0003446223720000117
B10:实施选择、交叉和变异操作;生成新进化个体,不引起混淆,仍记为
Figure GDA0003446223720000118
B11:count=count+1;转B5;
B12:在每一个簇中,从未杀死的变异体中,选择难杀死的变异体为新的聚类中心;转B1;
B13:输出测试数据集。
测试实例分析
如图2(a)所示为三角形分类程序的源代码。图2(b)为新程序,插入了30个基于弱变异测试准则生成的变异分支,它们形成的变异体集合为M={M1,M2,...,M30}。
对于图2(b)中的M1对应的变异分支,设R=500,采用随机方法生成500个测试数据,并用这些测试数据执行新程序,其中有170个测试数据能够杀死M1,也就是说
Figure GDA0003446223720000119
那么,M1的杀死难度
Figure GDA00034462237200001110
根据式(2),计算图2(b)中对应30个变异体的杀死难度,并基于变异体的杀死难度降序排列变异体,得到排序后的变异体序列为S=M14,M16,...,M5。如表1所列,第1,4和7列为排序的编号,第2,5和8为变异体,第3,6和9为变异体杀死难度。其中M14的杀死难度为0.9998,是所有变异体中最大的,M5杀死难度为0.3182,是所有变异体中最小的。
表1本发明变异体的杀死难度和排序。
编号 M<sub>i</sub> Dif(M<sub>i</sub>) 编号 M<sub>i</sub> Dif(M<sub>i</sub>) 编号 M<sub>i</sub> Dif(M<sub>i</sub>)
1 M<sub>14</sub> 0.9998 11 M<sub>30</sub> 0.9792 21 M<sub>9</sub> 0.5784
2 M<sub>16</sub> 0.9998 12 M<sub>15</sub> 0.9790 22 M<sub>10</sub> 0.5286
3 M<sub>17</sub> 0.9998 13 M<sub>6</sub> 0.9688 23 M<sub>27</sub> 0.5054
4 M<sub>19</sub> 0.9990 14 M<sub>8</sub> 0.9688 24 M<sub>25</sub> 0.4846
5 M<sub>24</sub> 0.9990 15 M<sub>21</sub> 0.9662 25 M<sub>28</sub> 0.4846
6 M<sub>20</sub> 0.9870 16 M<sub>26</sub> 0.9662 26 M<sub>12</sub> 0.4714
7 M<sub>22</sub> 0.9870 17 M<sub>29</sub> 0.9356 27 M<sub>13</sub> 0.4714
8 M<sub>23</sub> 0.9870 18 M<sub>18</sub> 0.7076 28 M<sub>11</sub> 0.4714
9 M<sub>2</sub> 0.9850 19 M<sub>7</sub> 0.6818 29 M<sub>3</sub> 0.3404
10 M<sub>4</sub> 0.9850 20 M<sub>1</sub> 0.6600 30 M<sub>5</sub> 0.3182
若有170个测试数据杀死M1,那么这些测试数据中,有7个测试数据能杀死M2,和170个测试数据杀死M5。基于式(4)可以得到
Figure GDA0003446223720000121
和α1,5=1,显然,M1与M5的相似度要高于M1与M2的相似度。类似的,可以得到所有变异体之间的相似度,并构建似矩阵为Λ,如图3所示。
下面模糊聚类变异体。由表1可知,首先选最难杀死的变异体M14作为C1的聚类中心,紧接着M14从M和S移除。然后,根据相似矩阵Λ,考察M14与其他变异体的相似度,因为M14与M3,M5,M11,M12,M13,M15,M16,M17的相似度都大于T=0.5,将它们放入C1。紧接着,将M3,M5,M11,M12,M13,M15,M16和M17从S移除。
在S中,M16和M17是第二和第三个元素,因为已经被分到C1,M16和M17不能做聚类中心,所以在S中选首元素M19作为簇C2的聚类中心。重复上面的过程,直到
Figure GDA0003446223720000122
可以获得7个变异体簇,如表2第1列所示。
表2聚类结果和活着的变异体
Figure GDA0003446223720000131
采用多种群遗传算法生成测试数据时,起初,初始化每个子种群的优化个体,设置各种参数,和最大迭代次数g=3000。如果某一个测试数据期望杀死簇C1中的M14,测试数据必须首先覆盖变异语句s′(if(x+x+y*y==z*z))。比如,进化到某一代,进化个体X=(2,3,5)执行M14,可以获得g(X)=1+(1-1.001-(15-(2+3)))≠0,表示X=(2,3,5)不能覆盖s′,那么,它也不能杀死M14,即此时f(X)=1。
若所有的进化个体都不能杀死M14,需要实施选择、交叉和变异操作。又进化到一定代数后,X=(39,36,15)使g(X)=0和f(X)=0,也就是说,X=(39,36,15)能够杀死M14。紧接着,用X=(39,36,15)执行同一个簇中其它变异体,除了M3,其它变异体都被杀死。
类似的,运行多种群遗传算法一次后,每一簇中生成的测试数据和活着的变异体都被列在表2第2,3列中。注意到,虽然在某一簇中,某变异体没有被杀死,然而它被其它簇中的测试数据杀死。比如在C1中,M3没有被杀死,但是它被C2,C6和C7的测试数据杀死,这种情况表明,模糊聚类有助于杀死非中心变异体。
最终的杀死30个变异体的测试数据集为:
T={(39,36,15),(15,14,15),(63,62,62),(8,8,7),(29,19,47),(20,10,38)}。
通过上述实例表明,本发明方法采用分而治之的思想,先聚类变异体再采用多种群遗传算法生成测试数据,能高效生成测试数据,提高了软件测试的效率。

Claims (1)

1.一种基于聚类和多种群遗传算法的软件测试数据生成方法,其特征在于:该方法包括以下步骤:
S1.1:确定变异体杀死难度;
S1.2:确定变异体之间的相似度;
S2:聚类变异体;
S3:构建测试数据生成数学模型;
S4:基于多种群遗传算法生成测试数据;
其中,步骤S1.1中,确定变异体杀死难度的方法为:
设变异体的集合,记为M={M1,M2,…,Mn},n为变异体的个数;将变异体对应的变异分支插入G中,形成的新被测程序,记为G';X运行G',如果Mi对应的变异分支被覆盖,那么基于弱变异准则Mi被杀死;
为了反映X杀死变异体Mi情况,定义一个随机变量μi(X),
Figure FDA0003446223710000011
为了计算μi(X),采用数理统计的方法;首先,需要得到一个测试数据集,为此,在程序G输入域内随机生成R个样本,记为X1,X2,...,XR;将Xk,k=1,2,…,R执行程序,考察在弱变异测试准则下它是否能杀死Mi,然后计算μi(Xk)的值;因此,Mi的杀死的难度Dif(Mi),可以表示为:
Figure FDA0003446223710000012
所有变异体杀死难度,记为Dif(M1),Dif(M2),...,Dif(Mn),将这些变异体基于杀死难度进行降序排序,排序之后对应的变异体序列,记为S;
步骤S1.2中确定变异体之间的相似度的方法为:
假设变异体Mi,Mj,i,j=1,2,...,n,i≠j是两个不同的变异体;定义两个随机变量μi(Xk)和μj(Xk),它们分别反映Mi,Mj被杀死的可能性;那么μj(Xk)=1的概率表示为:
Figure FDA0003446223710000021
Mi和Mj之间的相似度,记为αi,j,由上式可以表示为:
Figure FDA0003446223710000022
由上式可知,αi,j∈[0,1];
步骤S2中聚类变异体的方法为:
对于所有变异体M1,M2,…,Mn之间的相似度,建立变异体了相似矩阵Λ,记为:
Figure FDA0003446223710000023
设第i簇为Ci,开始时
Figure FDA0003446223710000024
设阈值为T∈(0,1);
聚类变异体步骤如下,
A1:变量i=1,
Figure FDA0003446223710000025
A2:从S中选出首元素作为聚类中心
Figure FDA0003446223710000026
更新簇为
Figure FDA0003446223710000027
A3:将
Figure FDA0003446223710000028
分别从S和M中删除;
A4:考察Λ中
Figure FDA0003446223710000029
对应的行,
Figure FDA00034462237100000210
与Mj,Mj∈M,j=1,2,...,n,
Figure FDA00034462237100000211
的αi,j值,如果αi,j≥T,可以把Mj放入Ci,由此得到,以
Figure FDA00034462237100000212
为中心的簇
Figure FDA00034462237100000213
其中|ci|为簇中元素的个数,
Figure FDA00034462237100000214
为第i个簇中第j个元素;
A5:将
Figure FDA00034462237100000215
从S中删除;
A6:i=i+1;
A7:判断S是否还有变异体,如果还有变异体,转A2;
A8:输出簇C1,C2,…Cm,其中m为簇的个数;
步骤S3中构建测试数据生成数学模型的方法为:
对于
Figure FDA0003446223710000031
设目标函数为
Figure FDA0003446223710000032
其中X为决策变量,即为程序的输入;当决X能杀死
Figure FDA0003446223710000033
Figure FDA0003446223710000034
否则
Figure FDA0003446223710000035
因此,当且仅当
Figure FDA0003446223710000036
取最小值0时,
Figure FDA0003446223710000037
被X杀死;通过这种方式,杀死
Figure FDA0003446223710000038
的问题转化为求
Figure FDA0003446223710000039
最小值问题,表示为:
Figure FDA00034462237100000310
然而,由上式可知
Figure FDA00034462237100000311
的取值只有0和1两种,为了提供更多的信息指导种群进化,需要增加一个约束函数;
在杀死
Figure FDA00034462237100000312
之前,测试数据须先覆盖变异语句s′;因此,基于分支覆盖的约束函数,表示为:
Figure FDA00034462237100000313
其中Appr(s′,X)是X对于s′的层接近度,dist(s',X)为分支距离;由上式可知,当且仅当
Figure FDA00034462237100000314
时,X能覆盖s′;
根据X,
Figure FDA00034462237100000315
Figure FDA00034462237100000316
建立杀死
Figure FDA00034462237100000317
的优化模型为:
Figure FDA00034462237100000318
Figure FDA00034462237100000319
步骤S4基于多种群遗传算法生成测试数据的方法为:
对于上面的数学模型,基于强变异准则,采用多种群遗传算法生成测试数据;为了引导种群进化,需要计算进化个体的适应值;考虑到数学模型中包括一个目标函数和一个约束函数,适应值函数
Figure FDA00034462237100000320
表示为:
Figure FDA00034462237100000321
其中,
Figure FDA0003446223710000041
是很小的正整数,它的作用确保括号里的值大于0;由上式可知,当且仅当
Figure FDA0003446223710000042
时,X能杀死了
Figure FDA0003446223710000043
在多种群遗传算法中,一个种群包含m个子种群,分别处理m个簇C1,C2,...,Cm中变异体的测试数据生成,所有的子种群并行进化,第i个子种群的进化个体为
Figure FDA0003446223710000044
i=1,2,…,m,其中Size为子种群中进化个体个数;算法的输出为生成的测试数据集;终止条件有两个,一个是对于m个簇的变异体,期望的测试数据全部找到;另一个是种群进化到最大进化代数g;
生成测试数据的步骤:
B1:初始化m个子种群和算法中的各种参数;
B2:设变量count=1;
B3:判定终止条件是否满足,如果满足,转B13;
B4:设变量i=1;
B5:
Figure FDA0003446223710000045
首先执行Ci中的聚类中心变异体
Figure FDA0003446223710000046
判断
Figure FDA0003446223710000047
是否被杀死,如果是,标记
Figure FDA0003446223710000048
被杀死,并保存杀死它的测试数据,转B6;否则,转B9;
B6:
Figure FDA0003446223710000049
继续执行Ci中未被杀死的变异体;判断
Figure FDA00034462237100000410
是否杀死Ci中所有变异体,如果是,转B7;否则转12;
B7:停止第i个子种群的进化;m=m-1;保存生成的测试数据;转B13;
B8:
Figure FDA00034462237100000411
执行其它簇中未杀死的变异体,保存杀死的变异体和测试数据;转B9;
B9:计算所有个体的适应值
Figure FDA00034462237100000412
l=1,2,…,Size;
B10:实施选择、交叉和变异操作;生成新进化个体,不引起混淆,仍记为
Figure FDA00034462237100000413
B11:count=count+1;转B5;
B12:在每一个簇中,从未杀死的变异体中,选择难杀死的变异体为新的聚类中心;转B1;
B13:输出测试数据集。
CN202110051670.6A 2020-08-03 2021-01-14 一种基于聚类和多种群遗传算法的软件测试数据生成方法 Active CN112732583B (zh)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
CN2020107704059 2020-08-03
CN202010770405 2020-08-03
CN2020110728345 2020-10-09
CN2020110724024 2020-10-09
CN202011072411 2020-10-09
CN202011072834 2020-10-09
CN2020110724113 2020-10-09
CN202011072402 2020-10-09

Publications (2)

Publication Number Publication Date
CN112732583A CN112732583A (zh) 2021-04-30
CN112732583B true CN112732583B (zh) 2022-02-18

Family

ID=75513622

Family Applications (9)

Application Number Title Priority Date Filing Date
CN202110051697.5A Active CN112699054B (zh) 2020-08-03 2021-01-14 一种软件测试用例有序生成方法
CN202110051666.XA Withdrawn CN112699050A (zh) 2020-08-03 2021-01-14 一种基于变异体分组的软件测试用例多种群进化生成方法
CN202110051669.3A Active CN112699052B (zh) 2020-08-03 2021-01-14 一种基于相关输入变量的软件测试用例进化生成方法
CN202110051668.9A Active CN112699051B (zh) 2020-08-03 2021-01-14 一种基于相关输入变量的变异体分组方法
CN202110028395.6A Withdrawn CN112699045A (zh) 2020-08-03 2021-01-14 一种基于多种群遗传算法的软件测试用例生成方法
CN202110051667.4A Withdrawn CN112732582A (zh) 2020-08-03 2021-01-14 一种基于搜索域缩减的软件测试用例进化生成方法
CN202110028394.1A Withdrawn CN112732577A (zh) 2020-08-03 2021-01-14 一种多任务软件测试用例进化生成方法
CN202110051670.6A Active CN112732583B (zh) 2020-08-03 2021-01-14 一种基于聚类和多种群遗传算法的软件测试数据生成方法
CN202110051696.0A Active CN112699053B (zh) 2020-08-03 2021-01-14 一种融入模糊聚类的软件测试方法

Family Applications Before (7)

Application Number Title Priority Date Filing Date
CN202110051697.5A Active CN112699054B (zh) 2020-08-03 2021-01-14 一种软件测试用例有序生成方法
CN202110051666.XA Withdrawn CN112699050A (zh) 2020-08-03 2021-01-14 一种基于变异体分组的软件测试用例多种群进化生成方法
CN202110051669.3A Active CN112699052B (zh) 2020-08-03 2021-01-14 一种基于相关输入变量的软件测试用例进化生成方法
CN202110051668.9A Active CN112699051B (zh) 2020-08-03 2021-01-14 一种基于相关输入变量的变异体分组方法
CN202110028395.6A Withdrawn CN112699045A (zh) 2020-08-03 2021-01-14 一种基于多种群遗传算法的软件测试用例生成方法
CN202110051667.4A Withdrawn CN112732582A (zh) 2020-08-03 2021-01-14 一种基于搜索域缩减的软件测试用例进化生成方法
CN202110028394.1A Withdrawn CN112732577A (zh) 2020-08-03 2021-01-14 一种多任务软件测试用例进化生成方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202110051696.0A Active CN112699053B (zh) 2020-08-03 2021-01-14 一种融入模糊聚类的软件测试方法

Country Status (1)

Country Link
CN (9) CN112699054B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342662B (zh) * 2021-06-11 2024-09-03 南京工业大学 一种面向神经元特性的ai系统软件模型变异方法
CN113590474B (zh) * 2021-07-12 2022-03-22 山东建筑大学 一种并行程序顽固变异体的判定方法及系统
CN114091622A (zh) * 2021-12-07 2022-02-25 西安邮电大学 一种基于自组织映射神经网络的变异体约简方法
CN114461535B (zh) * 2022-04-14 2022-07-12 山东建筑大学 面向并行变异算子的顽固变异体测试数据生成方法及系统
CN115248781B (zh) * 2022-09-22 2022-12-27 西南科技大学 一种组合测试用例生成方法、装置、设备及可读存储介质
CN115729825B (zh) * 2022-11-25 2024-10-29 中国长江三峡集团有限公司 一种工业协议的模糊测试用例生成方法、装置和电子设备
CN115617700B (zh) * 2022-12-19 2023-04-07 华东交通大学 基于关系分析的测试用例设计、生成方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107590313A (zh) * 2017-08-14 2018-01-16 天津大学 基于遗传算法和变异分析的优化测试向量生成方法
CN107729241A (zh) * 2017-10-12 2018-02-23 中国矿业大学 一种基于变异体分组的软件变异测试数据进化生成方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002093318A2 (en) * 2001-05-15 2002-11-21 Psychogenics Inc. Systems and methods for monitoring behavior informatics
US20080052690A1 (en) * 2006-08-08 2008-02-28 Microsoft Corporation Testing software with a build engine
US8589736B2 (en) * 2011-08-12 2013-11-19 Tata Consultancy Services Limited System and method for automatic test data generation for relational testing
CN103593287B (zh) * 2013-10-30 2016-08-17 北京信息控制研究所 一种基于遗传算法的数据流测试用例自动生成方法
CN103559129B (zh) * 2013-10-31 2016-08-17 中国矿业大学 基于遗传算法的统计回归测试数据生成方法
CN103605605B (zh) * 2013-11-21 2016-05-25 中国矿业大学 基于语句占优关系和两阶段遗传算法的高阶变异测试方法
CN103973511A (zh) * 2014-04-28 2014-08-06 南京邮电大学 一种基于消息组合变异的服务脆弱性测试方法
WO2016130578A1 (en) * 2015-02-09 2016-08-18 10X Genomics, Inc. Systems and methods for determining structural variation and phasing using variant call data
CN105302719B (zh) * 2015-10-26 2017-11-28 北京科技大学 一种变异测试方法及装置
CN105808426B (zh) * 2016-02-28 2018-10-16 徐州工程学院 一种用于弱变异测试的路径覆盖测试数据生成方法
CN105868116B (zh) * 2016-04-15 2018-07-24 西北工业大学 基于语义变异算子的测试用例生成和优化方法
JP6572168B2 (ja) * 2016-04-22 2019-09-04 日本電信電話株式会社 テストデータ生成プログラム及びテストデータ生成方法
CN105930272B (zh) * 2016-04-22 2018-10-02 中国矿业大学 基于重要语句的分支覆盖测试数据生成方法
EP3388994A1 (de) * 2017-04-12 2018-10-17 Siemens Aktiengesellschaft Verfahren und vorrichtung zum rechnergestützten testen einer blockkette
CN108664391B (zh) * 2018-03-13 2021-03-23 北京邮电大学 一种面向程序状态的故障分类方法、变异测试方法及设备
CN108763055B (zh) * 2018-04-19 2020-08-25 北京航空航天大学 一种基于表观遗传的测试用例约束控制技术的构建方法
CN110399285B (zh) * 2018-04-24 2022-11-15 西安邮电大学 一种基于弱变异分析的测试用例约减方法
CN109542783B (zh) * 2018-11-19 2021-07-09 北京航空航天大学 一种基于变量分割的扩展有限状态机测试数据生成方法
US10956133B2 (en) * 2018-11-28 2021-03-23 International Business Machines Corporation Static optimization of production code for dynamic profiling
CN111274119B (zh) * 2018-12-05 2022-05-17 徐州工程学院 一种基于多种群协同进化的变异测试数据生成方法
WO2020136880A1 (ja) * 2018-12-28 2020-07-02 三菱電機株式会社 テスト実行装置、テスト実行方法及びテスト実行プログラム
CN111352830B (zh) * 2020-01-06 2023-10-24 中国矿业大学 基于语句占优关系的变异测试数据进化生成方法
CN111563044B (zh) * 2020-05-11 2022-10-25 西安邮电大学 一种基于程序变异的程序谱错误定位方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107590313A (zh) * 2017-08-14 2018-01-16 天津大学 基于遗传算法和变异分析的优化测试向量生成方法
CN107729241A (zh) * 2017-10-12 2018-02-23 中国矿业大学 一种基于变异体分组的软件变异测试数据进化生成方法

Also Published As

Publication number Publication date
CN112699051B (zh) 2022-04-01
CN112699053A (zh) 2021-04-23
CN112732577A (zh) 2021-04-30
CN112699045A (zh) 2021-04-23
CN112699051A (zh) 2021-04-23
CN112699050A (zh) 2021-04-23
CN112699052B (zh) 2022-04-15
CN112732582A (zh) 2021-04-30
CN112699053B (zh) 2022-02-22
CN112732583A (zh) 2021-04-30
CN112699052A (zh) 2021-04-23
CN112699054A (zh) 2021-04-23
CN112699054B (zh) 2022-02-18

Similar Documents

Publication Publication Date Title
CN112732583B (zh) 一种基于聚类和多种群遗传算法的软件测试数据生成方法
Kalash et al. Malware classification with deep convolutional neural networks
CN107622182B (zh) 蛋白质局部结构特征的预测方法及系统
Hamdani et al. Multi-objective feature selection with NSGA II
CN111898689B (zh) 一种基于神经网络架构搜索的图像分类方法
Shafipour et al. Particle distance rank feature selection by particle swarm optimization
CN116361801B (zh) 基于应用程序接口语义信息的恶意软件检测方法及系统
Ning et al. Adaptive deep reuse: Accelerating CNN training on the fly
CN107729241B (zh) 一种基于变异体分组的软件变异测试数据进化生成方法
CN111782804B (zh) 基于TextCNN同分布文本数据选择方法、系统及存储介质
CN114743600B (zh) 基于门控注意力机制的靶标-配体结合亲和力的深度学习预测方法
CN111400713B (zh) 基于操作码邻接图特征的恶意软件族群分类方法
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
JP2004152306A (ja) 双峰性データを判別する方法
CN112488188B (zh) 一种基于深度强化学习的特征选择方法
Markowska-Kaczmar et al. Discovering the mysteries of neural networks
CN115729825A (zh) 一种工业协议的模糊测试用例生成方法、装置和电子设备
JP7532300B2 (ja) 情報処理方法、プログラム及び情報処理装置
CN115423076A (zh) 基于两步式框架的有向超图链式预测方法
WO2018151619A1 (en) Network analysis tool testing
Dupre et al. Iterative Self-Learning: Semi-Supervised Improvement to Dataset Volumes and Model Accuracy.
Cao et al. Detection and fine-grained classification of malicious code using convolutional neural networks and swarm intelligence algorithms
CN114996256B (zh) 一种基于类别平衡的数据清洗方法
Iqbal et al. Comparison of two methods for computing action values in XCS with code-fragment actions
CN113836027B (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240920

Address after: 400000 2-2-1-61 319 Haier Road, Jiangbei District, Chongqing.

Patentee after: Chongqing Steady Technology Co.,Ltd.

Country or region after: China

Address before: 221000 Lishui Road, Yunlong District, Xuzhou, Jiangsu 2

Patentee before: XUZHOU University OF TECHNOLOGY

Country or region before: China

TR01 Transfer of patent right

Effective date of registration: 20241010

Address after: Unit 11C, 10th Floor, Building 3, No. 48 Zhichun Road, Haidian District, Beijing 100086

Patentee after: Beijing Yunqi Infinite Technology Co.,Ltd.

Country or region after: China

Address before: 400000 2-2-1-61 319 Haier Road, Jiangbei District, Chongqing.

Patentee before: Chongqing Steady Technology Co.,Ltd.

Country or region before: China