CN115794658A - 一种区块链的模糊测试方法及系统 - Google Patents

一种区块链的模糊测试方法及系统 Download PDF

Info

Publication number
CN115794658A
CN115794658A CN202310029540.1A CN202310029540A CN115794658A CN 115794658 A CN115794658 A CN 115794658A CN 202310029540 A CN202310029540 A CN 202310029540A CN 115794658 A CN115794658 A CN 115794658A
Authority
CN
China
Prior art keywords
test
priority
program
independent paths
path
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
Application number
CN202310029540.1A
Other languages
English (en)
Other versions
CN115794658B (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.)
State Grid Blockchain Technology Beijing Co ltd
China Academy of Information and Communications Technology CAICT
Original Assignee
State Grid Blockchain Technology Beijing Co ltd
China Academy of Information and Communications Technology CAICT
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 State Grid Blockchain Technology Beijing Co ltd, China Academy of Information and Communications Technology CAICT filed Critical State Grid Blockchain Technology Beijing Co ltd
Priority to CN202310029540.1A priority Critical patent/CN115794658B/zh
Publication of CN115794658A publication Critical patent/CN115794658A/zh
Application granted granted Critical
Publication of CN115794658B publication Critical patent/CN115794658B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种区块链的模糊测试方法及系统,其中,一种区块链的模糊测试方法包括:通过利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,N为正整数;根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算N个基本独立路径的优先级指标;根据N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合;对测试用例集合中的测试用例进行模糊测试,以得到测试结果。以此实现提高基本独立路径的覆盖率,并且提升测试效率。

Description

