一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种可编程逻辑器件封装模块的安全性测试方法和系统与流程

2022-06-11 12:28:53 来源:中国专利 TAG:


1.本发明涉及安全性测试技术领域,尤其涉及一种可编程逻辑器件封装模块的安全性测试方法和系统。


背景技术:

2.由于可编程逻辑器件具有集成度高、体积小、功耗低、速度快等诸多优点,在航空、航天军用产品领域中获得了广泛应用,可编程逻辑器件的质量成为影响装备质量的重要因素。然而,目前可编程逻辑器件在设计开发、测试验证等方面存在诸多薄弱环节,对于可靠性设计考虑得较少,特别是可编程逻辑器件的封装模块。
3.由于封装模块实际的rtl代码和内部信号不可见,无法开展代码审查、编码规则检查等测试,无法充分保障测试完备性,现有的对可编程逻辑器件封装模块的测试覆盖率低并且效率,不足以满足封装模块安全性测试需求。


技术实现要素:

4.鉴于上述的分析,本发明实施例旨在提供一种可编程逻辑器件封装模块的安全性测试方法和系统,用以解决现有的对可编程逻辑器件封装模块的测试覆盖率低并且效率,不足以满足封装模块安全性测试需求的问题。
5.一方面,本发明实施例提供了一种可编程逻辑器件封装模块的安全性测试方法,包括以下步骤:
6.针对所述封装模块的每个功能,采用软件故障树分析法和软件失效模式与影响分析法进行故障分析,得到每个功能对应的综合故障树;以每个所述综合故障树中的最小割集为约束条件构建测试用例,所有测试用例构成测试用例集合;
7.采用遗传算法从所述测试用例集合中选择最优测试用例组,所述最优测试用例组对所述可编程逻辑器件的封装模块进行测试,得到所述可编程逻辑器件的封装模块的安全性测试结果。
8.基于上述方法的进一步改进,采用遗传算法从所述测试用例集合中选择最优测试用例组合,包括:
9.s21、以测试用例是否被选择作为染色体的基因,随机生成若干条染色体序列作为初始种群;
10.s22、采用所述种群中的染色体序列对应的测试用例组对所述封装模块进行测试,计算每条染色体序列的适应度和功能覆盖率;若种群的整体适应度不再变化且功能覆盖率满足精度要求,则当前种群中适应度最高的染色体对应的测试用例组为最优测试用例组,所述最优测试用例组的测试结果为所述封装模块的安全性测试结果;否则,执行步骤s23;
11.s23、采用比例选择策略选择适应度高的染色体序列作为父染色体,对所述父染色体进行交叉和变异,生成新的染色体,所述父染色体和新的染色体构成新的种群,执行步骤s22。
12.进一步地,采用公式f(si)=qua(si) cov(si) def(si) sev(si)计算每条染色体序列的适应度,其中,qua(si)表示染色体si的测试用例个数度量;cov(si)表示染色体si的功能覆盖率;cov(si)表示染色体si的缺陷检测度;sev(si)表示染色体si的测试用例影响度。
13.进一步地,采用比例选择策略选择适应度高的染色体序列作为父染色体,包括:
14.s231、根据公式计算种群中每条染色体被选中为父染色体的概率;其中,f(si)表示染色体si的适应度,m表示种群中染色体的个数;
15.s232、根据公式计算种群中每条染色体被选中为父染色体的累积概率;
16.s233、生成伪随机数r,若r≤q1,则选择第一条染色体;否则,选择染色体k,使得q
k-1
《r≤qk成立;重复步骤s233,直至父染色体个数达到预设的数量。
17.进一步地,采用公式计算每条染色体序列的测试用例影响度,其中ti表示染色体包含的第i个影响等级对应的测试用例的个数;其中αi表示第i个影响等级对应的影响权重,t表示影响等级数量。
18.进一步地,
19.采用公式计算染色体序列si的测试用例个数度量,其中n表示测试用例集合的测试用例个数,ni表示染色体si包含的测试用例的个数;
20.采用公式计算染色体si的功能覆盖率;其中funi表示染色体si的测试用例的功能点覆盖数量,fun表示测试用例集合的功能点覆盖数量;
21.根据公式计算染色体序列si的缺陷检测度;其中di表示染色体si的实际检测的缺陷数量,defi表示染色体si预期检测出的缺陷数量。
22.进一步地,针对所述封装模块的每个功能,采用软件故障树分析法和软件失效模式与影响分析法进行故障分析,得到每个功能对应的综合故障树,包括:
23.针对所述封装模块的每个功能,采用软件故障树分析法进行故障分析,得到初始故障树;
24.以所述初始故障树的底事件为故障模式,采用软件失效模式与影响分析法分析所述故障模式的故障原因和影响等级;
25.以所述故障原因作为所述初始故障树的新的底事件,得到综合故障树。
26.另一方面,本发明实施例提供了一种可编程逻辑器件封装模块的安全性测试系统,包括以下模块:
27.测试用例集合生成模块,针对所述封装模块的每个功能,采用软件故障树分析法和软件失效模式与影响分析法进行故障分析,得到每个功能对应的综合故障树;以每个所述综合故障树中的最小割集为约束条件构建测试用例,所有测试用例构成测试用例集合;
28.安全性测试模块,采用遗传算法从所述测试用例集合中选择最优测试用例组,所
述最优测试用例组对所述可编程逻辑器件的封装模块进行测试,得到所述可编程逻辑器件的封装模块的安全性测试结果。
29.进一步地,所述安全性测试模块采用遗传算法从所述测试用例集合中选择最优测试用例组合,包括:
30.s21、以测试用例是否被选择作为染色体的基因,随机生成若干条染色体序列作为初始种群;
31.s22、采用所述种群中的染色体序列对应的测试用例组对所述封装模块进行测试,计算每条染色体序列的适应度和功能覆盖率;若种群的整体适应度不再变化且功能覆盖率满足精度要求,则当前种群中适应度最高的染色体对应的测试用例组为最优测试用例组,所述最优测试用例组的测试结果为所述封装模块的安全性测试结果;否则,执行步骤s23;
32.s23、采用比例选择策略选择适应度高的染色体序列作为父染色体,对所述父染色体进行交叉和变异,生成新的染色体,所述父染色体和新的染色体构成新的种群,执行步骤s22。
33.进一步地,所述安全性测试模块采用公式f(si)=qua(si) cov(si) def(si) sev(si)计算每条染色体序列的适应度,其中,qua(si)表示染色体si的测试用例个数度量;cov(si)表示染色体si的功能覆盖率;cov(si)表示染色体si的缺陷检测度;sev(si)表示染色体si的测试用例影响度。
34.与现有技术相比,本技术通过采用软件故障树分析法和软件失效模式与影响分析法进行对封装模块的功能进行故障分析从而全面有效的进行失效分析,根据综合故障树的最小割集构建测试用例可以使得测试用例设计更有目的,从而保障测试完备性,通过采用遗传算法不会因人为选择测试用例造成遗漏,并且能提高测试的功能覆盖率和效率。
35.本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
36.附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
37.图1为本发明实施例可编程逻辑器件封装模块的安全性测试方法的流程图;
38.图2为本发明实施例可编程逻辑器件封装模块的安全性测试系统的结构框图;
39.图3为本发明实施例的初始结构树示意图;
40.图4为本发明实施例的综合结构树示意图。
具体实施方式
41.下面结合附图来具体描述本发明的优选实施例,其中,附图构成本技术一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
42.本发明的一个具体实施例,公开了一种可编程逻辑器件封装模块的安全性测试方法,如图1所示,包括以下步骤:
43.s1、针对所述封装模块的每个功能,采用软件故障树分析法和软件失效模式与影响分析法进行故障分析,得到每个功能对应的综合故障树;以每个所述综合故障树中的最小割集为约束条件构建测试用例,所有测试用例构成测试用例集合;
44.s2、采用遗传算法从所述测试用例集合中选择最优测试用例组,所述最优测试用例组对所述可编程逻辑器件的封装模块进行测试,得到所述可编程逻辑器件的封装模块的安全性测试结果。
45.通过采用软件故障树分析法和软件失效模式与影响分析法进行对封装模块的功能进行故障分析从而全面有效的进行失效分析,根据综合故障树的最小割集构建测试用例可以使得测试用例设计更有目的,从而保障测试完备性,通过采用遗传算法不会因人为选择测试用例造成遗漏,并且能提高测试的功能覆盖率和效率。
46.具体的,步骤s1中,针对所述封装模块的每个功能,采用软件故障树分析法和软件失效模式与影响分析法进行故障分析,得到每个功能对应的综合故障树,包括:
47.s11、针对所述封装模块的每个功能,采用软件故障树分析法进行故障分析,得到初始故障树;
48.具体的,根据封装模块的需求规格说明书等相关文档对封装模块的功能层次、数据流向和控制流程进行梳理分析,得到封装模块的功能层次关系、数据流向关系和控制流程。
49.针对封装模块的每个功能,以该功能失效为顶事件,根据功能间层次关系、数据流向关系和控制流程,采用软件故障树分析法,识别出导致顶事件、中间事件的原因事件以及原因事件间的逻辑关系,直至达到最低层功能模块,生成初始故障树。具体的分析过程为现有技术,本技术不再赘述。
50.示例性的,对封装模块的“串口数据接收”功能进行分析,得到初始故障树如图3所示。
51.s12、以所述初始故障树的底事件为故障模式,采用软件失效模式与影响分析法分析所述故障模式的故障原因和影响等级;
52.得到初始故障树后,以初始故障树的底事件为故障模式,结合软件失效模式与影响分析法进行故障模式的故障原因和影响等级分析。具体分析过程为现有技术,本技术不再赘述。
53.示例性的,对如图3中的各底事件进行软件失效模式与影响分析,得到的部分结果如表1所示,故障等级如表2所示。
54.[0055][0056]
表1串口数据接收功能sfmea分析结果
[0057][0058]
表2故障影响等级表
[0059]
s13、以所述故障原因作为所述初始故障树的新的底事件,得到综合故障树。
[0060]
将故障原因添加到初始故障树中,生成综合故障树。示例性的,综合故障树如图4所示。
[0061]
得到综合故障树后,根据综合故障树中的最小割集提取安全性测试约束条件,构建测试用例,所有测试用例构成测试用例集合。
[0062]
最小割集是产生故障的最少底事件集合。根据故障树中底事件的逻辑关系可得到产生故障的最小割集。
[0063]
示例性的,根据表1的分析结构,构建的测试用例如表3所示。
[0064]
[0065][0066]
表3测试用例
[0067]
测试用例集合中包含的数量大,为了提高测试的覆盖率和测试效率。采用遗传算法从测试用例集合中选择最优测试用例组合,最优测试用例组对所述可编程逻辑器件的测试结果,为可编程逻辑器件的封装模块的安全性测试结果。
[0068]
具体的,步骤s2中采用遗传算法从所述测试用例集合中选择最优测试用例组合,包括:
[0069]
s21、以测试用例是否被选择作为染色体的基因,随机生成若干条染色体序列作为初始种群
[0070]
具体的,遗传算法中染色体的序列长度为测试用例集合中测试用例的个数,以测试用例是否被选择作为染色体的基因。采用二进制编码进行染色体编码,对于每条染色体,若第i个测试用例被选用,则染色体序列中第i个位置为1,否则,该位置为0。
[0071]
随机生成若干条染色体序列作为初始种群,初始种群的规模可根据测试用例集合中的测试用例数量来确定。
[0072]
s22、采用所述种群中的染色体序列对应的测试用例组对所述封装模块进行测试,计算每条染色体序列的适应度和功能覆盖率;若种群的整体适应度不再变化且功能覆盖率满足精度要求,则当前种群中适应度最高的染色体对应的测试用例组为最优测试用例组,所述最优测试用例组的测试结果为所述封装模块的安全性测试结果;否则,执行步骤s23;
[0073]
实施时,根据测试用例要求搭建仿真测试系统,将带约束的测试用例输入仿真测试系统中,进行测试。
[0074]
具体的仿真测试系统搭建为现有技术,例如搭建uvm仿真测试环境,具体操作可参考现有技术,本技术不再赘述。
[0075]
具体的,为了提高测试的功能覆盖率、尽可能多的检测出缺陷以及尽量选取影响等级高测试用例,以便提高封装模块的可靠性,遗传算法中,采用公式f(si)=qua(si) cov(si) def(si) sev(si)计算每条染色体序列的适应度,其中,qua(si)表示染色体si的测试用例个数度量;cov(si)表示染色体si的功能覆盖率;cov(si)表示染色体si的缺陷检测度;sev(si)表示染色体si的测试用例影响度。
[0076]
具体的,采用公式计算每条染色体序列的测试用例影响度,其中ti表示染色体包含的第i个影响等级对应的测试用例的个数;其中αi表示第i个影响等级对应的影响权重,t表示影响等级数量。其中影响等级是根据前述步骤s1中的分析结果得到的,测试用例的影响等级是指测试用例对应的故障模式的影响等级,通过引入影响等级到适应度计算中,使得算法趋于选择影响等级更高的测试用例,从而进一步提高安全性测试的测试效率。
[0077]
实施时,不同影响等级对应的影响权重可根据实际模块需求确定,例如,将ⅰ、ⅱ、ⅲ、ⅳ四个影响等级对应的权重分别设置为0.60,0.25,0.10,0.05。
[0078]
采用公式计算染色体序列si的测试用例个数度量,其中n表示测试用例集合的测试用例个数,ni表示染色体si包含的测试用例的个数;通过引入测试用例个数度量,包含测试用例个数多的染色体其更容易生存下去,从而使得算法趋于选择包含测试用例个数多的染色体,从而进一步提高安全性测试的测试全备性。
[0079]
采用公式计算染色体si的功能覆盖率;其中funi表示染色体si的测试用例的功能点覆盖数量,fun表示测试用例集合的功能点覆盖数量。在测试领域中通常采用功能覆盖率评价测试的全面性,在适应度中引入功能覆盖率,从而使得算法趋于选择功能覆盖率更高的染色体,从而进一步提高测试的全备性。
[0080]
根据公式计算染色体序列si的缺陷检测度;其中di表示染色体si的实际检测的缺陷数量,defi表示染色体si预期检测出的缺陷数量。由于构造的测试用例是以故障原因为约束条件的,因此更多检测出缺陷度的测试用例更好,因此在适应度中引入缺陷检测度,从而使得算法趋于选择缺陷检测度更高的染色体,从而提高测试的准确性,更多
发现缺陷问题,进而提高封装模块的安全性。
[0081]
初始种群中每条染色体对应的测试用例完成测试后,根据上述适应度计算公式计算每条染色体的适应度,放弃适应度低的染色体,选择适应度高的染色体作为父染色体。
[0082]
s23、采用比例选择策略选择适应度高的染色体序列作为父染色体,对所述父染色体进行交叉和变异,生成新的染色体,所述父染色体和新的染色体构成新的种群,执行步骤s22;
[0083]
具体的,采用比例选择策略选择适应度高的染色体序列作为父染色体,包括:
[0084]
s231、根据公式计算种群中每条染色体被选中为父染色体的概率;其中,f(si)表示染色体si的适应度,m表示种群中染色体的个数;
[0085]
s232、根据公式计算种群中每条染色体被选中为父染色体的累积概率;
[0086]
引入累积概率,将二维平面问题转变为一维线性问题,pi越大,在随机数区间中占的位置越长,被选中的概率越大。
[0087]
s233、生成伪随机数r,若r≤q1,则选择第一条染色体;否则,选择染色体k,使得q
k-1
《r≤qk成立;重复步骤s233,直至父染色体个数达到预设的数量。
[0088]
实施时,生成[0,1]区间内的伪随机谁r,若r小于等于第一条染色体的累积概率,则选择第一条染色体,否则选择累积概率比r大的最小的累积概率对应的染色体,即选择选择染色体k,使得q
k-1
《r≤qk成立,重复该步骤直至父染色体的数量达到预设的数量,实施时,预设的数量可根据初始种群规模确定,例如数量设置为初始种群规模大小的一半。
[0089]
遗传算法种群迭代进化过程中,无法通过选择策略生成新的个体,选择策略以牺牲种群多样性的代价提高子代种群的适应度,而交叉策略是在种群中建立新个体的重要方式。遗传算法中的交叉策略对应于生物遗传过程中的“基因重组”,将选中的父代染色体放入交叉池中,进行随机配对,按照交叉概率pc进行交叉操作。针对不同代优化问题应选用不同的交叉策略,在可编程逻辑器件的封装模块安全性测试过程中,由于基于同一最小割集提取的约束条件个数是有限的,对其进行交叉操作选用单点交叉的方式较合适。
[0090]
具体操作为,对随机选取的两条父染色体:
[0091]

