一种面向NuXMV的安全关键系统状态转换图测试用例生成方法

文档序号:30328491发布日期:2022-06-08 04:59阅读:199来源:国知局
一种面向NuXMV的安全关键系统状态转换图测试用例生成方法
一种面向nuxmv的安全关键系统状态转换图测试用例生成方法
技术领域
1.本发明属于安全关键系统建模和测试用例生成技术领域,具体涉及一种面向nuxmv的安全关键系统状态转换图测试用例生成方法。


背景技术:

2.1978年parns等人提出了一种指明需求的四变量模型。由于该模型是以抽象的形式来指明需求,无法对需求进行形式化分析。nuxmv是一种新的符号模型检查器,结合了基于bdd的模型检查组件(利用了科罗拉多大学fabio somenzi开发的cudd库)和基于sat的模型检查组件(包括一个基于rbc的有界模型检查器),该有界模型检查器可以连接到minisat sat求解器和/或zchaff sat求解器,可以可靠地用于工业设计的验证,作为定制验证工具的核心,作为形式验证技术的测试平台,并应用于其他研究领域。nuxmv主要用于分析同步有限状态和无限状态系统,对于有限状态,nuxmv有基于热诺瓦大学所提供的sim,它是一个最先进的sat算法的强大验证引擎;对于无限状态,nuxmv具有smt的验证技术,通过与mathsat5的紧密集成实现。
3.状态转换图(state transition diagram,std)可以详细的描述完整的系统行为,即系统的输入与输出的约束关系的静态行为和具有时间次序的约束关系的动态行为。为了精确描述变量关系模型的状态转换图,将状态转换图定义为一个四个元组std=《s,s_0,s_f,c》,其中s是一个状态的集合,包含有初始状态s0,结束状态sf以及中间状态的集合;初始状态s0表示系统的开始状态。例如按下开关按钮后系统启动,其初始状态就是开关未按下,系统未启动;终结状态sf表示系统的结束状态,即当触发事件发生后系统达到的稳态,例如开关按下,系统启动;c表示状态转移条件的集合,此约束可以是触发的系统事件或者状态推进要满足的某种条件。
4.针对变量关系需求模型进行形式化验证可以通过nuxmv符号模型检查器进行验证,对于系统设计中存在的关键安全性问题,可以根据对应的安全属性模板设计其时序逻辑语句,然后通过验证这条语句来判定系统设计是否完整与一致。但是对于编码层的安全性要求,并没有给出可行的解决方案。


技术实现要素:

5.本发明所要解决的技术问题是针对上述现有技术的不足,提供一种面向nuxmv的安全关键系统状态转换图测试用例生成方法,根据nuxmv符号模型检查器的状态转换图,提出一个能够验证编码与设计是否一致的解决方案,能够找出安全关键系统在编码过程中存在的安全性问题,验证编码和设计的一致性,提高安全关键系统的可靠性。
6.为实现上述技术目的,本发明采取的技术方案为:
7.一种面向nuxmv的安全关键系统状态转换图测试用例生成方法,包括:
8.s1,将变量关系模型表示的安全关键系统转换为nuxmv符号模型检查器可接受的
状态转换图模型,根据状态转换图可解释化预处理算法,读取和解析所述图模型文件,对图模型进行预处理,从状态转换图模型中解析出结点流和条件流;
9.s2,对解析出的结点流和条件流进行规约,制定不同的覆盖策略,并基于覆盖策略通过验证存在性属性的方式生成反例状态转移路径,存入测试用例集中;
10.s3,对s2得到的测试用例集去冗余化,得到最小最优的测试用例集。
11.为优化上述技术方案,采取的具体措施还包括:
12.上述的s1中,将变量关系模型转换为nuxmv符号模型检查器可接受的状态转换图模型,所述状态转换图可解释化预处理算法,通过读取已经转换好的图模型文件,遍历文件中是字符流,将文件规范为结点和条件数据结构,提取出结点流以供给路径覆盖算法使用,提取出条件流,并遍历条件流,自动生成条件的真值表,通过真值表的方式预处理为条件的主析取范式表达式以供给变换覆盖算法使用。
13.上述的结点流是状态转换图中的状态结点,包含开始结点、中间状态结点和结束结点,每一个结点都对应一组变量以及变量在特定时序下的值,每个结点各不相同;
14.所述条件流是状态转换图中状态转换的条件集,每一个条件可是单一的条件元,也可以是复杂的条件元,复杂的条件元需要在预处理过程中提取出析取范式。
15.上述的s2中,根据预处理后的图模型,制定基于结束结点的覆盖策略和基于状态结点变换的覆盖策略;
16.根据基于结束结点的覆盖策略得到每一个结束结点其包含的所有变量的存在性属性验证结果,其结果是一组带有重复路径的反例状态转移路径,存放在测试用例集中;
17.根据基于状态结点变换的覆盖策略得到所有变量的存在性属性验证结果,其结果是一组带有重复路径的反例状态转移路径,存放在测试用例集中。
18.上述的根据基于结束结点的覆盖策略得到每一个结束结点其包含的所有变量的存在性属性验证结果,其结果是一组带有重复路径的反例状态转移路径,存放在测试用例集中,具体为:
19.根据基于结束结点的覆盖策略,首先遍历结点流中的每一个结点,若这个结点存在下一结点,则这个结点是中间状态结点,那么在遍历时指针后移,若这个结点不存在后续结点,则这个结点是结束结点,那么将表示系统最终状态的结束结点存入存放结束结点的集合,并将结束结点包含的所有变量以及取值用哈希表存储;
20.然后遍历每一个结束结点的每一个变量,将变量和取值一一配对,自动生成对应的验证时序逻辑表达式字符串,一并写入到系统的图模型文件nuxmvname.smv中,调用验证引擎,生成对应的存在性路径,通过后台读取生成信息,存入到测试用例集合中。
21.上述的根据基于状态结点变换的覆盖策略得到所有变量的存在性属性验证结果,其结果是一组带有重复路径的反例状态转移路径,存放在测试用例集中,具体为:
22.根据基于状态结点变换的覆盖策略,从状态结点分支出发,执行如下步骤:
23.1)遍历结点流中的每一个结点,若这个结点存在下一结点,则这个结点是中间状态结点,那么在遍历时指针后移,若这个结点不存在后续结点,则这个结点是结束结点,那么将表示系统最终状态的结束结点存入存放结束结点的集合,并将结束结点包含的所有变量以及取值用哈希表存储。
24.2)遍历每一个结束结点的每一个变量,将变量和取值一一配对,自动生成对应的
验证时序逻辑表达式字符串verificationnodestring;
25.3)遍历条件流中的每一个条件,获取条件的析取范式表达式,自动填充ef关键字,将条件流转换为条件存在性时序逻辑表达式,存入verificationconstring集合中;
26.4)将结点总结的时序逻辑表达式和条件总结的时序逻辑表达式一并写入到系统的图模型文件nuxmvname.smv中,调用验证引擎,生成对应的存在性路径;
27.5)通过后台读取生成信息,存入到测试用例集合中。
28.上述的s3中,将测试用例集中每个变量的反例状态转移路径进行对比,去除冗余和无效的反例状态转移路径,得到最小最优的测试用例集。
29.本发明具有以下有益效果:
30.本发明提出了变量关系模型(variable relationship model,vrm)来将抽象的方法进行设计与实现,该模型通过状态变量、条件、事件、函数、类型等元素来描述需求,将需求转换为表格形式表达,从而使得需求具有状态及的特点。此外,由于安全关键系统比较庞大复杂,引入了中间变量来对系统进行分层,以及定义各变量之间的拓扑排序结构、依赖关系以及状态变化,使得该方法在安全关键系统中具有可行性。
31.本发明使用nuxmv符号模型检查器将由变量关系模型转换而来的状态转换图进行分析,解决了无法发现编码过程中存在的安全性问题。本发明从需求出发,对于一个修正后完整且一致的变量关系模型进行自动生成测试用例集,获取每一条条目需求对应的测试用例集,通过判断预期结果与实际结果是否一致可以检查编码软件是否与完整的设计一致,具体的:
32.(1)制定基于结束结点的覆盖策略,主要可以暴露出系统编码中缺少或错误需求期望的功能结果所带来的问题。通过验证系统模型中所有结束结点“是否可达”与“是否存在可达路径”等功能性属性,获取所有功能测试的路径用例。可以覆盖到需求中的所有功能要求,能够满足用户生成功能性的测试用例的需求。
33.(2)制定基于状态结点变换的覆盖策略,能够暴露非必要功能缺失的编码错误和功能实现方式缺失的编码错误。通过将功能性测试用例生成的问题转换为模型验证的中状态转换图到达路径完整性问题,验证系统模型中“到达状态结点的路径是否完整”和“所有状态变换是否完整”等功能性属性,获取所有功能测试的路径用例。
附图说明
34.图1为本发明的面向nuxmv的安全关键系统状态转换图测试用例生成框架;
35.图2为本发明的基于结束结点的覆盖策略变量组例子;
36.图3为本发明的基于状态结点变换的覆盖策略变量组例子;
37.图4为本发明的模型可解释化预处理伪代码示意图;
38.图5为本发明的基于结束结点路径覆盖测试用例生成伪代码示意图;
39.图6为本发明的基于状态结点变换覆盖测试用例生成伪代码示意图;
40.图7为本发明的面向nuxmv的安全关键系统状态转换图测试用例生成方法流程图。
具体实施方式
41.以下结合附图对本发明的实施例作进一步详细描述。
42.本发明主要解决了在安全关键系统无法发现编码过程中存在的安全性问题。为了解决这个问题,本发明主要包括三部分内容。其一,设计并实现状态转换图可解释算法,将状态转换图解析为数据流。其二,是根据解析后的图模型,设计了基于结束结点的覆盖策略和基于状态结点变换的覆盖策略,来生成测试路径集。其三,删除测试用例集中存在的冗余测试用例,得到最小最优的测试用例集。
43.结合图1-7,本发明提及一种面向nuxmv的安全关键系统状态转换图测试用例生成方法,所述方法包括以下步骤:
44.s1,根据状态转换图可解释化预处理算法,读取和解析状态转换图模型文件,对状态转换图模型进行预处理,从状态转换图模型中解析出结点流和条件流;
45.实施例中,s1中,将变量关系模型转换为nuxmv符号模型检查器可接受的状态转换图模型,所述状态转换图可解释化预处理算法,通过读取已经转换好的图模型文件,遍历文件中是字符流,将文件规范为结点和条件数据结构,提取出结点流以供给路径覆盖算法使用,提取出条件流,并遍历条件流,自动生成条件的真值表,通过真值表的方式预处理为条件的主析取范式形式以供给变换覆盖算法使用。状态转换图可解释化预处理算法伪代码如图4所示。
46.即读取和解析状态转换图模型文件,将状态转换图模型解析为数据流,所述数据流主要分为结点流和条件流:
47.所述结点流是状态转换图中的状态结点,包含开始结点、中间状态结点和结束结点,每一个结点都对应一组变量以及变量在特定时序下的值,每个结点各不相同;
48.所述条件流是状态转换图中状态转换的条件集,每一个条件可是单一的条件元,也可以是复杂的条件元,复杂的条件元需要在预处理过程中提取出析取范式。
49.即条件流通过真值表的方式预处理为条件的主析取范式形式。
50.s2,对解析出的结点流和条件流进行规约,制定不同的覆盖策略,并基于覆盖策略通过验证存在性属性的方式生成反例状态转移路径(反例路径),存入测试用例集中;
51.实施例中,s2中,根据预处理后的图模型,制定基于结束结点的覆盖策略和基于状态结点变换的覆盖策略;
52.在基于结束结点的覆盖策略中得到每一个结束结点其包含的所有变量的存在性属性验证结果,其结果是一组带有重复路径的反例状态转移路径,存放在测试用例集中,具体为:
53.根据基于结束结点的覆盖策略,首先遍历结点流中的每一个结点,若这个结点存在下一结点,则这个结点是中间状态结点,那么在遍历时指针后移,若这个结点不存在后续结点,则这个结点是结束结点,那么将表示系统最终状态的结束结点存入存放结束结点的集合,并将结束结点包含的所有变量以及取值用哈希表存储;
54.然后遍历每一个结束结点的每一个变量,将变量和取值一一配对,自动生成对应的验证时序逻辑表达式字符串,一并写入到系统的图模型文件nuxmvname.smv中,调用验证引擎,生成对应的存在性路径,通过后台读取生成信息,存入到测试用例集合中。基于结束结点路径覆盖测试用例生成伪代码如图5所示。
55.基于状态结点变换的覆盖策略得到所有变量的存在性属性验证结果,其结果是一组带有重复路径的反例状态转移路径,存放在测试用例集中,具体为:
56.根据基于状态结点变换的覆盖策略,从状态结点分支出发,执行如下步骤:
57.1)遍历结点流中的每一个结点,若这个结点存在下一结点,则这个结点是中间状态结点,那么在遍历时指针后移,若这个结点不存在后续结点,则这个结点是结束结点,那么将表示系统最终状态的结束结点存入存放结束结点的集合,并将结束结点包含的所有变量以及取值用哈希表存储。
58.2)遍历每一个结束结点的每一个变量,将变量和取值一一配对,自动生成对应的验证时序逻辑表达式字符串verificationnodestring;
59.3)遍历条件流中的每一个条件,从预处理算法中获取条件的析取范式表达式,自动填充ef关键字,将条件流转换为条件存在性时序逻辑表达式,存入verificationconstring集合中;
60.4)将结点总结的时序逻辑表达式和条件总结的时序逻辑表达式一并写入到系统的图模型文件nuxmvname.smv中,调用验证引擎,生成对应的存在性路径;
61.5)通过后台读取生成信息,存入到测试用例集合中。
62.状态转换图被解释为数据流后,把处理单元细化为变量和变量的条件约束,以满足后续s2步骤的状态规约操作的运算。基于状态结点变换覆盖测试用例生成伪代码如图6所示。
63.实施例为:在步骤s2中,对结点流和条件流进行规约的方式具体包括以下步骤:
64.s21,根据结束结点和中间状态结点,制定基于结束结点的覆盖策略和基于状态结点变换的覆盖策略,根据覆盖策略生成反例状态转移路径,所述反例状态转移路径即测试用例;
65.所述基于结束结点的覆盖策略从结束结点出发,其所生成的测试用例的数量与结束结点的数量相等;
66.所述基于中间状态结点变换的覆盖策略从生成状态转换图的分支结点出发,其所生成的测试用例的数量与所有分支结点上变换的数量总和相等。
67.s22,在变量关系模型中,能够处理的最小原子元素并不是状态,而是变量,因此需要将状态进行处理,提取出状态中的变量。
68.根据基于结束结点的覆盖策略,若两个结束结点分别是两组变量组output1和output2;
69.output1有四个变量分别是a、b、c、d,它们的取值都是true;
70.output2有四个变量分别是a、b、c、d,它们的取值都是false;
71.采用ef关键字来构造存在性逻辑表达式,ef表示在树状结构中存在一条路径,且这条路径能够满足要求。
72.因此output1生成以下四条存在性属性的时序逻辑表达式:
73.(1)!ef(a=true)
74.(2)!ef(b=true)
75.(3)!ef(c=true)
76.(4)!ef(d=true)
77.能够同时满足a=true、b=true、c=true和d=true四个条件的路径即为output1所需要的结束路径。output2同理。
78.根据基于状态结点变换的覆盖策略,若两个状态迁移条件分别是constrainta和constraintb。
79.constrainta有两个变量分别是a、b,它们的取值分别是on和off;
80.constraintb有两个变量分别是c、d,它们的取值分别是true和false。
81.和结点覆盖一致,依然用ef关键字来构造存在性逻辑表达式。
82.为了覆盖constrainta这一分支变换,需要生成以下一条存在性属性的时序逻辑表达式:
83.!ef(a=on&b=off)
84.为了覆盖constraintb这一分支变换,需要生成以下一条存在性属性的时序逻辑表达式:
85.!ef(c=true&d=false)
86.能够同时满足a=on&b=off这个条件的路径就能够从状态b能经过constrainta到达状态e;到达b同理。
87.s23,上述步骤所生成的路径在状态转换图中显然可见,因此这条路径必然存在,对这四个存在性属性取反,否定其存在性则可以获得对应的反例状态转移路径。
88.s3,上述步骤处理的数据流包含用户条目化的需求所有结束结点和约束条件,而一部分结点中都包含相同的变量,因此上面得到的反例集(测试用例集)必然存在的重复的路径,因此,需要对s2得到的测试用例集去冗余化,得到最小最优的测试用例集
89.实施例中,在上述的算法所得到的测试用例集中,由于一部分结点中都包含相同的变量,因此上面得到的测试用例集必然存在的重复的路径,因此,需要对得到的反例去冗余化,得到最小最优的测试用例集。即s3中,在获取到反例状态转移路径后,将每个变量的反例状态转移路径进行对比,去除冗余和无效的测试用例,获得一个覆盖率高且有效的测试用例集,并生成对应的测试用例集。
90.以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1