一种区块链的模糊测试方法及系统
技术领域
本申请涉及信息安全领域,尤其涉及一种区块链的模糊测试方法及系统。
背景技术
目前的区块链系统大部分采用白盒测试方法。但采用现有技术的测试方法,在面对庞大的软件路径数量情况时,由于约束求解器的求解能力有限,进而影响测试路径不能全覆盖。因此,如何解决路径全覆盖是亟需解决的问题。
发明内容
有鉴于此,本申请的主要目的在于提供一种区块链的模糊测试方法及系统,实现提高基本独立路径的覆盖率,并且提高测试效率。
本申请第一方面提供了一种区块链的模糊测试方法,该方法包括:
利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,N为正整数;
根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算N个基本独立路径的优先级指标;
根据N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合;
对测试用例集合中的测试用例进行模糊测试,以得到测试结果。
在本申请第一方面的一些实现方式中,利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,N为正整数,具体包括:
根据流程内部语句对待测程序进行抽象,以得到控制流图,流程内部语句包括如下至少一种:顺序语句、选择语句、if语句、until语句和while语句;
根据控制流图获取控制流图的边数和节点数,并采用环路复杂度度量法对边数和节点数进行计算,以获取基本独立路径数量。
在本申请第一方面的一些实现方式中,根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算N个基本独立路径的优先级指标,具体包括:
获取待测程序的多种评价因素以及多种评价因素分别对应的评价值;
根据多种评价因素的评价值计算待测程序的平均评价值;
获取多种评价因素分别对应的权重;
根据多种评价因素分别对应的权重和待测程序的平均评价值得到待测程序的加权平均评价值;
根据加权平均评价值计算N个基本独立路径的优先级指数,并根据优先级指数设置优先等级,根据优先等级对N个基本独立路径进行排序;
其中,优先等级包括高优先级、中优先级和低优先级。
在本申请第一方面的一些实现方式中,根据N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合,具体包括:
采用粒子群优化算法获取具有高优先级的基本独立路径集合;
从高优先级的基本路径集合中获取N个基本独立路径的测试条件,生成取值表;
采用正交表方法生成N个基本独立路径的正交表,将取值表与正交表进行映射,以生成测试用例集合。
在本申请第一方面的一些实现方式中,该方法还包括:
根据流程内部语句获取测试条件,并将测试条件拆分成树状结构,以得到多个测试条件分支;
根据多个测试条件分支生成测试条件集合,并记录测试条件集合,测试条件集合包括:测试环境、输入数据、操作步骤和预测结果。
本申请第二方面提供了一种基本独立路径优化排序的模糊测试系统,该系统包括:程序圈复杂度计算模块、测试路径优先级计算模块、测试用例生成模块和测试模块;
程序圈复杂度计算模块,用于利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,N为正整数;
测试路径优先级计算模块,用于根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算N个基本独立路径的优先级指标;
测试用例生成模块,用于根据N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合;
测试模块,用于对测试用例集合中的测试用例进行模糊测试,以得到测试结果。
在本申请第二方面的一些实现方式中,该程序圈复杂度计算模块包括绘制控制流图子模块和基本独立路径数量确认子模块;
绘制控制流图子模块,用于根据流程内部语句对待测程序进行抽象,以得到控制流图,流程内部语句包括如下至少一种:顺序语句、选择语句、if语句、until语句和while语句;
基本独立路径数量确认子模块,用于根据控制流图获取控制流图的边数和节点数,并采用环路复杂度度量法对边数和节点数进行计算,以获取基本独立路径数量。
在本申请第二方面的一些实现方式中,该测试路径优先级计算模块包括优先级指标权重计算子模块和测试路径排序子模块;
优先级指标权重计算子模块,用于获取待测程序的多种评价因素以及多种评价因素分别对应的评价值;根据多种评价因素的评价值计算待测程序的平均评价值;获取多种评价因素分别对应的权重;根据多种评价因素分别对应的权重和待测程序的平均评价值得到待测程序的加权平均评价值;
测试路径排序子模块,用于根据加权平均评价值计算N个基本独立路径的优先级指数,并根据优先级指数设置优先等级,根据优先等级对N个基本独立路径进行排序;
其中,优先等级包括高优先级、中优先级和低优先级。
在本申请第二方面的一些实现方式中,该测试用例生成模块具体包括测试路径选择子模块和输入程序设计子模块;
测试路径选择子模块,用于采用粒子群优化算法获取具有高优先级的基本独立路径集合;
输入程序设计子模块,用于从高优先级的基本路径集合中获取N个基本独立路径的测试条件,生成取值表;
输入程序设计子模块,还用于采用正交表方法生成N个基本独立路径的正交表,将取值表与正交表进行映射,以生成测试用例集合。
本申请第三方面提供了一种计算机设备,其特征在于,该设备包括存储器和处理器,处理器用于执行存储器中存储的程序,运行如前述第一方面中任一项的方法。
相对于现有技术,本申请所提供的技术方案具有如下有益效果:
本申请通过利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,N为正整数;根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算N个基本独立路径的优先级指标;根据N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合;对测试用例集合中的测试用例进行模糊测试,以得到测试结果。根据不同优先级的基本独立路径集合,优化测试用例的生成策略,缩短基本独立路径生成的迭代周期,提高基本独立路径的覆盖率,并且提高测试效率。
附图说明
图1为本申请实施例提供的一种区块链的模糊测试方法的流程示意图;
图2为本申请实施例提供的另一种区块链的模糊测试方法的流程示意图;
图3为本申请实施例提供的另一种区块链的模糊测试方法的流程示意图;
图4为本申请实施例提供的一种控制流图的结构示意图;
图5为本申请实施例提供的一种区块链的模糊测试系统的结构示意图;
图6为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等,如果存在是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
相关术语解释:
模糊测试:指的是一种基于缺陷注入的自动或半自动化软件漏洞挖掘技术,按照运行时通过被测程序获取信息能力的标准,可分为白盒、黑盒以及灰盒测试三类。
白盒测试:又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部是如何运作的。白盒测试基于软件内部结构设计测试案例,能够充分测试程序内在逻辑,发现代码层面的错误。
黑盒测试:与白盒测试相反,黑盒测试主要侧重于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试,因此实际使用中很难达到所需的代码测试覆盖率。
灰盒测试:基于白盒和黑盒测试之间,主要借助于从被测软件中获取的少量信息来指导测试用例生成,以高效地发现程序中存在的错误。
测试用例:指的是对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。
测试路径:指的是根据路径设计测试用例的一种技术,经常用于状态转换测试中。
基本路径测试法:指的是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法,设计出的测试用例要保证在测试中程序的语句覆盖100%,条件覆盖100%。
现有技术中区块链系统大部分采用白盒测试方法。但目前白盒测试方法主要存在两类缺陷:一方面是在进行软件测试时,因其交易流程的复杂性,软件路径数量较多,影响测试运行速度;另一方面是当面对庞大的软件路径数量时,由于约束求解器求解能力有限,进而影响测试路径不能全覆盖。由此,本申请实施例基于控制流程图计算程序环路复杂度,设计参数自适应的路径加权评价指标,识别生成具有不同优先级的测试基本路径,优化测试路径生成策略,缩短基本独立路径生成的迭代周期,提高测试路径的覆盖率。
请参阅图1,本申请该实施例提供了一种区块链的模糊测试方法包括以下步骤:
S101:利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,N为正整数;
具体地,环路复杂度度量法也可以称为McCabe度量法。该方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。程序图是退化的程序流程图,相当于把程序流程图中的每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同点的有向弧,即可得到控制流图。
例如可以采用如下步骤获取N个基本独立路径:
步骤一:根据流程内部语句对待测程序进行抽象,以得到控制流图,流程内部语句包括如下至少一种:顺序语句、选择语句、if语句、until语句和while语句;
对待测程序抽象后得到有向图4 = (N, E, start, exit),该控制流图中,S为start,E为exit,N为节点数量a-h,即N=8,E为边数量,即E=12,因此控制流有向图4=(8,12,S,E)
步骤二:根据控制流图获取控制流图的边数和节点数,并采用环路复杂度度量法对边数和节点数进行计算,以获取基本独立路径数量。
采用环路复杂度度量法计算程序圈复杂度,圈复杂度C(4)=E - N +2q,对于图4只有一个入口和一个出口的待测程序,q=1,可得到基本独立路径数量。
S102:根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算N个基本独立路径的优先级指标;
需要说明的是,预设的等级权重可以将优先级划分为三个等级,例如高优先级、中优先级以及低优先级,再对三个等级预先设置占比或者权重。其中,优先级划分可以根据路径优先级指标进行划分。
具体计算N个基本独立路径的优先级指标可以采用如下步骤进行,参照图2所示的控制流图:
步骤一:根据基本独立路径数量,梳理基本独立路径集合
如图2所示,基本独立路径共6条,分别为:
①S-a-b-c-d-f-g-h-E;
②S-a-b-c-e-f-g-h-E;
③S-a-b-c-d-f-g-E;
④S-a-b-c-e-f-g-E;
⑤S-a-b-g-h-E;
⑥S-a-b-g–E.
步骤二:根据基本独立路径数量设置路径优先级指标,可以分为高优先级(H)、中优先级(M)以及低优先级(L)三个等级,并根据预设的等级权重计算N个基本独立路径的优先级指标。例如:
高优先级(H):可以包含最常执行的测试功能,用以保证测试功能稳定的,如循环设置错误、循环嵌套错误、函数调用错误等测试用例的集合,占比为20%-30%;
中优先级(M):可以指的是待测程序的功能细化测试,例如检查常用的功能:边界、错误和配置测试的测试用例,占比为50%-60%;
低优先级(L):可以包含被执行较少次数的测试用例,如图形用户界面(GraphicalUser Interface,GUI)、可用性、压力和性能测试,占比20%。
S103:根据N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合;
粒子群优化算法可以描述为:由m个粒子组成的群体在D维搜索空间中以一定的速度各自飞行以寻找最佳位置(即最优解),每个粒子在搜索时,受到自身历史最优点和群体内其他粒子历史最优点的影响,不断进行自身位置优化。
具体地,每一个测试用例均为一个粒子。
其中,通过如下计算公式进行粒子群优化算法:
vij (t+1)=vij (t)+c1*r1j(t)⋅[yij(t)−xij(t)]+c2*r2j(t)⋅[yij^(t)−xij(t)]
其中,i为每个当前基本独立路径的输入参数,j为每个当前基本独立路径的输入参数,vij(t)为粒子i在第j维的速度,xij(t)为粒子i在第j维的位置,yij(t)代表当前迭代中粒子i的最佳位置,yij^(t)代表当前基本独立路径下所有输入参数中当前粒子的最佳位置,c1、c2是加速度常数,r1j(t)、r2j(t)∼U(0,1)是从均匀分布中采样得到的随机值,U(0,1)是指在0-1之间取随机数、计算机常用函数为random(0,1)。
需要说明的是,输出的测试用例集合包含有最优的例子的测试用例。
S104:对测试用例集合中的测试用例进行模糊测试,以得到测试结果。
通过采用例子群优化算法输出的测试用例进行模糊测试,能够在不断迭代后选择覆盖率较高的基本独立路径进行测试。
区块链系统提供的待测程序,会规定不同场景下不同的输入参数,使用粒子群优化算法,实现基本独立路径对应的测试使用最优解选定,减少大量非必要测试用例的执行,降低计算消耗,实现测试用例集合的优化。
图1所示的流程,通过根据不同优先级的基本独立路径集合,优化测试用例的生成策略,缩短基本独立路径生成的迭代周期,提高基本独立路径的覆盖率,并且提高测试效率。
请参阅图2,本申请还提供了另外一种区块链的模糊测试方法,通过采用待测程序的评价因素等相关条件进行设置优先等级,本申请该实施例具体包括如下步骤:
S201:获取待测程序的多种评价因素以及多种评价因素分别对应的评价值;
其中,评价因素可以设置为两级,一级比重高于二级:
一级评价因素:风险级别等;
二级评价因素:边界复杂性、执行环境复杂性等;
需要说明的是,边界复杂性指的是边界条件满足1项或者同时满足2项或多项,代表边界复杂性不同,常见的边界条件包括:数值、位置、数量等先决条件。执行环境复杂度主要是针对测试需要的软件和硬件环境,对于测试不用的功能或者性能,使用的软件数据库存在差异,依据软硬件的环境来区分。
S202:根据多种评价因素的评价值计算待测程序的平均评价值;
评价值可以分等级设置,例如最优的评价值为10;欠优的评价因素,依据欠优的程度,其评价值介于1至10之间。其中评价值的具体数值设置可以采用其他任意数值均不影响本申请该实施例的实现。
平均评价值指的是模糊测试框架下(白盒、黑盒、灰盒)对某一测试用例的评价值的平均值,将测试用例中的多种评价因素的评价值进行平均计算得出平均评价值。
S203:获取多种评价因素分别对应的权重;
权重是指评价因素的地位和重要程度。例如一级评价因素的权重之和为1;每一个评价因素的下一级评价因素的权重之和为1。
S204:根据多种评价因素分别对应的权重和待测程序的平均评价值得到待测程序的加权平均评价值;
可以通过如下计算公式计算加权平均评价值:
加权平均评价值=平均评价值×权重
S205:根据加权平均评价值计算N个基本独立路径的优先级指数,并根据优先级指数设置优先等级,根据优先等级对N个基本独立路径进行排序;
需要说明的是,优先等级可以包括高优先级、中优先级和低优先级。
在一些实现方式中,S202可以周期性执行。
其中S201至S204的执行顺序可以先后进行,也可以同时进行。
在图2所示的本申请实施例中,通过获取测试用例中多个评价因素,以及多个评价因素对应的评价值等参数,度量维度具体到了多个评价因素,根据多个度量维度使得度量结果更准确,从而对测试用例的改进提供了更好的数据支持。
如图3所示,本申请实施例还提供了另一种区块链的模糊测试方法,在保证覆盖率的情况下设置取值表与正交表,并将取值表与正交表进行映射,以实现降低测试用例的设计数量,该方法具体包括:
S301:采用粒子群优化算法获取具有高优先级的基本独立路径集合;
其中,通过如下计算公式进行粒子群优化算法:
vij (t+1)=vij (t)+c1*r1j(t)⋅[yij(t)−xij(t)]+c2*r2j(t)⋅[yij^(t)−xij(t)]
其中,i为每个当前基本独立路径的输入参数,j为每个当前基本独立路径的输入参数,vij(t)为粒子i在第j维的速度,xij(t)为粒子i在第j维的位置,yij(t)代表当前迭代中粒子i的最佳位置,yij^(t)代表当前基本独立路径下所有输入参数中当前粒子的最佳位置,c1、c2是加速度常数,r1j(t)、r2j(t)∼U(0,1)是从均匀分布中采样得到的随机值,U(0,1)是指在0-1之间取随机数、计算机常用函数为random(0,1)。
S302:从高优先级的基本独立路径集合中获取N个基本独立路径的测试条件,生成取值表;
对高优先级的基本独立路径集合进行遍历,得到每条基本独立路径的测试条件,形成取值表G。
S303:采用正交表方法生成N个基本独立路径的正交表,将取值表与正交表进行映射,以生成测试用例集合;
设置基本独立路径集合C为测试用例集合正交表的行数r,设置功能界面控件的数量为测试用例集合正交表的列数c,通过遍历获取的对应功能程序测试数据的取值m,组成正交表Lr(cm),将取值表与正交表进行映射,最终按照正交表映射的设置,生成测试用例集合。
S304:根据流程内部语句获取测试条件,并将测试条件拆分成树状结构,以得到多个测试条件分支;
设定关键词获取测试条件,常见的关键词如:if,else,select,from,where等,将测试条件拆分成树状结构,常见的有二分支、三分支、多分支,如:测试条件为:x>0;x<=0,为二分支;测试条件为:x<0;x=0;x>0,为三个分支;测试条件为:when x=1;when x=2;when x=3;…;when x=10,枚举测试条件大于3的为多分支。
S305:根据多个测试条件分支生成测试条件集合,并记录测试条件集合,
需要说明的是,测试条件集合包括:测试环境、输入数据、操作步骤和预测结果。记录每条测试路径中每个测试条件构成的集合,每一个测试条件分支构成一个测试用例。
在图3所示的本申请实施例中,通过设置取值表与正交表,并按照正交表的映射生成测试用例,降低了测试用例的设计数量。
如图5所示,本申请实施例还提供了一种区块链的模糊测试系统,该系统具体包括:程序圈复杂度计算模块501、测试路径优先级计算模块502、测试用例生成模块503和测试模块504;
程序圈复杂度计算模块501,用于利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,N为正整数;
测试路径优先级计算模块502,用于根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算N个基本独立路径的优先级指标;
测试用例生成模块503,用于根据N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合;
测试模块504,用于对测试用例集合中的测试用例进行模糊测试,以得到测试结果。
在本申请的一些实现方式中,程序圈复杂度计算模块501包括绘制控制流图子模块5011和基本独立路径数量确认子模块5012;
绘制控制流图子模块5011,用于根据流程内部语句对待测程序进行抽象,以得到控制流图,流程内部语句包括如下至少一种:顺序语句、选择语句、if语句、until语句和while语句;
基本独立路径数量确认子模块5012,用于根据控制流图获取控制流图的边数和节点数,并采用环路复杂度度量法对边数和节点数进行计算,以获取基本独立路径数量。
在本申请的一些实现方式中,测试路径优先级计算模块502包括优先级指标权重计算子模块5021和测试路径排序子模块5022;
优先级指标权重计算子模块5021,用于获取待测程序的多种评价因素以及多种评价因素分别对应的评价值;根据多种评价因素的评价值计算待测程序的平均评价值;获取多种评价因素分别对应的权重;根据多种评价因素分别对应的权重和待测程序的平均评价值得到待测程序的加权平均评价值;
测试路径排序子模块5022,用于根据加权平均评价值计算N个基本独立路径的优先级指数,并根据优先级指数设置优先等级,根据优先等级对N个基本独立路径进行排序;
其中,优先等级包括高优先级、中优先级和低优先级。
在本申请的一些实现方式中,测试用例生成模块503包括测试路径选择子模块5031和输入程序设计子模块5032;
测试路径选择子模块5031,用于采用粒子群优化算法获取具有高优先级的基本独立路径集合;
输入程序设计子模块5032,用于从高优先级的基本路径集合中获取N个基本独立路径的测试条件,生成取值表;
输入程序设计子模块5032,还用于采用正交表方法生成N个基本独立路径的正交表,将取值表与正交表进行映射,以生成测试用例集合。
可以理解的是,本实施例示意的结构并不构成对该装置的具体限定。在另一些实施例中,该装置可以包括比图示更多或更少的部件,或者组合另一些部件,或者拆分另一些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
如图6所示,本申请实施例还提供了一种计算机设备,包括:存储器601、处理器602;
其中,存储器601用于存储程序;
处理器602用于执行存储器中的程序,以实现上述如图1至图3中描述的一种区块链的模糊测试方法。
最后,还需要说明的是,在本申请实施例中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种区块链的模糊测试方法,其特征在于,所述方法包括:
利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,所述N为正整数;
根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算所述N个基本独立路径的优先级指标;
根据所述N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合;
对所述测试用例集合中的测试用例进行模糊测试,以得到测试结果。
2.根据权利要求1所述的方法,其特征在于,所述利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,所述N为正整数,包括:
根据流程内部语句对所述待测程序进行抽象,以得到控制流图,所述流程内部语句包括如下至少一种:顺序语句、选择语句、if语句、until语句和while语句;
根据所述控制流图获取所述控制流图的边数和节点数,并采用所述环路复杂度度量法对所述边数和所述节点数进行计算,以获取所述基本独立路径数量。
3.根据权利要求2所述的方法,其特征在于,所述根据所述基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算所述N个基本独立路径的优先级指标,包括:
获取待测程序的多种评价因素以及所述多种评价因素分别对应的评价值;
根据所述多种评价因素的评价值计算所述待测程序的平均评价值;
获取所述多种评价因素分别对应的权重;
根据所述多种评价因素分别对应的权重和所述待测程序的平均评价值得到所述待测程序的加权平均评价值;
根据所述加权平均评价值计算所述N个基本独立路径的优先级指数,并根据所述优先级指数设置优先等级,根据所述优先等级对所述N个基本独立路径进行排序;
其中,所述优先等级包括高优先级、中优先级和低优先级。
4.根据权利要求3所述的方法,其特征在于,所述根据所述N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合,包括:
采用所述粒子群优化算法获取具有所述高优先级的基本独立路径集合;
从所述高优先级的基本路径集合中获取所述N个基本独立路径的测试条件,生成取值表;
采用正交表方法生成所述N个基本独立路径的正交表,将所述取值表与所述正交表进行映射,以生成所述测试用例集合。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
根据所述流程内部语句获取所述测试条件,并将所述测试条件拆分成树状结构,以得到多个测试条件分支;
根据所述多个测试条件分支生成测试条件集合,并记录所述测试条件集合,所述测试条件集合包括:测试环境、输入数据、操作步骤和预测结果。
6.一种基本独立路径优化排序的模糊测试系统,其特征在于,所述系统包括:程序圈复杂度计算模块、测试路径优先级计算模块、测试用例生成模块和测试模块;
所述程序圈复杂度计算模块,用于利用环路复杂度度量法从区块链中的待测程序中获取N个基本独立路径,所述N为正整数;
所述测试路径优先级计算模块,用于根据基本独立路径数量设置路径优先级指标,并根据预设的等级权重计算所述N个基本独立路径的优先级指标;
所述测试用例生成模块,用于根据所述N个基本独立路径的优先级指标,采用粒子群优化算法输出测试用例集合;
所述测试模块,用于对所述测试用例集合中的测试用例进行模糊测试,以得到测试结果。
7.根据权利要求6所述的系统,其特征在于,所述程序圈复杂度计算模块包括绘制控制流图子模块和基本独立路径数量确认子模块;
所述绘制控制流图子模块,用于根据流程内部语句对所述待测程序进行抽象,以得到控制流图,所述流程内部语句包括如下至少一种:顺序语句、选择语句、if语句、until语句和while语句;
所述基本独立路径数量确认子模块,用于根据所述控制流图获取所述控制流图的边数和节点数,并采用所述环路复杂度度量法对所述边数和所述节点数进行计算,以获取所述基本独立路径数量。
8.根据权利要求6所述的系统,其特征在于,所述测试路径优先级计算模块包括优先级指标权重计算子模块和测试路径排序子模块;
所述优先级指标权重计算子模块,用于获取待测程序的多种评价因素以及所述多种评价因素分别对应的评价值;根据所述多种评价因素的评价值计算所述待测程序的平均评价值;获取所述多种评价因素分别对应的权重;根据所述多种评价因素分别对应的权重和所述待测程序的平均评价值得到所述待测程序的加权平均评价值;
所述测试路径排序子模块,用于根据所述加权平均评价值计算所述N个基本独立路径的优先级指数,并根据所述优先级指数设置优先等级,根据所述优先等级对所述N个基本独立路径进行排序;
其中,所述优先等级包括高优先级、中优先级和低优先级。
9.根据权利要求8所述的系统,其特征在于,所述测试用例生成模块包括测试路径选择子模块和输入程序设计子模块;
所述测试路径选择子模块,用于采用粒子群优化算法获取具有所述高优先级的基本独立路径集合;
所述输入程序设计子模块,用于从所述高优先级的基本路径集合中获取所述N个基本独立路径的测试条件,生成取值表;
所述输入程序设计子模块,还用于采用正交表方法生成所述N个基本独立路径的正交表,将所述取值表与所述正交表进行映射,以生成所述测试用例集合。
10.一种计算机设备,其特征在于,所述设备包括存储器和处理器,所述处理器用于执行所述存储器中存储的程序,运行如权利要求1-5任一项所述的方法。
CN202310029540.1A 2023-01-09 2023-01-09 一种区块链的模糊测试方法及系统 Active CN115794658B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310029540.1A CN115794658B (zh) 2023-01-09 2023-01-09 一种区块链的模糊测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310029540.1A CN115794658B (zh) 2023-01-09 2023-01-09 一种区块链的模糊测试方法及系统