生成随机数cros∈(0,1),若cros小于pc则执行步骤


[0092]

生成随机数crospos作为交叉位,将该交叉位右侧染色体片段进行交换。
[0093]
例如两个长度为8的染色体配对后,选中交叉位为4,则执行交叉操作如下所示:
[0094][0095]
遗传算法中的变异策略对应于生物遗传过程中“基因突变”现象,基因突变会生成新的染色体,其宏观个体也将表现出不同于父代的性状。遗传算法中引入变异策略的基本思想是,通过对染色体特定基因座的值进行改变,生成新的子代。
[0096]
染色体的变异有两个目的:一是在算法初期可以用于维持种群的多样性,避免遗漏最优解或使算法早熟,此时变异概率应选择较大值。二是使遗传算法能够在包含最优解的空间内进行深度搜索,变异概率应选择较小值,避免在最优解临域内波动过大,无法有效
收敛。
[0097]
在本技术中,染色体通过变异概率pm,使得其基本位上的基因产生了变异,从而产生新的种群。对于二进制编码方式的染色体来说,基因位取值非0即1,则在执行变异操作时,意味着将变异点进行取反操作。
[0098]
具体操作如下,对随机选取的染色体:
[0099]

生成随机数muta∈(0,1),若muta小于pm则执行步骤


