CN111459790A - 基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法 - Google Patents
基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法 Download PDFInfo
- Publication number
- CN111459790A CN111459790A CN201911343498.0A CN201911343498A CN111459790A CN 111459790 A CN111459790 A CN 111459790A CN 201911343498 A CN201911343498 A CN 201911343498A CN 111459790 A CN111459790 A CN 111459790A
- Authority
- CN
- China
- Prior art keywords
- test
- branches
- test data
- branch
- test suite
- 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/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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Molecular Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computing Systems (AREA)
- Genetics & Genomics (AREA)
- Physiology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公布了一种基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法,旨在针对消息传递接口程序高效生成覆盖所有分支的测试套件。具体步骤如下:(1),基于收集覆盖信息的探针,定义最小归一化分支距离;(2),基于定义的最小归一化分支距离,设计出目标函数;(3),使用遗传算法生成进化个体,并基于设计的目标函数,计算这些个体的目标函数值,直到生成覆盖所有分支的测试套件或达到最大进化代数,终止算法。
Description
技术领域
本专利属于软件测试领域,具体涉及一种基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法,可用于软件测试中生成覆盖所有分支的测试套件。
背景技术
软件测试是一种确保软件质量和可靠性的重要方法。软件测试中,生成一组测试数据(即测试套件),以满足一个特定的测试准则,是一项具有挑战性的任务。此外,已有统计结果表明,软件测试占整个软件开发成本的50%以上。幸运的是,自动测试生成方法可显著减少软件测试代价和成本,并引起了学术界的广泛关注。
消息传递接口已成为实际上的并行编程标准,用于开发基于消息传递的并行程序,其目的是为用户提供一个实际可用的、可移植的、高效的和灵活的消息传递库。消息传递接口以语言独立的形式定义这个接口库,并提供了与C、FORTRAN和Python语言的绑定。这个定义不包含任何专用于某个特别的制造商、操作系统或硬件的特性。由于这个原因,消息传递接口被并行计算界广泛的接受与应用。鉴于此,对消息传递接口程序进行结构覆盖测试,以生成满足特定覆盖准则的测试套件,是很有必要的。
目前,存在多种覆盖准则,包括语句覆盖,分支覆盖,路径覆盖。根据已有的测试经验,分支覆盖是结构测试中最具成效的方法。与分支覆盖相比,若被测程序中存在循环语句,则完全的路径覆盖测试是不切实际的。此外,语句覆盖无法检测程序中存在的错误条件。因此,针对结构测试,大多数研究采用分支覆盖作为覆盖准则。
针对分支覆盖测试,测试套件生成方法得以提出,该方法能够高效生成覆盖程序所有分支的测试套件。为提高测试生成效率,学者们提出了一种动态多目标排序算法,该算法作为多目标求解器,用于生成满足分支覆盖准则的测试套件。此外,通过深度分析,学者们进一步验证了测试套件生成方法的有效性。随后,针对人工生成测试数据等不切实际的问题,模因蚁群优化算法被用于生成满足分支覆盖准则的测试套件。
然而,以上的研究成果主要适用于串行程序。此外,考虑到遗传算法具有原理和操作简单、通用性强、不受限制条件的约束,且具有隐含并行性和全局解搜索能力,已经被广泛应用于软件测试中,并被验证能够高效地生成测试数据。基于以上分析,为覆盖消息传递接口程序的分支,本文提出一种基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法,实现以降低测试代价自动生成测试套件。
发明内容
本发明首先通过程序静态分析将用于收集覆盖信息的探针插入到所有分支中,并基于这些探针,定义最小归一化分支距离;然后,基于定义的最小归一化分支距离,设计出目标函数;最后,使用遗传算法生成进化个体,并计算这些个体的目标函数值,基于计算的目标函数值,进化生成覆盖所有分支的测试套件。
本发明所要解决的技术问题:克服现有方法的不足,提供一种测试套件自动生成方法,用以提高消息传递接口程序分支覆盖测试套件的生成效率,降低测试代价。
本发明的技术方案:提出了一种基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法,其特征在于如下步骤:
步骤1:定义最小归一化分支距离
记一个消息传递接口程序为P={p0,p1,...,pm-1},其中,pi(i=0,1,...,m-1)表示P中的第i个进程,m表示进程数。将用于收集覆盖信息的探针插入到进程pi的所有分支中,并基于这些探针,定义如式(1)所示的最小归一化分支距离。
上式中,表示进程pi中第j个分支,T={t1,t2,...,tN}表示包含N个测试数据tk(k=1,2,...,N)的候选测试套件(即为一个进化个体),用于覆盖进程pi中所有分支,以及表示T覆盖的最小分支距离。
步骤2:设计目标函数
基于公式(1),进程pi中的分支总数,以及候选测试套件T实际覆盖的进程pi中分支数,设计如公式(2)所示的目标函数,用于评价种群中个体的目标函数值。
步骤3:使用遗传算法
使用遗传算法生成进化个体,并基于设计的目标函数,计算这些个体的目标函数值,以此引导后续种群按照如下操作进行选择、交叉及变异。
选择基于式(2),可知该测试套件生成问题为最小优化问题,因此,这里选择较小目标函数值对应的进化个体。
交叉鉴于每一进化个体由N个测试数据组成,基于两个父进化个体P1与P2,这里给出生成两个后代O1和O2的步骤。生成介于[0,1]之间的伪随机数α,如果α小于交叉概率,那么执行以下操作:一方面,生成介于[0,1]之间的伪随机数λ,并将P1中前λ·N个测试数据,以及P2中最后(1-λ)·N个测试数据遗传给O1;另一方面,将P2中前λ·N个测试数据,以及P1中最后(1-λ)·N个测试数据遗传给O2。
变异针对进化个体包含的每一测试数据,生成介于[0,1]之间的伪随机数β,如果β小于变异概率,那么任选该测试数据的一个基因位,并反转该位值。
步骤4:生成测试套件
使用遗传算法进化生成测试套件的过程中,当目标函数值为0时,对应的进化个体即为覆盖消息传递接口程序所有分支的测试套件。当覆盖所有分支的测试套件已生成或是达到设定的最大进化代数时,算法终止,输出结果。
与现有技术相比,本发明的有益效果是:
1、首次提出了适用于消息传递接口程序的测试套件自动生成方法;
2、充分考虑了消息传递接口程序由多个进程组成的特性,特别是每一进程均包含若干数目的分支;
3、执行一次算法即可生成覆盖所有分支的测试套件,提高了测试生成效率。
附图说明
图1是本发明的总流程图;
图2是收集某一进程覆盖信息探针的程序代码;
图3是计算最小化分支距离与目标函数值的程序代码;
图4是定义种群的程序代码;
图5是交叉与变异遗传运算的程序代码;
具体实施方式
该部分使用C/C++语言编写程序,实现了本发明提出的方法,并结合具体附图和实例对其进行详细说明。
图1为本发明提出的一种基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法的流程图。给出所提方法的具体实施步骤之前,这里定义如表示1所示的全局变量。
所提方法的具体实施步骤如下:
步骤1:定义最小归一化分支距离
为收集覆盖进程pi中分支的信息,需插入图2所示的探针。图2中,数组flagtrue用于存储真分支的覆盖标志,其中,覆盖为1,反之为0;数组flagfalse用于存储假分支的覆盖标志,取值同上;数组branchtrue用于存储与真分支的距离,通过表2计算;数组branchfalse用于存储与假分支的距离,通过表2计算。
表2几种分支谓词的分支距离
基于插入进程pi中的探针,定义最小归一化分支距离,其代码实现如图3中第10行至第68行所示。图3中第10与第50行对应于公式(1)中如果覆盖了分支;第30与第60行对应于公式(1)中如果未覆盖分支,且其相反分支被覆盖两次以上;第34与第64行对应于公式(1)中如果未覆盖分支,且其相反分支被覆盖低于两次。
步骤2:设计目标函数
公式(2)即为目标函数,其代码实现如图3所示。为计算目标函数值,需计算以下3个参数:(1)消息传递接口程序进程pi中包含的分支数Mi;(2)被进化个体(即候选测试套件)覆盖的进程pi中分支数(3)进程pi中每一分支的最小归一化分支距离
关于参数(1),这里通过人工检查的方式,确定进程pi中实际包含的分支总数Mi。关于参数(2)的计算,其代码实现如图3中第19行与第49行所示。此外,可通过如图3中第73行,计算出参数(3)。
步骤3:使用遗传算法
使用遗传算法生成进化个体之前,需使用结构体struct定义个体individual,如图4所示。图4中,每一个体均由indsize个测试数据,该个体即为一个候选测试套件T。实际定义种群时,采用命令struct individual population[popsize]。
进化种群的过程中,使用如图5所示的交叉与变异函数更新种群。
步骤4:生成测试套件
使用遗传算法进化生成测试套件的过程中,当如图3所示的目标函数值为0时,对应的进化个体即为覆盖消息传递接口程序所有分支的测试套件,此时或是达到设定的最大进化代数MAXGEN时,算法终止,输出结果。
接下来以一个消息传递并行程序为例,说明本发明所提方法的有效性。
所选程序包含3个输入,4个进程,19个通信语句,输入范围[0,64]。遗传算法采用二进制编码,单点交叉,交叉概率0.9,单点变异,变异概率0.1,轮盘赌选择,最大进化MAXGEN=1200。种群规模popsize=10,进化个体尺寸indsize=3。其余参数设置如下表所示。
将所提方法与随机方法对比,使用随机方法生成测试套件的过程中,随机采样MAXGEN×popsize个候选测试套件,并逐一以采样的候选测试套件执行消息传递接口程序。在相同环境下,分3批次,每批次执行10次本发明所提方法与对比方法,并计算生成测试套件的成功率以及时间消耗。其中,成功率反映有效性,是指成功生成覆盖所有分支测试套件的运行次数与运行总次数的比;时间消耗反映效率,是指生成测试套件的时间,或者未生成测试套件时,达到最大进化代数的时间。实验结果如下表所示。
由表可知,本发明所提方法能够高效生成覆盖消息传递接口程序所有分支的测试套件。
Claims (1)
1.基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法,其特征在于,该方法包括如下步骤:
步骤1:记一个消息传递接口程序为P={p0,p1,...,pm-1},其中,pi(i=0,1,...,m-1)表示P中的第i个进程,m表示进程数。将用于收集覆盖信息的探针插入到进程pi的所有分支中,并基于这些探针,定义如式(1)所示的最小归一化分支距离。
上式中,表示进程pi中第j个分支,T={t1,t2,...,tN}表示包含N个测试数据tk(k=1,2,...,N)的候选测试套件(即一个进化个体),用于覆盖进程pi中所有分支,以及表示T覆盖的最小分支距离。
步骤2:基于公式(1),进程pi中的分支总数,以及候选测试套件T实际覆盖的进程pi中分支数,设计如公式(2)所示的目标函数,用于评价种群中个体的目标函数值。
步骤3:使用遗传算法生成进化个体,并基于设计的目标函数,计算这些个体的目标函数值,以此引导后续种群按照如下操作进行交叉与变异。
交叉鉴于每一进化个体由N个测试数据组成,基于两个父进化个体P1与P2,这里给出生成两个后代O1和O2的步骤。生成介于[0,1]之间的伪随机数α,如果α小于交叉概率,那么执行以下操作:一方面,生成介于[0,1]之间的伪随机数λ,并将P1中前λ·N个测试数据,以及P2中最后(1-λ)·N个测试数据遗传给O1;另一方面,将P2中前λ·N个测试数据,以及P1中最后(1-λ)·N个测试数据遗传给O2。
变异针对进化个体包含的每一测试数据,生成介于[0,1]之间的伪随机数β,如果β小于变异概率,那么任选该测试数据的一个基因位,并反转该位值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911343498.0A CN111459790B (zh) | 2019-12-24 | 2019-12-24 | 基于遗传算法的消息传递接口程序分支覆盖测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911343498.0A CN111459790B (zh) | 2019-12-24 | 2019-12-24 | 基于遗传算法的消息传递接口程序分支覆盖测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459790A true CN111459790A (zh) | 2020-07-28 |
CN111459790B CN111459790B (zh) | 2023-07-25 |
Family
ID=71682246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911343498.0A Active CN111459790B (zh) | 2019-12-24 | 2019-12-24 | 基于遗传算法的消息传递接口程序分支覆盖测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459790B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112258486A (zh) * | 2020-10-28 | 2021-01-22 | 汕头大学 | 基于进化神经架构搜索的眼底图像视网膜血管分割方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930272A (zh) * | 2016-04-22 | 2016-09-07 | 中国矿业大学 | 基于重要语句的分支覆盖测试数据生成方法 |
-
2019
- 2019-12-24 CN CN201911343498.0A patent/CN111459790B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930272A (zh) * | 2016-04-22 | 2016-09-07 | 中国矿业大学 | 基于重要语句的分支覆盖测试数据生成方法 |
Non-Patent Citations (4)
Title |
---|
冯俊池;于磊;: "测试数据生成中遗传算法的改进" * |
巩敦卫;张婉秋;: "基于自适应分组的大规模路径覆盖测试数据进化生成" * |
张岩;巩敦卫;: "基于稀有数据扑捉的路径覆盖测试数据进化生成方法" * |
田甜;巩敦卫;: "消息传递并行程序路径覆盖测试数据生成问题的模型及其进化求解方法" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112258486A (zh) * | 2020-10-28 | 2021-01-22 | 汕头大学 | 基于进化神经架构搜索的眼底图像视网膜血管分割方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111459790B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Brieuc et al. | A practical introduction to Random Forest for genetic association studies in ecology and evolution | |
CN108595341B (zh) | 测试用例自动生成方法及系统 | |
CN111240995B (zh) | 结合关键点概率与路径相似度的多路径覆盖方法及系统 | |
CN112699045A (zh) | 一种基于多种群遗传算法的软件测试用例生成方法 | |
Zhao et al. | Deep neural network based on android mobile malware detection system using opcode sequences | |
Mishra et al. | An approach for mutation testing using elitist genetic algorithm | |
US20040243354A1 (en) | Systems and methods for inferring biological networks | |
Wang et al. | Automating reinforcement learning architecture design for code optimization | |
CN105930272B (zh) | 基于重要语句的分支覆盖测试数据生成方法 | |
CN111459790A (zh) | 基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法 | |
CN116307115A (zh) | 一种基于改进Transformer模型的二次供水用水量预测方法 | |
Ghiduk et al. | Using genetic algorithms and dominance concepts for generating reduced test data | |
Liang et al. | Preference-driven Pareto front exploitation for bloat control in genetic programming | |
CN117453539A (zh) | 一种基于大语言模型赋能的编译器缺陷定位方法 | |
CN115481790B (zh) | 炭基地质催化材料固定镉协同甲烷减排预测方法、装置及介质 | |
CN110069347A (zh) | 一种基于过程重要度的线程划分方法 | |
Gaudesi et al. | An efficient distance metric for linear genetic programming | |
Nguyen et al. | Detecting differentially expressed genes with RNA-seq data using backward selection to account for the effects of relevant covariates | |
Feyzi et al. | Bayes‐TDG: effective test data generation using Bayesian belief network: toward failure‐detection effectiveness and maximum coverage | |
Huang et al. | The Applied Research of Improved Genetic Algorithm in Data Automatic Generation of Software Test | |
Teplinskiy et al. | Optimization problems in the technological-oriented parallel simulation environment | |
Ye et al. | A software test cases automated generation algorithm based on immune principles | |
CN116306226B (zh) | 一种燃料电池性能退化预测方法 | |
Sun et al. | Evolutionary generation of test suites for multi-path coverage of MPI programs with non-determinism | |
Madsen et al. | Using genetic algorithms on groundwater modeling problems in a consulting setting |
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 |