CN111563043B - 一种并发程序测试噪声注入优化方法 - Google Patents

一种并发程序测试噪声注入优化方法 Download PDF

Info

Publication number
CN111563043B
CN111563043B CN202010390803.8A CN202010390803A CN111563043B CN 111563043 B CN111563043 B CN 111563043B CN 202010390803 A CN202010390803 A CN 202010390803A CN 111563043 B CN111563043 B CN 111563043B
Authority
CN
China
Prior art keywords
noise injection
program
noise
concurrent
iteration
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
CN202010390803.8A
Other languages
English (en)
Other versions
CN111563043A (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.)
Xian University of Posts and Telecommunications
Original Assignee
Xian University of Posts and Telecommunications
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 Xian University of Posts and Telecommunications filed Critical Xian University of Posts and Telecommunications
Priority to CN202010390803.8A priority Critical patent/CN111563043B/zh
Publication of CN111563043A publication Critical patent/CN111563043A/zh
Application granted granted Critical
Publication of CN111563043B publication Critical patent/CN111563043B/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
    • 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)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physiology (AREA)
  • Genetics & Genomics (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明针对并发程序测试中噪声注入优化问题,公开了一种并发程序测试噪声注入优化方法,属于并发程序测试领域。该方法首先对并发程序测试噪声注入方案个体进行编码,随机生成初始种群,并以程序运行时出现并发错误的次数作为适应度函数;然后,通过变异、交叉以及选择操作生成新一代种群,使用适应度函数对个体进行评价,记录迭代中的最大适应值及其对应的个体;最后当迭代次数达到最大迭代次数时,最大适应值对应的个体是最优噪声注入方案。本发明提供一种收敛速度快、稳定性好的并发程序测试噪声注入优化方法,有助于在并发程序测试过程中尽早发现程序错误,降低测试成本。

Description

一种并发程序测试噪声注入优化方法
技术领域
本发明属于软件测试技术领域,尤其是基于噪声注入的并发程序测试领域,具体涉及到一种并发程序噪声注入方案优化方法。
背景技术
随着计算机的不断普及和发展,计算机技术逐渐成为现代社会发展的核心技术之一,对于推动社会进步、提高国民经济具有重要作用。在当今多核时代,为了提高运行速度,软件必须转向并发模式。多核处理器进入普通计算机加速了并发程序的广泛应用,互联网以及服务器端并发编程日益普及,并发程序测试分析成为并发程序研究的热点。
由于并发调度的不确定性,并发程序输入空间非常庞大,同时并发程序的的调度机制为程序的执行引入了不确定性,每种可能的执行称为一个交织,可能的交织集是巨大的,穷举遍历它们是不实际的。同时这些交织中只有少数实际引发并发错误,因此,穷举交织测试并发程序引发并发错误的可能性非常低。数据竞争和死锁等错误很难发现,分析代价高昂,而且经常发生错误逃逸。并发调度程序的调度策略,例如JVM,通常是确定性的,多次执行相同的测试将创建相同的交织集,很难发现新的并发错误。检测并发错误通常耗时很长并且在不同的环境条件下运行,因此,并发程序测试大多是不可重复的。
为了检测到尽可能多的并发错误,如何创造条件激发尽可能多的并发交织是并发程序测试的关键,噪声是最主要的并发程序调度的不确定性因素,国内外很多并发程序的学者致力于基于噪声的并发程序测试的并发交织产生的研究,以此来加速并发错误的发生,提高并发程序测试的效率。噪声注入技术本质上是对给定的程序,选择最佳的噪声注入方案进行并发测试,即在合适的位置注入特定类型的噪声以加速并发错误的发生,是一种典型的最优化问题。为此,本发明采用差分进化的思想,提出了一种并发程序测试噪声注入优化方法,该方法可以提高测试效率,有助于并发程序错误的尽早发现。
发明内容
噪声注入技术是指在并发程序中插入噪声语句,干扰并发程序线程调度,强制程序执行上下文切换,即CPU从一个线程切换到另一个线程,以产生更多可能的线程交织,增加并发错误出现的概率。在使用噪声注入技术检测并发程序错误工作中,关键问题是对噪声注入方案进行优化。给定待测并发程序及其程序位置和目标函数,目标是寻找噪声注入方案的近似最优解使得目标函数取得近似最优值,这里的噪声注入方案包括程序位置、是否注入噪声、注入的噪声类型。
本发明的技术方案为:一种并发程序测试噪声注入优化方法,如图1所示,该方法的特征包括以下步骤:
步骤一:编码;用L={1,2,...,i,...,n}表示待测并发程序的n个程序位置,其中i∈L,1≤i≤n,用Inject∈{0,1,2,3}表示某个程序位置是否注入噪声及注入的噪声类型,Inject=0时在该程序位置不注入噪声语句,Inject=1时在该程序位置注入噪声语句sleep(),Inject=2时在该程序位置注入噪声语句wait(),Inject=3时在该程序位置注入噪声语句yield(),将L和Inject作笛卡尔积,作为配置池,并发程序测试噪声注入优化的目标是搜索出最可能引发并发程序错误的噪声注入方案:程序位置及每个程序位置注入的噪声类型,使得被测程序中潜在的并发错误最大化显现;
步骤二:构造适应度;针对每一种噪声注入方案,根据噪声注入方案对被测程序进行噪声注入,采用并发程序在运行过程中出现并发错误的次数NE来作为评价噪声注入方案的优劣的适应度f,适应度值越高,表示该噪声注入方案效果越好;
步骤三:种群初始化;种群是噪声注入方案组成的集合,个体表示一种噪声注入方案,设定种群规模N,变异概率F,交叉概率CR以及最大迭代次数r,在解空间内随机的产生N个噪声注入方案作为初始种群,每个个体是一个n维向量,表示为Xi(0)=Xi,1(0),Xi,2(0),...,Xi,n(0),i=1,2,3,...,N,其中Xi(0)表示第0代的第i个个体,Xi,j(0)表示第0代第i个个体的第j个基因,n是个体编码的长度即程序的位置数量,令迭代次数g=1,开始迭代;
步骤四:个体变异;在第g次迭代中,对于个体Xi(g)=Xi,1(g),Xi,2(g),..,Xi,n(g),从种群中随机选择3个个体Xp1(g),Xp2(g),Xp3(g)且p1≠p2≠p3,生成变异向量Hi(g),其中
Figure BDA0002485483900000021
q1=|f(Xp1(g))|/q′,q2=|f(Xp2(g))|/q′,q3=|f(Xp3(g))|/q′,q′=|f(Xp1(g))|+|f(Xp2(g))|+|f(Xp3(g))|;
步骤五:个体交叉;在第g次迭代中,对于每个个体和它所生成的变异向量进行交叉,即对每一个等位基因按照一定的概率选择变异向量来生成交叉向量Vi(g),否则为原向量,Vi(g)的每一个分量的计算方式为
Figure BDA0002485483900000022
其中r为在[0,1]区间产生的一个随机数,CR为交叉概率;
步骤六:个体选择;在第g次迭代中,根据适应度函数的值从每个个体的交叉向量和原向量中选择出适应度更高的作为下一代,表示为
Figure BDA0002485483900000031
步骤七:记录本次迭代后的最大适应值及其对应的个体;
步骤八:判断迭代终止条件,迭代终止条件是当前迭代次数大于最大迭代次数MAX,如果终止条件成立,那么此时最大适应值个体对应的噪声注入方案为最优噪声注入方案,输出该方案并停止;否则,令迭代次数g=g+1,返回步骤四。
发明中用于噪声注入方案优化的差分进化方法能够在收敛速度和鲁棒性之间取得更好的折衷,既提高了寻优过程中的收敛速度,又增加了稳定性;如图2和图3所示实验结果显示:本方法生成最优噪声注入方案结果的收敛速度快、稳定性好,能提高测试效率,节约测试成本,及早发现并发程序错误。
附图说明
附图1为一种噪声注入方案优化方法的流程图。
附图2为噪声注入方案优化不同方法的平均适应值变化对比图。
附图3为噪声注入方案优化不同方法的最大适应值箱体图。
具体实施方式
以经典基准程序“Airlines”的噪声注入方案优化为例,结合附图1对本发明提出的一种噪声注入方案优化方法的具体实施方式进行说明。
步骤一:编码;用L={1,2,...,i,...,3054}表示待测程序的3054个程序位置集,其中i∈L,1≤i≤3054,用Inject∈{0,1,2,3}表示某个程序位置是否注入噪声及注入的噪声类型,Inject=0时在该程序位置不注入噪声语句,Inject=1时在该程序位置注入噪声语句sleep(),Inject=2时在该程序位置注入噪声语句wait(),Inject=3时在该程序位置注入噪声语句yield();
步骤二:构造适应度;针对每一种噪声注入方案,根据噪声注入方案对被测程序进行噪声注入,采用并发程序在运行过程中出现并发错误的次数NE来作为评价噪声注入方案的优劣的适应度f,适应度值越高,表示该噪声注入方案效果越好;
步骤三:种群初始化;种群是噪声注入方案组成的集合,个体表示一种噪声注入方案,设定种群规模N为100,变异概率F为0.5,交叉概率CR为0.5以及最大迭代次数r为100,在解空间内随机的产生100个噪声注入方案作为初始种群,程序的位置数量为3054,每个个体是一个3054维向量,表示为Xi(0)=Xi,1(0),Xi,2(0),...,Xi,3054(0),i=1,2,3,...,100,其中Xi(0)表示第0代的第i个个体,Xi,j(0)表示第0代第i个个体的第j个基因,令迭代次数g=1,开始迭代;
步骤四:个体变异;在第g次迭代中,对于个体Xi(g)=Xi,1(g),Xi,2(g),..,Xi,m(g),从种群中随机选择3个个体Xp1(g),Xp2(g),Xp3(g)且p1≠p2≠p3,生成变异向量Hi(g),其中
Figure BDA0002485483900000041
q1=|f(Xp1(g))|/q′,q2=|f(Xp2(g))|/q′,q3=|f(Xp3(g))|/q′,q′=|f(Xp1(g))|+|f(Xp2(g))|+|f(Xp3(g))|;
步骤五:个体交叉;在第g次迭代中,对于每个个体和它所生成的变异向量进行交叉,即对每一个等位基因按照一定的概率选择变异向量来生成交叉向量Vi(g),否则为原向量,Vi(g)的每一个分量的计算方式为
Figure BDA0002485483900000042
其中r为在[0,1]区间产生的一个随机数,CR为交叉概率;
步骤六:个体选择;在第g次迭代中,根据适应度函数的值从每个个体的交叉向量和原向量中选择出适应度更高的作为下一代,表示为
Figure BDA0002485483900000043
步骤七:记录本次迭代后的最大适应值及其对应的个体;
步骤八:判断迭代终止条件,本方法中的迭代终止条件是当前迭代次数大于最大迭代次数MAX=100,如果终止条件成立,那么此时最大适应值个体对应的噪声注入方案为最优噪声注入方案,输出该方案并停止迭代;否则,令迭代次数g=g+1,返回步骤四。例如,第100次迭代后,种群中最大适应值为20,输出的最优噪声注入方案为(96,1)(254,2)(1345,1)(2547,3)(2865,3)。
通过以上过程可以实现用于并发程序测试的噪声注入优化,针对基准程序“Airlines”,分别将传统遗传算法和本发明中的方法各执行20次。图2是20次实验中,100次迭代的适应值平均值随迭代次数变化图。从图2可以看出,迭代过程中,本方法的适应值要大于传统遗传算法对应的适应值,所以针对并发程序测试中的噪声注入方案优化,本方法相比传统遗传算法收敛速度更快。
图3是随机噪声注入方法RN、传统遗传算法GA和本方法20次实验中并发错误出现次数的箱体图,对比三个箱体图可知,本方法得到的数据分布更集中,发现并发错误次数更多,即在使用本方法进行针对并发程序测试的噪声注入方案优化时发现并发错误能力更强,稳定性更好。
实例分析表明,本发明提出的用于并发程序测试的噪声注入优化方法与传统的随机方法和遗传算法噪声注入优化相比,本发明提供的用于并发程序测试的噪声注入优化方法收敛速度快,生成最优噪声注入方案的稳定性好,是一种有效的用于并发程序测试的噪声注入优化方法。

Claims (1)

1.一种并发程序测试噪声注入优化方法,其特征在于包括以下几个步骤:
步骤一:编码;用L={1,2,...,i,...,n}表示待测并发程序的n个程序位置,其中i∈L,1≤i≤n,用Inject∈{0,1,2,3}表示某个程序位置是否注入噪声及注入的噪声类型,Inject=0时在该程序位置不注入噪声语句,Inject=1时在该程序位置注入噪声语句sleep(),Inject=2时在该程序位置注入噪声语句wait(),Inject=3时在该程序位置注入噪声语句yield(),并发程序测试噪声注入优化的目标是搜索出最可能引发并发程序错误的噪声注入方案:程序位置及每个程序位置注入的噪声类型,使得被测程序中潜在的并发错误最大化显现;
步骤二:构造适应度;针对每一种噪声注入方案,根据噪声注入方案对被测程序进行噪声注入,采用并发程序在运行过程中出现并发错误的次数NE来作为评价噪声注入方案的优劣的适应度f,适应度值越高,表示该噪声注入方案效果越好;
步骤三:种群初始化;种群是噪声注入方案组成的集合,个体表示一种噪声注入方案,设定种群规模N,变异概率F,交叉概率CR以及最大迭代次数r,在解空间内随机的产生N个噪声注入方案作为初始种群,每个个体是一个n维向量,表示为Xi(0)=Xi,1(0),Xi,2(0),...,Xi,n(0)|,i=1,2,3,...,N,其中Xi(0)表示第0代的第i个个体,Xi,j(0)表示第0代第i个个体的第j个基因,n是个体编码的长度即程序的位置数量,令迭代次数g=1,开始迭代;
步骤四:个体变异;在第g次迭代中,对于个体Xi(g)=Xi,1(g),Xi,2(g),..,Xi,n(g),从种群中随机选择3个个体Xp1(g),Xp2(g),Xp3(g)且p1≠p2≠p3,生成变异向量Hi(g),其中
Figure FDA0002485483890000011
q1=|f(Xp1(g))|/q′,q2=|f(Xp2(g))|/q′,q3=|f(Xp3(g))|/q′,q′=|f(Xp1(g))|+|f(Xp2(g))|+|f(Xp3(g))|;
步骤五:个体交叉;在第g次迭代中,对于每个个体和它所生成的变异向量进行交叉,即对每一个等位基因按照一定的概率选择变异向量来生成交叉向量Vi(g),否则为原向量,Vi(g)的每一个分量的计算方式为
Figure FDA0002485483890000012
其中r为在[0,1]区间产生的一个随机数,CR为交叉概率;
步骤六:个体选择;在第g次迭代中,根据适应度函数的值从每个个体的交叉向量和原向量中选择出适应度更高的作为下一代,表示为
Figure FDA0002485483890000021
步骤七:记录本次迭代后的最大适应值及其对应的个体;
步骤八:判断迭代终止条件,迭代终止条件是当前迭代次数大于最大迭代次数MAX,如果终止条件成立,那么此时最大适应值个体对应的噪声注入方案为最优噪声注入方案,输出该方案并停止;否则,令迭代次数g=g+1,返回步骤四。
CN202010390803.8A 2020-05-11 2020-05-11 一种并发程序测试噪声注入优化方法 Active CN111563043B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010390803.8A CN111563043B (zh) 2020-05-11 2020-05-11 一种并发程序测试噪声注入优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010390803.8A CN111563043B (zh) 2020-05-11 2020-05-11 一种并发程序测试噪声注入优化方法

Publications (2)

Publication Number Publication Date
CN111563043A CN111563043A (zh) 2020-08-21
CN111563043B true CN111563043B (zh) 2022-11-01

Family

ID=72070910

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010390803.8A Active CN111563043B (zh) 2020-05-11 2020-05-11 一种并发程序测试噪声注入优化方法

Country Status (1)

Country Link
CN (1) CN111563043B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112269736B (zh) * 2020-10-26 2022-11-01 西安邮电大学 多目标并发程序噪声注入群体优化方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391381A (zh) * 2017-07-31 2017-11-24 东南大学 一种基于锁对象拆分策略的并发程序测试方法及其测试系统
CN110059015A (zh) * 2019-04-28 2019-07-26 西安邮电大学 种群进化多目标测试用例优先级排序方法
CN110083538A (zh) * 2019-04-28 2019-08-02 西安邮电大学 一种并发程序噪声注入方法
CN110222502A (zh) * 2019-06-10 2019-09-10 北京计算机技术及应用研究所 一种注入随机化的对抗训练方法
CN110598863A (zh) * 2019-09-05 2019-12-20 南宁师范大学 协同进化的多目标差分进化方法
CN110851353A (zh) * 2019-10-22 2020-02-28 天津大学 一种基于Delta Debugging与约束求解的并发程序缺陷定位方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164859B2 (en) * 2009-09-25 2015-10-20 Qualcomm Incorporated Computing device for enabling concurrent testing
US8789022B2 (en) * 2012-03-31 2014-07-22 Bmc Software, Inc. Self-evolving computing service template translation
CN108763055B (zh) * 2018-04-19 2020-08-25 北京航空航天大学 一种基于表观遗传的测试用例约束控制技术的构建方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391381A (zh) * 2017-07-31 2017-11-24 东南大学 一种基于锁对象拆分策略的并发程序测试方法及其测试系统
CN110059015A (zh) * 2019-04-28 2019-07-26 西安邮电大学 种群进化多目标测试用例优先级排序方法
CN110083538A (zh) * 2019-04-28 2019-08-02 西安邮电大学 一种并发程序噪声注入方法
CN110222502A (zh) * 2019-06-10 2019-09-10 北京计算机技术及应用研究所 一种注入随机化的对抗训练方法
CN110598863A (zh) * 2019-09-05 2019-12-20 南宁师范大学 协同进化的多目标差分进化方法
CN110851353A (zh) * 2019-10-22 2020-02-28 天津大学 一种基于Delta Debugging与约束求解的并发程序缺陷定位方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
利用佳点集遗传算法的白盒测试用例优先排序;孙家泽等;《计算机工程与科学》;20181015(第10期);全文 *

Also Published As

Publication number Publication date
CN111563043A (zh) 2020-08-21

Similar Documents

Publication Publication Date Title
CN111563043B (zh) 一种并发程序测试噪声注入优化方法
CN113468044B (zh) 一种基于改进的灰色预测演化算法的测试用例生成方法
Zhang et al. An improved quantum genetic algorithm for test suite reduction
Fei Partially non-autoregressive image captioning
CN114822699B (zh) 一种基于聚类算法的高性能k-mer频次计数方法及系统
Li et al. Breeding software test data with genetic-particle swarm mixed algorithm.
Zhu et al. On optimal caching and model multiplexing for large model inference
Li et al. Multitask evolution strategy with knowledge-guided external sampling
CN110083538B (zh) 一种并发程序噪声注入方法
Hawe et al. A scalarizing one-stage algorithm for efficient multi-objective optimization
Nawaz et al. Proof searching in HOL4 with genetic algorithm
Maji et al. A supervised ensemble approach for sensitive microRNA target prediction
Antunes et al. Sequential pattern mining with approximated constraints
CN112269736B (zh) 多目标并发程序噪声注入群体优化方法
CN114579579A (zh) 一种基于深度强化学习的索引选择方法
Ju et al. ngia: A novel greedy incremental alignment based algorithm for gene sequence clustering
CN113468865A (zh) 基于深度学习的地铁设计领域规范的实体间关系抽取方法
Sun et al. Design of FPGA hardware based on genetic algorithm
Wu et al. An improved genetic algorithm based on explosion mechanism
Liu et al. MC/DC test data generation algorithm based on whale genetic algorithm
Chen et al. An effective long string searching algorithm towards component security testing
He et al. A sparse protocol parsing method for IIoT protocols based on HMM hybrid model
Bai et al. Binary oriented vulnerability analyzer based on hidden markov model
Xie et al. Augmentation Method of Test Data for Path Coverage based on K-means Clustering
Yiwei et al. FLAREFUZZ: Fuzzing Javascript Engines via Deep Learning

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