[0100]

生成随机数mutapos,在染色体片段上选定mutapos作为变异位,对该位置基因进行取反操作。
[0101]
例如长度为8的染色体进行变异操作时,选中变异位为6,则进行变异操作后,结果为:
[0102]
[00111110]

[00111010]
[0103]
通过对所述父染色体进行交叉和变异,生成新的染色体,父染色体和新的染色体构成新的种群,再一次执行步骤s22,直至迭代满足要求,即种群的整体适应度不再变化且功能覆盖率满足精度要求,则迭代结束。种群的整体适应度可取所有染色体的适应度均值或去适应度最高值。
[0104]
根据适应度计算公式计算当前种群中的每条染色体的适应度,当前种群中适应度最高的染色体对应的测试用例组为最优测试用例组,最优测试用例组的测试结果为所述封装模块的安全性测试结果。具体的,最优测试用例组的测试结果包括其测试覆盖率,缺陷检测情况等,通过采用采用遗传算法快速选择最优测试用例组,从而提高了测试的覆盖率和测试效率。
[0105]
本发明的一个具体的实施例公开了一种可编程逻辑器件封装模块的安全性测试系统,如图2所示,包括以下模块:
[0106]
测试用例集合生成模块,针对所述封装模块的每个功能,采用软件故障树分析法和软件失效模式与影响分析法进行故障分析,得到每个功能对应的综合故障树;以每个所述综合故障树中的最小割集为约束条件构建测试用例,所有测试用例构成测试用例集合;
[0107]
安全性测试模块,采用遗传算法从所述测试用例集合中选择最优测试用例组,所述最优测试用例组对所述可编程逻辑器件的封装模块进行测试,得到所述可编程逻辑器件的封装模块的安全性测试结果。
[0108]
优选的,所述安全性测试模块采用遗传算法从所述测试用例集合中选择最优测试用例组合,包括:
[0109]
s21、以测试用例是否被选择作为染色体的基因,随机生成若干条染色体序列作为初始种群;
[0110]
s22、采用所述种群中的染色体序列对应的测试用例组对所述封装模块进行测试,计算每条染色体序列的适应度和功能覆盖率;若种群的整体适应度不再变化且功能覆盖率满足精度要求,则当前种群中适应度最高的染色体对应的测试用例组为最优测试用例组,所述最优测试用例组的测试结果为所述封装模块的安全性测试结果;否则,执行步骤s23;
[0111]
s23、采用比例选择策略选择适应度高的染色体序列作为父染色体,对所述父染色体进行交叉和变异,生成新的染色体,所述父染色体和新的染色体构成新的种群,执行步骤s22。
[0112]
优选的,所述安全性测试模块采用公式f(si)=qua(si) cov(si) def(si) sev(si)计算每条染色体序列的适应度,其中,qua(si)表示染色体si的测试用例个数度量;cov(si)表示染色体si的功能覆盖率;cov(si)表示染色体si的缺陷检测度;sev(si)表示染色体si的测试用例影响度。
[0113]
上述方法实施例和系统实施例,基于相同的原理,其相关之处可相互借鉴,且能达到相同的技术效果。具体实施过程参见前述实施例,此处不再赘述。
[0114]
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
[0115]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献