CN111338957B - 一种基于概率统计的软件测试基本路径进化生成方法 - Google Patents

一种基于概率统计的软件测试基本路径进化生成方法 Download PDF

Info

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
Application number
CN202010127165.0A
Other languages
English (en)
Other versions
CN111338957A (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.)
Nanjing University
Mudanjiang Normal University
Original Assignee
Nanjing University
Mudanjiang Normal 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 Nanjing University, Mudanjiang Normal University filed Critical Nanjing University
Priority to CN202010127165.0A priority Critical patent/CN111338957B/zh
Publication of CN111338957A publication Critical patent/CN111338957A/zh
Application granted granted Critical
Publication of CN111338957B publication Critical patent/CN111338957B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic 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_1DD-图。确定DD-图中要考察的条件语句,定义对应的随机变量XY,插装生成新的被测程序PG_2
(2)随机生成测试数据运行PG_2,获得XY的样本数据集合。根据条件概率关系,构造XY的统计量q1q2,利用最大似然方法估计统计量的函数值。
如果条件语句存在相关性,则XY的样本值必然存在制约关系,并且满足如下XY之间的条件概率关系:
Figure DEST_PATH_IMAGE001
如果事件{ Y = 1 | X = 1 }发生的概率为q1,那么事件{ Y = 0 | X = 1 }发生的概率为1-q1
Figure 947109DEST_PATH_IMAGE002
如果事件{ Y = 1 | X = 0 }发生的概率为
Figure DEST_PATH_IMAGE003
,那么事件{ Y = 0 | X = 0 }发生的概率为1- q2。统计量估计值的计算公式如下:
Figure DEST_PATH_IMAGE004
其中,
Figure DEST_PATH_IMAGE005
Figure 113517DEST_PATH_IMAGE006
为统计量的估计值,N为样本容量,
Figure DEST_PATH_IMAGE007
(
Figure 17888DEST_PATH_IMAGE008
= 1 , 2 , … , N )和
Figure DEST_PATH_IMAGE009
(
Figure 543591DEST_PATH_IMAGE008
= 1 , 2 , … , N )为XY的样本值。
(3)依据统计量的估计值度量条件语句的相关性类型,设
Figure 420280DEST_PATH_IMAGE010
Figure DEST_PATH_IMAGE011
是被测程序的2个条 件语句,则语句组
Figure 367376DEST_PATH_IMAGE012
的相关性定义为:
Figure 696726DEST_PATH_IMAGE001
Figure 957943DEST_PATH_IMAGE010
取真分支时,
Figure 626822DEST_PATH_IMAGE011
必然取真分支,则称
Figure 744820DEST_PATH_IMAGE012
具有真-真相关性,记为T-T相关性;
Figure 561466DEST_PATH_IMAGE002
Figure 360795DEST_PATH_IMAGE010
取真分支时,
Figure 946497DEST_PATH_IMAGE011
必然取假分支,则称
Figure 438658DEST_PATH_IMAGE012
具有真-假相关性,记为T-F相关性;
Figure DEST_PATH_IMAGE013
Figure 804917DEST_PATH_IMAGE010
取假分支时,
Figure 142358DEST_PATH_IMAGE011
必然取真分支,则称
Figure 848146DEST_PATH_IMAGE012
具有假-真相关性,记为F-T相关性;
Figure 183312DEST_PATH_IMAGE014
Figure 968691DEST_PATH_IMAGE010
取假分支时,
Figure 109823DEST_PATH_IMAGE011
必然取假分支,则称
Figure 670117DEST_PATH_IMAGE012
具有假-假相关性,记为F-F相关性。
由条件概率关系以及条件语句间的相关性类型的定义可知,当
Figure 504081DEST_PATH_IMAGE005
= 1时,
Figure 517036DEST_PATH_IMAGE012
具有 T-T相关性;当
Figure 461858DEST_PATH_IMAGE005
= 0时,
Figure 876659DEST_PATH_IMAGE012
具有T-F相关性;当
Figure 881524DEST_PATH_IMAGE006
=1时,
Figure 381776DEST_PATH_IMAGE012
具有F-T相关性;当
Figure 864710DEST_PATH_IMAGE006
= 0时,
Figure 399596DEST_PATH_IMAGE012
具有F-F相关性。
(4)根据条件语句的相关性类型,定义被测程序中的互斥边关系,将条件语句
Figure 575363DEST_PATH_IMAGE010
的 真分支所对应的边记为
Figure DEST_PATH_IMAGE015
,假分支所对应的边记为
Figure 562910DEST_PATH_IMAGE016
,则互斥边关系的定义如下:
Figure 849535DEST_PATH_IMAGE001
Figure 973349DEST_PATH_IMAGE012
具有T-T相关性,则
Figure 320017DEST_PATH_IMAGE015
Figure DEST_PATH_IMAGE017
具有互斥边关系,记为
Figure 863036DEST_PATH_IMAGE018
Figure 77986DEST_PATH_IMAGE002
Figure 321886DEST_PATH_IMAGE012
具有T-F相关性,则
Figure 573875DEST_PATH_IMAGE015
Figure DEST_PATH_IMAGE019
具有互斥边关系,记为
Figure 598332DEST_PATH_IMAGE020
Figure 226759DEST_PATH_IMAGE013
Figure 590745DEST_PATH_IMAGE012
具有F-T相关性,则
Figure 13636DEST_PATH_IMAGE016
Figure 463072DEST_PATH_IMAGE017
具有互斥边关系,记为
Figure DEST_PATH_IMAGE021
Figure 19824DEST_PATH_IMAGE014
Figure 990314DEST_PATH_IMAGE012
具有F-F相关性,则
Figure 849686DEST_PATH_IMAGE016
Figure 520839DEST_PATH_IMAGE019
具有互斥边关系,记为
Figure 756648DEST_PATH_IMAGE022
(5)根据条件语句间的相关性类型和互斥边关系的定义,判定被测程序中的互斥边关系,输出被测程序的互斥边关系集合。
步骤2 遗传算法生成可行基本路径
(1)初始化种群,种群初始数据是由PG_2DD-图中的入口边和出口边构成,在进化过程中染色体的长度是可变的,依赖于其代表的生成路径的长度。种群中染色体用整型变量表示,采用十进制的编码方式代表进化生成的路径。
(2)个体评价,遗传算法中设计适应度函数的主要目的是用来评价个体的优劣程度。本发明中,适应度函数设计的依据是进化个体中所有的边均为相邻边时,其代表的生成路径为可行的基本路径。计算方法是根据个体的长度(即个体包含的边的数量)计算每条边的权重,所有相邻边的权重之和为适应度函数值。当生成路径包含的所有的边均为相邻边时,适应度函数达到最大值为1,对应的个体表示一条从入口边到出口边的完整路径,计算公式为:
Figure DEST_PATH_IMAGE023
其中,
Figure 891963DEST_PATH_IMAGE024
表示个体
Figure 922236DEST_PATH_IMAGE007
(
Figure DEST_PATH_IMAGE025
=
Figure 80685DEST_PATH_IMAGE026
)的适应度函数值;
Figure DEST_PATH_IMAGE027
表示
Figure 916923DEST_PATH_IMAGE007
相邻边的数量;
Figure 844428DEST_PATH_IMAGE028
表示
Figure 45602DEST_PATH_IMAGE007
的边
Figure DEST_PATH_IMAGE029
的权重;
Figure 753664DEST_PATH_IMAGE030
表示
Figure 3379DEST_PATH_IMAGE007
的长度(即
Figure 50970DEST_PATH_IMAGE007
中包含的边的数量)。
若适应度函数值不为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_1DD-图。确定DD-图中要考察的条件语句
Figure 423045DEST_PATH_IMAGE010
Figure 561946DEST_PATH_IMAGE011
,定义对应的随 机变量XYXY是2个服从(0,1)分布的随机变量,插装生成新的被测程序PG_2
(2)随机生成测试数据运行PG_2,获得XY的样本数据集合。根据条件概率关系, 构造XY的统计量q1q2,利用最大似然方法估计统计量的函数值
Figure DEST_PATH_IMAGE031
Figure 739986DEST_PATH_IMAGE006
如果条件语句存在相关性,则XY的样本值必然存在制约关系,并且满足如下XY之间的条件概率关系:
Figure 642083DEST_PATH_IMAGE001
如果事件{Y = 1 | X = 1}发生的概率为q1,那么事件{Y = 0 | X = 1}发生的概率为1-q1
Figure 185060DEST_PATH_IMAGE002
如果事件{Y = 1 | X = 0}发生的概率为
Figure 539818DEST_PATH_IMAGE003
,那么事件{Y = 0 | X = 0}发生的概率为1- q2。计算公式如下:
Figure 459232DEST_PATH_IMAGE004
其中,
Figure 215836DEST_PATH_IMAGE005
Figure 929714DEST_PATH_IMAGE006
为统计量的估计值,N为样本容量,
Figure 37347DEST_PATH_IMAGE007
(
Figure 494873DEST_PATH_IMAGE008
=
Figure 105983DEST_PATH_IMAGE032
)和
Figure 256342DEST_PATH_IMAGE009
(
Figure 523375DEST_PATH_IMAGE008
=
Figure 784592DEST_PATH_IMAGE032
)为XY的 样本值。
(3)依据
Figure 250209DEST_PATH_IMAGE005
Figure 571468DEST_PATH_IMAGE006
度量
Figure 382255DEST_PATH_IMAGE010
Figure 181584DEST_PATH_IMAGE011
的相关性类型。设
Figure 767286DEST_PATH_IMAGE010
Figure 259447DEST_PATH_IMAGE011
是被测程序的2个条件语句,则语 句组
Figure 297811DEST_PATH_IMAGE012
的相关性类型定义为:
Figure 900830DEST_PATH_IMAGE001
Figure 606618DEST_PATH_IMAGE010
取真分支时,
Figure 4101DEST_PATH_IMAGE011
必然取真分支,则称
Figure 795340DEST_PATH_IMAGE012
具有真-真相 关性,记为T-T相关性;
Figure 936471DEST_PATH_IMAGE002
Figure 496766DEST_PATH_IMAGE010
取真分支时,
Figure 2833DEST_PATH_IMAGE011
必然取假分支,则称
Figure 281368DEST_PATH_IMAGE012
具有真-假相关性,记为 T-F相关性;
Figure 288507DEST_PATH_IMAGE013
Figure 703308DEST_PATH_IMAGE010
取假分支时,
Figure 708173DEST_PATH_IMAGE011
必然取真分支,则称
Figure 214284DEST_PATH_IMAGE012
具有假-真相关性,记为F-T相关 性;
Figure 697218DEST_PATH_IMAGE014
Figure 232104DEST_PATH_IMAGE010
取假分支时,
Figure 142291DEST_PATH_IMAGE011
必然取假分支,则称
Figure 129839DEST_PATH_IMAGE012
具有假-假相关性,记为F-F相关性。
由条件概率关系以及条件语句间的相关性类型的定义可知,当
Figure 416464DEST_PATH_IMAGE005
=1时,
Figure 743540DEST_PATH_IMAGE012
具有T- T相关性;当
Figure 90208DEST_PATH_IMAGE005
=0时,
Figure 565051DEST_PATH_IMAGE012
具有T-F相关性;当
Figure 452105DEST_PATH_IMAGE006
=1时,
Figure 696004DEST_PATH_IMAGE012
具有F-T相关性;当
Figure 151256DEST_PATH_IMAGE006
=0时,
Figure 113396DEST_PATH_IMAGE012
具有 F-F相关性。
(4)根据条件语句间的相关性类型,定义被测程序中的互斥边关系。将条件语句
Figure 741824DEST_PATH_IMAGE010
的真分支所对应的边记为
Figure 840230DEST_PATH_IMAGE015
,假分支所对应的边记为
Figure 528700DEST_PATH_IMAGE016
。根据条件语句的相关性可知,若
Figure 978136DEST_PATH_IMAGE012
具有T-T相关性,即如果执行
Figure 162253DEST_PATH_IMAGE010
的真分支就必然执行
Figure 380745DEST_PATH_IMAGE011
的真分支,而不能执行
Figure 240116DEST_PATH_IMAGE011
的假分 支,也就是说,在DD-图的可行路径中,如果含有
Figure 911269DEST_PATH_IMAGE010
真分支对应的边就不能含有
Figure 147079DEST_PATH_IMAGE011
假分支对应 的边,则
Figure 220077DEST_PATH_IMAGE015
Figure 250350DEST_PATH_IMAGE017
为一组相互排斥的边,同时出现
Figure 408799DEST_PATH_IMAGE015
Figure 917140DEST_PATH_IMAGE017
的路径为不可行路径。由此给出如下四 组互斥边的定义:
Figure 110224DEST_PATH_IMAGE001
Figure 311398DEST_PATH_IMAGE012
具有T-T相关性,则
Figure 957143DEST_PATH_IMAGE015
Figure 269176DEST_PATH_IMAGE017
具有互斥边关系,记为
Figure 316766DEST_PATH_IMAGE018
Figure 688842DEST_PATH_IMAGE002
Figure 821883DEST_PATH_IMAGE012
具有T-F相关性,则
Figure 943466DEST_PATH_IMAGE015
Figure 845563DEST_PATH_IMAGE019
具有互斥边关系,记为
Figure 388540DEST_PATH_IMAGE020
Figure 743298DEST_PATH_IMAGE013
Figure 662712DEST_PATH_IMAGE012
具有F-T相关性,则
Figure 419316DEST_PATH_IMAGE016
Figure 133194DEST_PATH_IMAGE017
具 有互斥边关系,记为
Figure 240827DEST_PATH_IMAGE021
Figure 698353DEST_PATH_IMAGE014
Figure 309463DEST_PATH_IMAGE012
具有F-F相关性,则
Figure 459822DEST_PATH_IMAGE016
Figure 789172DEST_PATH_IMAGE019
具有互斥边关系,记为
Figure 722493DEST_PATH_IMAGE022
(5)根据条件语句间的相关性类型和互斥边关系的定义,判定被测程序中的互斥边关系,输出被测程序的互斥边关系集合set_execlusion_edge_ PG_2
进一步,其中上述步骤1的具体步骤如下:
步骤1-1:起始状态;
步骤1-2:输入被测程序PG={set_sequence_stmt, set_condition_stmt, set_ loop_stmt},其中set_sequence_stmtset_condition_stmtset_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_1DD-图decision_to_decision_graph
步骤1-10:确定要考察的条件语句condition_stmt1condition_stmt2,定义对应的随机变量XY
步骤1-11:插装生成新的被测程序PG_2= {set_sequence_stmt, set_condition_ stmt};
步骤1-12:随机生成测试数据集set_random_data运行PG_2,获得随机变量的样本数据集合set_sample_data
步骤1-13: 根据条件概率关系,构造XY的统计量statistic_q1和statistic_ q2
步骤1-14:利用最大似然方法估计统计量的函数值statistic_estimate_value_ q1statistic_estimate_value_q2
步骤1-15:依据统计量的估计值度量condition_stmt1condition_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_2DD-图中的入口边和出口边构成,在进化过程中染色体的长度是可变的,依赖于其代表的生成路径的长度。种群个体用整型变量表示,采用十进制的编码方式代表进化生成的路径。
(2)个体评价,适应度函数用来评价个体的优劣程度,进化生成的个体代表被测程序的一条路径,对应DD-图中的边,当所有的边均相邻时,表示生成的路径为一条可穿越被测程序的完整路径。本发明设计适应度函数的依据是进化个体中所有的边均为相邻边时,其代表的生成路径为可行的基本路径。计算方法是根据个体的长度计算每条边的权重,所有相邻的边的权重之和为适应度函数值。当生成路径包含的所有的边均为相邻边时,适应度函数达到最大值为1,对应的个体表示一条从入口边到出口边的完整路径,适应度函数的计算公式如下:
Figure 453688DEST_PATH_IMAGE023
其中,
Figure 774948DEST_PATH_IMAGE024
表示个体
Figure 326015DEST_PATH_IMAGE007
(
Figure 447381DEST_PATH_IMAGE008
=
Figure 970766DEST_PATH_IMAGE026
)的适应度函数值;
Figure 197348DEST_PATH_IMAGE027
表示
Figure 501290DEST_PATH_IMAGE007
相邻边的数量;
Figure 104310DEST_PATH_IMAGE028
表示
Figure 544519DEST_PATH_IMAGE007
的边
Figure 207581DEST_PATH_IMAGE029
的权重;
Figure 733240DEST_PATH_IMAGE030
表示
Figure 139951DEST_PATH_IMAGE007
的长度(即
Figure 700245DEST_PATH_IMAGE007
中包含的边的数量)。
若适应度函数值不为1,并且没有达到最大迭代次数,则判断进化个体是否含有互斥边,含有互斥边的个体代表的是不可行路径,在进化过程中将其删除,重复上述过程,直到种群数据完成互斥边的遍历;若适应度函数值为1,则个体代表的进化路径为生成的可行路径,将其存入可行的路径集合。
(3)选择、交叉、变异和繁殖,若种群数据完成互斥边的遍历,进行遗传算法的选 择、交叉、变异和繁殖操作。选择操作,采用轮盘赌的方法选择当前种群适应度较高的个体 遗传到下一代种群。交叉操作,采用单点交叉的方法交换两个配对个体的部分基因座。变异 操作,采用基因位变异的方法对个体某一基因座上的基因以一较小的概率进行改变。繁殖 操作,主要是为了实现扩展个体使其代表完整的路径,采用在个体的某一基因座位置后插 入新的基因,实现个体的扩展,操作过程如下:
Figure 268630DEST_PATH_IMAGE001
随机生成当前种群中个体的繁殖点位置
Figure DEST_PATH_IMAGE033
Figure 609481DEST_PATH_IMAGE002
确定与繁殖点相邻的基因,并随机选择一条边作为繁殖基因;
Figure 554304DEST_PATH_IMAGE013
将繁殖基因插入繁殖点 位置后,作为基因座
Figure 31421DEST_PATH_IMAGE034
对应的基因,增加个体的长度。重复遗传算法的上述进化过程,直 到个体的适应度函数为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_dataset_ 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,对应的个体表示一条从入口边到出口边的完整路径,计算公式为:
Figure FDA0004007624720000011
其中,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,利用最大似然方法估计统计量的函数值
Figure FDA0004007624720000021
和/>
Figure FDA0004007624720000022
依据
Figure FDA0004007624720000023
和/>
Figure FDA0004007624720000024
度量ni和nj的相关性类型;由条件概率关系以及条件语句间的相关性类型可知,当/>
Figure FDA0004007624720000031
时,(ni,nj)具有T-T相关性;当/>
Figure FDA0004007624720000032
时,(ni,nj)具有T-F相关性;当/>
Figure FDA0004007624720000033
时,(ni,nj)具有F-T相关性;当/>
Figure FDA0004007624720000034
时,(ni,nj)具有F-F相关性;
根据条件语句间的相关性类型,定义被测程序中的互斥边关系;将条件语句ni的真分支所对应的边记为
Figure FDA0004007624720000035
假分支所对应的边记为/>
Figure FDA0004007624720000036
则互斥边的定义如下:①若(ni,nj)具有T-T相关性,则/>
Figure FDA0004007624720000037
和/>
Figure FDA0004007624720000038
具有互斥边关系,记为/>
Figure FDA0004007624720000039
②若(ni,nj)具有T-F相关性,则/>
Figure FDA00040076247200000310
和/>
Figure FDA00040076247200000311
具有互斥边关系,记为/>
Figure FDA00040076247200000312
③若(ni,nj)具有F-T相关性,则/>
Figure FDA00040076247200000313
和/>
Figure FDA00040076247200000314
具有互斥边关系,记为
Figure FDA00040076247200000315
④若(ni,nj)具有F-F相关性,则/>
Figure FDA00040076247200000316
和/>
Figure FDA00040076247200000317
具有互斥边关系,记为/>
Figure FDA00040076247200000318
根据条件语句间的相关性类型和互斥边的关系,判定被测程序中的互斥边关系,输出被测程序的互斥边关系集合set_execlusion_edge_PG_2。
CN202010127165.0A 2020-02-28 2020-02-28 一种基于概率统计的软件测试基本路径进化生成方法 Active CN111338957B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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