Publications (2)

Publication Number Publication Date
CN115794658A true CN115794658A (zh) 2023-03-14
CN115794658B CN115794658B (zh) 2023-05-30

Family

ID=85428830

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310029540.1A Active CN115794658B (zh) 2023-01-09 2023-01-09 一种区块链的模糊测试方法及系统

Country Status (1)

Country Link
CN (1) CN115794658B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108170590A (zh) * 2017-12-12 2018-06-15 北京大学深圳研究生院 一种区块链系统的测试系统和方法
CN109446089A (zh) * 2018-10-30 2019-03-08 赛汇检测(广州)有限公司 一种基于区块链技术的软件测试平台
CN109783372A (zh) * 2018-12-26 2019-05-21 中链科技有限公司 基于区块链的软件测试方法、装置、电子设备及存储介质
CN110399286A (zh) * 2018-04-24 2019-11-01 西安邮电大学 一种基于独立路径的测试数据自动生成方法
US20200019494A1 (en) * 2017-02-28 2020-01-16 Sparriw Co., Ltd Method and apparatus for performing test by using test case
CN111240995A (zh) * 2020-01-21 2020-06-05 江西财经大学 结合关键点概率与路径相似度的多路径覆盖方法及系统
US20210209008A1 (en) * 2018-05-23 2021-07-08 South China University Of Technology Unit testing method based on automatic generation of path coverage test cases
CN115562987A (zh) * 2022-09-30 2023-01-03 浙江工商大学 针对智能合约调用序列优化与资源分配导向的模糊测试方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200019494A1 (en) * 2017-02-28 2020-01-16 Sparriw Co., Ltd Method and apparatus for performing test by using test case
CN108170590A (zh) * 2017-12-12 2018-06-15 北京大学深圳研究生院 一种区块链系统的测试系统和方法
CN110399286A (zh) * 2018-04-24 2019-11-01 西安邮电大学 一种基于独立路径的测试数据自动生成方法
US20210209008A1 (en) * 2018-05-23 2021-07-08 South China University Of Technology Unit testing method based on automatic generation of path coverage test cases
CN109446089A (zh) * 2018-10-30 2019-03-08 赛汇检测(广州)有限公司 一种基于区块链技术的软件测试平台
CN109783372A (zh) * 2018-12-26 2019-05-21 中链科技有限公司 基于区块链的软件测试方法、装置、电子设备及存储介质
CN111240995A (zh) * 2020-01-21 2020-06-05 江西财经大学 结合关键点概率与路径相似度的多路径覆盖方法及系统
CN115562987A (zh) * 2022-09-30 2023-01-03 浙江工商大学 针对智能合约调用序列优化与资源分配导向的模糊测试方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
XINMING WANG 等: "Basis path coverage criteria for smart contract application testing" *
潘伟丰 等: "基于复杂软件网络的回归测试用例优先级排序", no. 12, pages 2456 - 2465 *

