CN111338957B - 一种基于概率统计的软件测试基本路径进化生成方法 - Google Patents
一种基于概率统计的软件测试基本路径进化生成方法 Download PDFInfo
- Publication number
- CN111338957B CN111338957B CN202010127165.0A CN202010127165A CN111338957B CN 111338957 B CN111338957 B CN 111338957B CN 202010127165 A CN202010127165 A CN 202010127165A CN 111338957 B CN111338957 B CN 111338957B
- Authority
- CN
- China
- Prior art keywords
- path
- feasible
- edge
- individual
- generated
- 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
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/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Genetics & Genomics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Physiology (AREA)
- Computational Mathematics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于概率统计的软件测试基本路径进化生成方法。该方法给定被测程序,首先,利用条件概率关系和最大似然估计法,度量被测程序条件语句间的相关性类型,进而判定被测程序的互斥边关系,以此作为可行路径的识别依据;其次,采用遗传算法生成可行的基本路径,遗传算法的个体采用十进制编码方式代表进化路径,个体评价完成后,判断进化个体是否含有互斥边,含有互斥边的个体代表的是不可行路径,不参与进化过程;再次,对不含有互斥边的个体进行选择、交叉、变异和繁殖操作,重复上述过程,直到达到最大迭代次数或者生成所有的可行路径为止;然后,检验生成的可行路径是否为基本路径,将线性无关的独立路径存入基本路径集;最后,输出可行的基本路径集合。本发明目的在于为被测程序自动生成可行的基本路径,再根据可行的基本路径生成或者选择测试数据,解决了目前被测软件路径数目众多的情况下,全路径覆盖测试难以达到,测试质量难以得到保障的问题,最终帮助测试人员提高软件测试效率,同时保障软件测试的质量。
Description
技术领域
本发明涉及软件测试、程序分析和概率统计领域,尤其适用于软件测试中基本路径生成领域,其目的在于为被测程序自动生成可行的基本路径,是一种帮助软件测试人员提高软件测试效率,保障软件质量的方法。
背景技术
软件测试是软件生命周期中重要的组成部分,是保障软件质量、提高软件可靠性的重要手段。路径测试是软件测试的主要方法,许多软件测试问题都可以归结为面向路径的测试数据生成问题,但是复杂被测软件路径数目众多,全路径覆盖测试难以实现。基本路径测试是指在测试过程中,尽可能地覆盖程序中所有的可行基本路径,它是一种覆盖率高且检错能力较强的结构测试方法。该方法设计出的测试用例能够保证被测程序的每个可执行语句至少执行一次,能够检测到被测程序中65%的错误。目前,已经存在一些基本路径生成方法,但大多方法都没有考虑生成的基本路径是否为可行路径。基本路径可行性的度量主要取决于测试人员的经验,这导致基本路径对应的测试数据的质量很难保证,并且测试人员判断基本路径的可行性也需要花费大量的时间。因此,如果能够采用一定方法为被测程序自动生成可行的基本路径,再根据可行的基本路径生成或者选择测试数据,可以有效的降低测试人员的工作压力,提高软件研发的生产效率,并且能够保障软件测试的质量,提高软件产品的可靠性。
在实际基本路径测试中,首先需要确定被测程序的基本路径,然后再生成经过每一条基本路径的测试数据。此时,自动生成的基本路径是否可行,直接影响到测试数据的质量和测试结果。目前,有学者针对基本路径的生成方法进行研究,如张广梅等研究了应用控制流图的深度优先搜索方法生成基本路径,但是该方法没有考虑生成的基本路径中是否含有不可行路径。金斌等在2007年11月21日公开的发明专利中,提出了应用于白盒路径测试的测试用例生成方法,该发明主要是保证不同测试人员寻找的基本独立路径集大体一致。因此,这些方法并没有很好地解决生成可行基本路径质量的问题。
对此,本发明提出了一种基于概率统计的软件测试可行基本路径进化生成方法,自动生成被测程序的可行基本路径,进而生成覆盖可行基本路径的测试数据,在降低工作量的同时保障软件测试数据的质量。首先,利用条件概率关系和最大似然估计法,度量被测程序条件语句间的相关性类型;其次,根据条件语句间的相关性类型,判定被测程序中的互斥边关系,以此作为可行路径的识别依据;再次,在遗传算法的个体评价完成后,判断染色体是否含有互斥边,原因是含有互斥边的染色体代表的是不可行路径,不参与进化过程;然后,对不含有互斥边的进化个体进行选择、交叉、变异和繁殖操作,重复上述过程,直到达到最大迭代次数或者生成所有的可行路径为止;最后,检验生成的可行路径是否为基本路径,满足线性无关的独立路径为可行的基本路径。通过该方法,生成的路径均为可行的基本路径,可以在任何基本路径测试中进行应用,能够大大减少软件测试的工作量,更有利于查找被测程序中的缺陷,保障软件测试的质量,从而提高软件测试的效率和软件产品的可靠性。
发明内容
本发明通过提供一种基于概率统计的软件测试基本路径进化生成方法,来有效解决目前存在的复杂被测软件路径数目众多的情况下,全路径覆盖测试难以达到所导致的测试质量难以得到保障的问题,最终提高了软件测试效率,同时保障了软件测试质量。
为达到上述目标,本发明提出一种基于概率统计的软件测试基本路径进化生成方法。该方法针对被测程序,首先利用条件概率关系和最大似然估计法,度量被测程序条件语句间的相关性类型,进而判定被测程序中的互斥边关系;在此基础上,采用遗传算法自动生成可行路径,其中在遗传算法的个体评价完成后,判断染色体是否含有互斥边,含有互斥边的染色体代表的是不可行路径,不参与进化过程;然后,对不含有互斥边的进化个体进行选择、交叉、变异和繁殖操作,重复上述过程,直到达到最大迭代次数或者生成所有的可行路径为止;最后,检验生成的可行路径是否为基本路径,满足线性无关的独立路径为可行的基本路径。具体而言,该方法包括下列步骤。
步骤1 概率统计方法判定互斥边
(1)输入被测程序PG,将循环语句转化为条件语句,生成新的被测程序PG_1。读取PG_1,构造PG_1的控制流图,并对线性串行的部分进行精简压缩,提取PG_1的执行分支,构建PG_1的DD-图。确定DD-图中要考察的条件语句,定义对应的随机变量X和Y,插装生成新的被测程序PG_2。
(2)随机生成测试数据运行PG_2,获得X和Y的样本数据集合。根据条件概率关系,构造X和Y的统计量q1和q2,利用最大似然方法估计统计量的函数值。
如果条件语句存在相关性,则X和Y的样本值必然存在制约关系,并且满足如下X和Y之间的条件概率关系:如果事件{ Y = 1 | X = 1 }发生的概率为q1,那么事件{ Y = 0
| X = 1 }发生的概率为1-q1;如果事件{ Y = 1 | X = 0 }发生的概率为,那么事件{ Y = 0 | X = 0 }发生的概率为1- q2。统计量估计值的计算公式如下:
(5)根据条件语句间的相关性类型和互斥边关系的定义,判定被测程序中的互斥边关系,输出被测程序的互斥边关系集合。
步骤2 遗传算法生成可行基本路径
(1)初始化种群,种群初始数据是由PG_2的DD-图中的入口边和出口边构成,在进化过程中染色体的长度是可变的,依赖于其代表的生成路径的长度。种群中染色体用整型变量表示,采用十进制的编码方式代表进化生成的路径。
(2)个体评价,遗传算法中设计适应度函数的主要目的是用来评价个体的优劣程度。本发明中,适应度函数设计的依据是进化个体中所有的边均为相邻边时,其代表的生成路径为可行的基本路径。计算方法是根据个体的长度(即个体包含的边的数量)计算每条边的权重,所有相邻边的权重之和为适应度函数值。当生成路径包含的所有的边均为相邻边时,适应度函数达到最大值为1,对应的个体表示一条从入口边到出口边的完整路径,计算公式为:
若适应度函数值不为1,并且没有达到最大迭代次数,则判断进化个体是否含有互斥边,含有互斥边的个体代表的是不可行路径,在进化过程中将其删除,重复上述过程,直到种群数据完成互斥边的遍历;若适应度函数值为1,则个体代表的进化路径为生成的可行路径,将其存入可行的路径集合。
(3)选择、交叉、变异和繁殖,选择操作采用轮盘赌的方法选择当前种群适应度较高的个体遗传到下一代种群;交叉操作采用单点交叉的方法交换两个配对个体的部分基因座;变异操作采用基本位变异的方法对个体某一基因座上的基因以一较小的概率进行改变;繁殖运算主要是为了实现扩展个体使其代表完整的路径,采用在个体的繁殖基因座位置后插入新的基因,实现个体的扩展。重复遗传算法的上述过程,直到进化个体的适应度函数值为1或者达到最大迭代次数为止。
(4)检验操作,检验生成的可行路径是否为基本路径。若是基本路径,将其存入可行的基本路径集合。
(5)算法终止条件,当所有的可行基本路径生成完成或者达到最大迭代次数时,输出可行基本路径集合,算法终止。
附图说明
图1为本发明的一种基于概率统计的软件测试基本路径进化生成方法的流程图。
图2为图1中概率统计方法判定互斥边的流程图。
图3为图1中遗传算法生成可行基本路径的流程图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施并配合所附图示说明如下。
图1为本发明实施的一种基于概率统计的软件测试基本路径进化生成方法的流程图,其特征在于,包括下列步骤。
步骤1概率统计方法判定互斥边,输入被测程序,首先将被测程序中的循环语句转化为条件语句;然后,利用条件概率关系和最大似然估计法,度量被测程序条件语句间的相关性类型,进而判定被测程序中的互斥边关系。
步骤2遗传算法生成可行基本路径,首先,初始化种群,计算个体的适应度函数值;其次,在遗传算法的个体评价完成后,判断染色体是否含有互斥边,含有互斥边的染色体代表的是不可行路径,不参与进化过程;然后,进行遗传算法的选择、交叉、变异和繁殖操作,进化生成可行路径;最后,检验生成的可行路径是否为基本路径,输出可行的基本路径集合。
图2为概率统计方法判定互斥边的流程图,结合图2说明步骤1的具体实施方法如下:
(1)输入被测程序PG,分析PG中所有语句,将其分为顺序语句、条件语句和循环语句;然后,将循环语句转化为条件语句,只考虑循环体被执行一次的情况,循环体执行多次时,将其展开成多个条件并列,进而生成新的被测程序PG_1。
读取PG_1,构造PG_1的控制流图。对控制流图中线性串行的部分进行精简压缩,提
取PG_1的执行分支,构建PG_1的DD-图。确定DD-图中要考察的条件语句和,定义对应的随
机变量X和Y,X和Y是2个服从(0,1)分布的随机变量,插装生成新的被测程序PG_2。
如果条件语句存在相关性,则X和Y的样本值必然存在制约关系,并且满足如下X和Y之间的条件概率关系:如果事件{Y = 1 | X = 1}发生的概率为q1,那么事件{Y = 0 | X
= 1}发生的概率为1-q1;如果事件{Y = 1 | X = 0}发生的概率为,那么事件{Y = 0 | X = 0}发生的概率为1- q2。计算公式如下:
(3)依据和度量和的相关性类型。设和是被测程序的2个条件语句,则语
句组的相关性类型定义为:若取真分支时,必然取真分支,则称具有真-真相
关性,记为T-T相关性;若取真分支时,必然取假分支,则称具有真-假相关性,记为
T-F相关性;若取假分支时,必然取真分支,则称具有假-真相关性,记为F-T相关
性;若取假分支时,必然取假分支,则称具有假-假相关性,记为F-F相关性。
(4)根据条件语句间的相关性类型,定义被测程序中的互斥边关系。将条件语句
的真分支所对应的边记为,假分支所对应的边记为。根据条件语句的相关性可知,若具有T-T相关性,即如果执行的真分支就必然执行的真分支,而不能执行的假分
支,也就是说,在DD-图的可行路径中,如果含有真分支对应的边就不能含有假分支对应
的边,则和为一组相互排斥的边,同时出现和的路径为不可行路径。由此给出如下四
组互斥边的定义:若具有T-T相关性,则和具有互斥边关系,记为;若
具有T-F相关性,则和具有互斥边关系,记为;若具有F-T相关性,则和具
有互斥边关系,记为;若具有F-F相关性,则和具有互斥边关系,记为。
(5)根据条件语句间的相关性类型和互斥边关系的定义,判定被测程序中的互斥边关系,输出被测程序的互斥边关系集合set_execlusion_edge_ PG_2。
进一步,其中上述步骤1的具体步骤如下:
步骤1-1:起始状态;
步骤1-2:输入被测程序PG={set_sequence_stmt, set_condition_stmt, set_ loop_stmt},其中set_sequence_stmt、set_condition_stmt、set_loop_stmt分别表示PG中的顺序语句集合、条件语句集合、循环语句集合;
步骤1-3:从set_loop_stmt中取出一条循环语句loop_stmt;
步骤1-4:将循环语句loop_stmt转化为条件语句condition_stmt;
步骤1-5:set_condition_stmt= set_condition_stmt∪{condition_stmt};
步骤1-6:判断所有loop_stmt是否已经完成转化,若是则执行下一步;若不是则执行步骤1-3;
步骤1-7:转化后的被测程序为PG_1= {set_sequence_stmt, set_condition_ stmt};
步骤1-8:构造PG_1的控制流图control_flow_graph。
步骤1-9:对control_flow_graph中线性串行部分进行精简压缩,提取 PG_1的执行分支,构建PG_1的DD-图decision_to_decision_graph。
步骤1-10:确定要考察的条件语句condition_stmt1和condition_stmt2,定义对应的随机变量X和Y;
步骤1-11:插装生成新的被测程序PG_2= {set_sequence_stmt, set_condition_ stmt};
步骤1-12:随机生成测试数据集set_random_data运行PG_2,获得随机变量的样本数据集合set_sample_data;
步骤1-13: 根据条件概率关系,构造X和Y的统计量statistic_q1和statistic_ q2;
步骤1-14:利用最大似然方法估计统计量的函数值statistic_estimate_value_ q1和statistic_estimate_value_q2;
步骤1-15:依据统计量的估计值度量condition_stmt1和condition_stmt2相关性类型condition_stmt_correlation_type;
步骤1-16:根据condition_stmt_correlation_type,判定被测程序中的互斥边关系execlusion_edge;
步骤1-17:set_execlusion_edge=set_execlusion_edge∪{execlusion_edge};
步骤1-18:判断是否已经生成所有的execlusion_edge,若是则执行下一步;若不是则执行步骤1-10;
步骤1-19:输出互斥边关系集合set_execlusion_edge_ PG_2;
步骤1-20:结束状态。
图3为遗传算法生成可行基本路径的流程图,结合图3说明步骤2的具体实施方法如下:
(1)初始化种群,种群初始数据是由PG_2的DD-图中的入口边和出口边构成,在进化过程中染色体的长度是可变的,依赖于其代表的生成路径的长度。种群个体用整型变量表示,采用十进制的编码方式代表进化生成的路径。
(2)个体评价,适应度函数用来评价个体的优劣程度,进化生成的个体代表被测程序的一条路径,对应DD-图中的边,当所有的边均相邻时,表示生成的路径为一条可穿越被测程序的完整路径。本发明设计适应度函数的依据是进化个体中所有的边均为相邻边时,其代表的生成路径为可行的基本路径。计算方法是根据个体的长度计算每条边的权重,所有相邻的边的权重之和为适应度函数值。当生成路径包含的所有的边均为相邻边时,适应度函数达到最大值为1,对应的个体表示一条从入口边到出口边的完整路径,适应度函数的计算公式如下:
若适应度函数值不为1,并且没有达到最大迭代次数,则判断进化个体是否含有互斥边,含有互斥边的个体代表的是不可行路径,在进化过程中将其删除,重复上述过程,直到种群数据完成互斥边的遍历;若适应度函数值为1,则个体代表的进化路径为生成的可行路径,将其存入可行的路径集合。
(3)选择、交叉、变异和繁殖,若种群数据完成互斥边的遍历,进行遗传算法的选
择、交叉、变异和繁殖操作。选择操作,采用轮盘赌的方法选择当前种群适应度较高的个体
遗传到下一代种群。交叉操作,采用单点交叉的方法交换两个配对个体的部分基因座。变异
操作,采用基因位变异的方法对个体某一基因座上的基因以一较小的概率进行改变。繁殖
操作,主要是为了实现扩展个体使其代表完整的路径,采用在个体的某一基因座位置后插
入新的基因,实现个体的扩展,操作过程如下:随机生成当前种群中个体的繁殖点位置
;确定与繁殖点相邻的基因,并随机选择一条边作为繁殖基因;将繁殖基因插入繁殖点
位置后,作为基因座对应的基因,增加个体的长度。重复遗传算法的上述进化过程,直
到个体的适应度函数为1或者达到最大迭代次数为止。
(4)检验操作,若个体的适应度函数值为1,即生成可行的路径后,需要检验生成的可行路径是否为基本路径。首先,判断生成的路径是否为独立路径,独立路径至少要有一条边在已知独立路径中没有出现过。其次,判断生成的独立路径是否可以由基本路径集中已生成的路径线性表示,不能由已生成的基本路径线性表示的路径为新生成的基本路径。若生成的可行路径是基本路径,将其存入可行的基本路径集合。
(5)算法终止条件,当达到最大迭代次数或者所有的可行基本路径生成完成时,输出可行基本路径集合,算法终止。
进一步,其中上述步骤2的具体步骤如下:
步骤2-1:起始状态;
步骤2-2:输入互斥边集合set_execlusion_edge_ PG_2;
步骤2-3:由DD-图中的入口边和出口边构成初始种群数据population_ initialization_data_i
= {population_initialization_edge_start, population_initialization_ edge_end};
步骤2-4:m个初始数据组成初始种群数据集合set_population_initialization_ data= {population_initialization_data_1, ..., population_initialization_data_ m};
步骤2-5:种群数据集合set_population_data= set_population_data∪set_ population_initialization_data;
步骤2-6:种群个体population_data_i用整型变量表示,采用十进制的编码方式代表进化生成的路径evolution_path_i;
步骤2-7:根据population_data_i的长度(即population_data_i包含的边的数量)计算其包含的每条边的权重weight_population_i_edge_j(i=1,2,...,m);
步骤2-8:population_data_i含有的所有相邻边的weight_population_i_edge_j之和为其适应度函数值func_fit(population_data_i)=sum(weight_population_i_edge_ j) (i=1,2,...,m);
步骤2-9:判断func_fit(population_data_i)是否为1,若是转至步骤2-20;否则执行下一步;
步骤2-10:判断迭代次数是否达到最大值,若是转至步骤2-26;否则执行下一步;
步骤2-11:判断population_data_i是否含有execlusion_edge,若是执行下一步;否则转至步骤2-13;
步骤2-12:set_population_data=set_population_data-{population_data_i};
步骤2-13:set_population_data=set_population_data;
步骤2-14:set_population_data是否遍历完,若不是执行下一步;否则转至步骤2-16;
步骤2-15:population_data_i=population_data_i+1,转至步骤2-11;
步骤2-16:采用轮盘赌方法进行选择操作selection_set_population_data;
步骤2-17:采用单点交叉方法进行交叉操作cross_set_population_data;
步骤2-18:采用基因位变异方法进行变异操作reproduction_set_population_ data;
步骤2-19:采用在个体的某一基因座位置后插入新的基因的方法繁殖基因reproduction_set_population_data,转至步骤2-7;
步骤2-20:生成可行路径executable_path_k=evolution_path_i;
步骤2-21:set_executable_path=set_executable_path∪{evolution_path_k};
步骤2-22:判断executable_path_k是否为基本路径,若是转至步骤2-24;否则执行下一步;
步骤2-23:set_executable_path=set_executable_path-{evolution_path_k};
步骤2-24:set_executable_basis_path=set_executable_basis_path∪{executable_path_k}
步骤2-25:判断set_executable_basis_path是否生成完成,若是执行下一步;否则转至步骤2-5;
步骤2-26:输出可行基本路径集合set_executable_basis_path;
步骤2-27:结束状态。
Claims (2)
1.基于概率统计的软件测试基本路径进化生成方法,其特征在于,针对被测程序PG,利用条件概率关系和最大似然估计法度量插装新生成的被测程序PG_2中条件语句间的相关性类型,进而判定PG_2中的互斥边关系,生成互斥边关系集合set_execlusion_edge_PG_2,以此作为可行路径的识别依据;在此基础上,采用遗传算法自动生成可行路径集合set_executable_basis_path,首先,初始化种群数据;其次,计算个体的适应度函数值,提取适应度函数值为1的个体,存入可行路径集合set_executable_path;然后,判断进化个体是否含有互斥边,对不含有互斥边的进化个体进行选择、交叉、变异和繁殖操作,重复上述过程,直到达到最大迭代次数或者生成所有的可行基本路径为止;最后,检验进化生成的可行路径是否为基本路径,满足线性无关的独立路径为可行的基本路径,最终输出可行的基本路径集合set_executable_basis_path;该方法包括如下步骤:
1)概率统计方法判定互斥边,首先,输入被测程序PG,将循环语句转化为条件语句,生成新的被测程序PG_1;其次,读取PG_1,构造PG_1的控制流图,并对线性串行的部分进行精简压缩,提取PG_1的执行分支,构建PG_1的DD-图;再次,确定DD-图中要考察的条件语句,定义对应的随机变量X和Y,插装生成新的被测程序PG_2;然后,随机生成测试数据运行PG_2,获得X和Y的样本数据集合,根据条件概率关系,构造X和Y的统计量q1和q2,利用最大似然方法估计统计量的函数值;最后,依据统计量的估计值度量条件语句的相关性类型,进而判定PG_2中的互斥边关系,输出PG_2的互斥边关系集合set_execlusion_edge_PG_2;
2)遗传算法生成基本路径,第一,初始化种群,种群初始数据是由PG_2的DD-图中的入口边和出口边构成,在进化过程中染色体的长度是可变的,依赖于其代表的生成路径的长度,种群个体用整型变量表示,采用十进制的编码方式代表进化生成的路径;
第二,个体评价,适应度函数用来评价个体的优劣程度,进化生成的个体代表被测程序的一条路径,对应DD-图中的边,当所有的边均相邻时,表示生成的路径为一条可穿越被测程序的完整路径;本发明设计适应度函数的依据是进化个体中所有的边均为相邻边时,其代表的生成路径为可行的基本路径;计算方法是根据个体的长度计算每条边的权重,所有相邻的边的权重之和为适应度函数值;当生成路径包含的所有的边均为相邻边时,适应度函数达到最大值为1,对应的个体表示一条从入口边到出口边的完整路径,计算公式为:
其中,fit(xi)表示个体xi(i=1,2,…,m)的适应度函数值,number(xi)表示xi相邻边的数量,weight(ej)表示xi的边ej的权重,L(xi)表示xi的长度;
若适应度函数值不为1,并且没有达到最大迭代次数,则判断进化个体是否含有互斥边,含有互斥边的个体代表的是不可行路径,在进化过程中将其删除,重复上述过程,直到种群数据完成互斥边的遍历;若适应度函数值为1,则个体代表的进化路径为生成的可行路径,将其存入可行的路径集合set_executable_path;
第三,选择、交叉、变异和繁殖,若种群数据完成互斥边的遍历,进行遗传算法的选择、交叉、变异和繁殖操作;选择操作,采用轮盘赌的方法按照适应度函数值选择个体遗传到下一代种群;交叉操作,采用单点交叉的方法交换两个配对个体的部分基因座;变异操作,采用基因位变异的方法对个体某一基因座上的基因依据概率进行改变;繁殖操作,主要是为了实现扩展个体使其代表完整的路径,采用在个体的某一基因座位置后插入新的基因,实现个体的扩展,操作过程如下:①随机生成当前种群中个体的繁殖点位置posb;②确定与繁殖点相邻的基因,并随机选择一条边作为繁殖基因;③将繁殖基因插入繁殖点位置后,作为基因座posb+1对应的基因,增加个体的长度;重复遗传算法的上述进化过程,直到个体的适应度函数为1或者达到最大迭代次数为止;
第四,检验操作,若个体的适应度函数值为1,即生成可行的路径后,需要检验生成的可行路径是否为基本路径;首先,判断生成的路径是否为独立路径,独立路径至少要有一条边在已知独立路径中没有出现过;其次,判断生成的独立路径是否可以由基本路径集中已生成的路径线性表示,不能由已生成的基本路径线性表示的路径为新生成的基本路径;若生成的可行路径是基本路径,将其存入可行的基本路径集合;
第五,算法终止条件,当达到最大迭代次数或者所有的可行基本路径生成完成时,输出可行基本路径集合,算法终止。
2.根据权利要求1中所述的基于概率统计的软件测试基本路径进化生成方法,其特征在于,在步骤1)中,概率统计方法判定互斥边;输入被测程序PG,分析PG中所有语句,将其分为顺序语句、条件语句和循环语句;然后,将循环语句转化为条件语句,只考虑循环体被执行一次的情况,循环体执行多次时,将其展开成多个条件并列,进而生成新的被测程序PG_1;读取PG_1,构造PG_1的控制流图;对控制流图中线性串行的部分进行精简压缩,提取PG_1的执行分支,构建PG_1的DD-图;确定DD-图中要考察的条件语句ni和nj,定义对应的随机变量X和Y,X和Y是2个服从(0,1)分布的随机变量,插装生成新的被测程序PG_2;随机生成测试数据运行PG_2,获得X和Y的样本数据集合;根据条件概率关系,构造X和Y的统计量q1和q2,利用最大似然方法估计统计量的函数值和/>
依据和/>度量ni和nj的相关性类型;由条件概率关系以及条件语句间的相关性类型可知,当/>时,(ni,nj)具有T-T相关性;当/>时,(ni,nj)具有T-F相关性;当/>时,(ni,nj)具有F-T相关性;当/>时,(ni,nj)具有F-F相关性;
根据条件语句间的相关性类型,定义被测程序中的互斥边关系;将条件语句ni的真分支所对应的边记为假分支所对应的边记为/>则互斥边的定义如下:①若(ni,nj)具有T-T相关性,则/>和/>具有互斥边关系,记为/>②若(ni,nj)具有T-F相关性,则/>和/>具有互斥边关系,记为/>③若(ni,nj)具有F-T相关性,则/>和/>具有互斥边关系,记为④若(ni,nj)具有F-F相关性,则/>和/>具有互斥边关系,记为/>
根据条件语句间的相关性类型和互斥边的关系,判定被测程序中的互斥边关系,输出被测程序的互斥边关系集合set_execlusion_edge_PG_2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010127165.0A CN111338957B (zh) | 2020-02-28 | 2020-02-28 | 一种基于概率统计的软件测试基本路径进化生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010127165.0A CN111338957B (zh) | 2020-02-28 | 2020-02-28 | 一种基于概率统计的软件测试基本路径进化生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111338957A CN111338957A (zh) | 2020-06-26 |
CN111338957B true CN111338957B (zh) | 2023-03-31 |
Family
ID=71185717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010127165.0A Active CN111338957B (zh) | 2020-02-28 | 2020-02-28 | 一种基于概率统计的软件测试基本路径进化生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111338957B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112346997B (zh) * | 2020-12-04 | 2022-05-31 | 福州理工学院 | 一种测试用例自动生成方法及终端 |
CN115078967B (zh) * | 2022-06-15 | 2024-02-20 | 上海类比半导体技术有限公司 | 一种用于芯片测试的模式生成方法、生成器及测试电路 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10104313A (ja) * | 1996-09-27 | 1998-04-24 | Nec Shizuoka Ltd | 半導体集積回路 |
CN102368226A (zh) * | 2011-10-10 | 2012-03-07 | 南京大学 | 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法 |
CN102722610A (zh) * | 2012-05-29 | 2012-10-10 | 李姮乐 | 一种由流程图自动产生覆盖率代码的方法及装置 |
CN105808426A (zh) * | 2016-02-28 | 2016-07-27 | 徐州工程学院 | 一种用于弱变异测试的路径覆盖测试数据生成方法 |
CN106502908A (zh) * | 2016-11-07 | 2017-03-15 | 牡丹江师范学院 | 基于统计分析的可执行基础路径进化生成方法 |
CN108803332A (zh) * | 2018-06-20 | 2018-11-13 | 桂林电子科技大学 | 基于改进生物地理学的路径规划方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7665072B2 (en) * | 2005-04-21 | 2010-02-16 | Microsoft Corporation | Generating test cases for software with complex preconditions |
-
2020
- 2020-02-28 CN CN202010127165.0A patent/CN111338957B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10104313A (ja) * | 1996-09-27 | 1998-04-24 | Nec Shizuoka Ltd | 半導体集積回路 |
CN102368226A (zh) * | 2011-10-10 | 2012-03-07 | 南京大学 | 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法 |
CN102722610A (zh) * | 2012-05-29 | 2012-10-10 | 李姮乐 | 一种由流程图自动产生覆盖率代码的方法及装置 |
CN105808426A (zh) * | 2016-02-28 | 2016-07-27 | 徐州工程学院 | 一种用于弱变异测试的路径覆盖测试数据生成方法 |
CN106502908A (zh) * | 2016-11-07 | 2017-03-15 | 牡丹江师范学院 | 基于统计分析的可执行基础路径进化生成方法 |
CN108803332A (zh) * | 2018-06-20 | 2018-11-13 | 桂林电子科技大学 | 基于改进生物地理学的路径规划方法 |
Non-Patent Citations (2)
Title |
---|
Automatic test path generation from sequence diagram using genetic algorithm;Hoseini B 等;《7"th International Symposium on Telecommunications (IST"2014)》;20140930;106-111 * |
基于自适应遗传算法的路径测试数据生成;李军 等;《计算机工程》;20090313;第35卷(第02期);203-205 * |
Also Published As
Publication number | Publication date |
---|---|
CN111338957A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109931678B (zh) | 基于深度学习lstm的空调故障诊断方法 | |
CN110970099B (zh) | 一种基于正则化变分自动编码器的药物分子生成方法 | |
Veličković et al. | The CLRS algorithmic reasoning benchmark | |
CN111338957B (zh) | 一种基于概率统计的软件测试基本路径进化生成方法 | |
CN110491441B (zh) | 一种模拟人群背景信息的基因测序数据仿真系统及方法 | |
CN109828925B (zh) | 一种基于软件网络结构特征的软件可靠性度量方法 | |
CN101105841A (zh) | 由大规模基因芯片表达谱数据构建基因调控亚网络的方法 | |
CN109126140A (zh) | 游戏难度评估方法、装置和系统 | |
CN111343147B (zh) | 一种基于深度学习的网络攻击检测装置及方法 | |
CN103905246A (zh) | 基于分组遗传算法的链路预测方法 | |
CN113240113B (zh) | 一种增强网络预测鲁棒性的方法 | |
CN105868534A (zh) | 一种基于多目标优化抽样的水文模型不确定性分析方法 | |
Moser et al. | Identifying features of fitness landscapes and relating them to problem difficulty | |
CN110377511A (zh) | 一种面向数据流的测试用例生成方法 | |
CN113990405A (zh) | 试剂化合物预测模型的构建方法、化学反应试剂自动预测补全的方法与装置 | |
Shi et al. | Deeptpi: Test point insertion with deep reinforcement learning | |
CN104111887A (zh) | 基于Logistic模型的软件故障预测系统及方法 | |
Roy et al. | Deep predictive coverage collection | |
Yang et al. | Using genetic algorithms for time series prediction | |
CN110348094A (zh) | 基于影响网络的石油管道泄漏检测方法及系统 | |
CN106294127B (zh) | 基于聚类的面向对象软件测试用例生成方法 | |
CN114678083A (zh) | 一种化学品遗传毒性预测模型的训练方法及预测方法 | |
CN115270637A (zh) | 一种基于gbrt的地下排水管道最大应力预测方法 | |
CN115409317A (zh) | 基于特征选择和机器学习的台区线损检测方法及装置 | |
CN115184055A (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 |