Also Published As

Publication number Publication date
CN115794658B (zh) 2023-05-30

Similar Documents

Publication Publication Date Title
Baresel et al. Fitness function design to improve evolutionary structural testing
US8239404B2 (en) Identifying entries and exits of strongly connected components
CN109144882B (zh) 一种基于程序不变量的软件故障定位方法及装置
CN110134588B (zh) 一种基于代码和组合覆盖的测试用例优先级排序方法及测试系统
CN103116540A (zh) 基于全局超级块支配图的动态符号执行方法及其装置
CN109117364A (zh) 一种面向目标的测试用例生成方法及系统
CN111104335A (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
Kramkar et al. Interprocedural dynamic slicing applied to interprocedural data flow testing
Bazil et al. A global parallel model based design of experiments method to minimize model output uncertainty
Wang et al. On the use of time series and search based software engineering for refactoring recommendation
CN103309805A (zh) xUnit框架下面向对象软件中测试目标的自动化选择方法
Aloysius et al. A review on component based software metrics
CN104461864A (zh) 一种基于Eclipse插件的Java源代码缺陷检测方法及其系统
CN112860545B (zh) 一种软件缺陷检测方法与装置
CN109710514A (zh) 测试用例优先级排序中的tie-breaking的解决方法及系统
Zhang et al. DS-DSE: Domain-specific design space exploration for streaming applications
Chen et al. Exploiting branch constraints without exhaustive path enumeration
CN115794658A (zh) 一种区块链的模糊测试方法及系统
Aslanyan et al. Model checking exact cost for attack scenarios
Kamkar et al. Three approaches to interprocedural dynamic slicing
CN113688403A (zh) 一种基于符号执行验证的智能合约漏洞检测方法及装置
Sthamer et al. Evolutionary testing of embedded systems
CN114462043A (zh) 基于强化学习的Java反序列化漏洞检测系统及方法
CN115344663A (zh) 一种业务逻辑的知识表示和推演方法及装置
CN116795881B (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
CB03 Change of inventor or designer information

Inventor after: Zhao Lihua

Inventor after: Guo Qinglei

Inventor after: Wei Kai

Inventor after: Zhang Yihui

Inventor after: Zhou Lei

Inventor after: Pang Weiwei

Inventor after: Wen Tingting

Inventor before: Xue Wenhao

Inventor before: Xuan Jiaxing

Inventor before: Wang Huanjuan

Inventor before: Jia Fan

Inventor before: Zhou Lei

Inventor before: Su Zhan

Inventor before: Li Jiangtao

Inventor before: Li Guomin

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant