基于嵌入式武控软件的数学模型验证研究
2015-03-16高赛军代晓倩
高赛军 代晓倩
摘要:该文介绍了嵌入式武控软件数学模型的基本特点及基本验证方法。同时针对如何更加高效的完成数学模型验证工作,提出了使用函数调用选择法来进行武控软件的数学模型验证。
关键词:嵌入式软件;数学模型验证;函数调用选择法
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)04-0058-03
Abstract: This dissertation introduce the basic features and basic validation of embedded Weapon-Control software. At the same time,aiming at how to make more efficient completion of the verification work of the Mathematical Model,put forward the a method of Function Call to verification Mathematical Model validating of embedded Weapon-Control software.
Key words: embedded software; Mathematical Model validating; Function Call method
嵌入式武控软件中使用数学模型越来越常态化,为了确保武控软件在作战时能够得到正确的结论,进行作战系统分析、预测和辅助决策时,必须保证数学模型能够准确地反映实际作战系统并能在计算机上正确运行。因此,必须对模型的有效性进行验证。
1 嵌入武控软件数学模型的特点
嵌入武控软件数学模型处理包括:目标数据滤波、舰摇摆数据滤波处理、目标威胁判断和排序、射击通道组织、发射区计算、射击诸元计算、射击决策和射击效果评估。这些数学处理模块作为武控软件的核心处理模块,单独对其进行单元测试级别的测试。
测试的特点与难点:
1)嵌入武控软件数学模型涉及大量复杂的数学公式与数值计算。
2)嵌入武控软件数学模型使用大量的全局变量和局部变量。
3)除了以上2点外,嵌入武控软件数学模型还要求具有高实时性及高可靠性等特点。
2 嵌入武控软件数学模型验证方法
通过以上对嵌入武控软件数学模型测试特点的分析可以得出,传统的黑盒测试或者白盒测试方法对此类模块测试时缺陷发现率会极低,测试的自动化程序不高,更多的要借助人工来完成测试,而且测试完成后,也没有一定的标准来度量,完全靠测试人员的能力、经验及自觉性,这样测试的有效性与充分性[1]就得不到很多的保证。针对以上分析的嵌入武控软件数学模型测试的特点,就要求设计一种有针对性的、可行的测试方法(函数调用选择法)来保证嵌入武控软件数学模型测试的有效性与充分性。函数调用选择法以函数或者函数基本调用路径作为基本测试单元,通过分析判断函数之间的调用关系来确定测试的重点与出发点,然后对其进行插桩,编写测试驱动脚本,测试用例则通过函数参数的范围或者人工设定,再执行测试用例,比较预期运算结果,完成测试。整个过程要结合自动化的代码规则检查。
2.1 嵌入武控软件数学模型测试方法实现
6)编写测试所用的驱动脚本程序即对程序进行插桩(记录程序语句执行情况),执行[vi]节点的函数直至结束,要求脚本能显示函数执行完成后各个全局变量的值,[k=k+1];
7)取全局变量中与各个数学模型相的参数变量,例如杀伤区模型的参数变量包括目标数据(距离、方位角及高低角等)与系统所处地理位置及气象条件数据(经度、纬度、温度、风速等),给出变量的取值范围;
8)按边界值法、等价类法及变量范围内均匀取值的方法,不断的变换[vi]中的参数的值,与其他全局变量一起做300组数据,作为300个测试用例的数据输入,执行步骤6,如果执行超时,则直接报错,如果执行正常,则记录下执行结果(包括程序输出结果与程序语句执行情况);
9)查询理论数据表,比较第8步骤完成的测试结果数据与理论数据比较,循环执行步骤6~9,如果还存在未打标记且出入度不全为零的节点,如果[Sk]的起始节点不是[vi],令[vi=Sk]的起点节点,否则循环执行[k=k+1],直到[Sk]的起始节点不是[vi],再使[vi=Sk]的起始节点,[vj=Sk]的终点,若不存在未执行且出入度不全为零的节点,则转到步骤11;
10)重复执行步骤5~9直到不存在未执行的且出入度不全为零的节点;
11)人工检查并且分析未执行的函数和语句,如果是可执行代码,继续编写测试用例,完成此代码的执行覆盖;
12)重复步骤11直到可执行的代码全部执行;
13)测试结束。
2.2 嵌入武控软件数学模型测试方法的有效性与充分性分析
以上描述的函数调用选择法以黑盒测试方法与白盒测试方法的有机结合,很好的解决了此次武控软件数学模型测试的难题。首先,其选一个函数作为基本节点来分析程序调用关系,形成函数调用有向图,极大地的降低了白盒测试方法中对程序结构分析的难度,同时提高了效率。如图1中,很显然7个节点函数的调用路径共4条:[v7,v2-v1-v3,v2-v1-v4-v6,v5-v4-v6],但是如使用控制流图,假如7个函数平均存在3条基本路径,则其路径总数达到:[Rtotal=3+33+34+33=138]条,相差2个数量级。此外,数学计算中使用公式比较多,所以程序实现时一个函数实现一个基本公式,对于这些基本公式函数使用黑盒测试比较容易,而且充分。
3 嵌入武控软件数学模型测试试验
为了测试数据有可比较性,把测试人员分成能力相当A、B 2个小组,每个组2个人。A组与B组同时对两个测试项目进行测试:某型武控系统目标数据滤波软件与某型武控系统杀伤区解算软件(两个软件都使用标准C编程实现,使用Tonado开发环境软件实现编译,运行在Vxworks操作系统下;第一个软件共3567行代码,32个函数,86个变量;第二软件共5726行代码,46个函数,152个变量)。
A组使用传统人工测试方法与自动测试工具软件(Logiscope、TestBed和PolySpace)完成以上两项测试工作,B小组使用以上描述的函数调用选择法配合自动化测试工具软件(Logiscope与McCabe)及人工测试完成以上两项测试工作。测试结果数据统计如表1。
从表1中可分析出,B组测试使用的时间更少,但发现的缺陷数却更多,在软件规模上增加后,A小组甚至于在语句上不能达100%的覆盖。所以,由以上试验数据表明此针对数学模型的测试相对于传统的测试方法更加有效与充分。
4 结束语
本文简要介绍了嵌入武控软件数学模型测试的难点与重点,针对数学模型的自身相关特点,提出了适合于嵌入武控软件数学模型测试的方法,详细分析此方法的实现过程,并且通过试验分析比较传统测试方法与函数调用选择法。
参考文献:
[1] Shan Jinhui, Jiang Ying, Sun Ping. Research Progress in Software Testing[J].Acta Scientiarum Naturalium Univ-ersitatis Pekinensis, 2005,41(1):134-145.
[2] Harrold M J,Rothermel G.A system for research on and development of program analysis-basedtools[R].OSU-CISRC-3/97-TR17, The Ohio State University, 1997.
[3] 于屏岗.面向故障的软件自动测试技术[D].北京:装甲兵工程学院,2005.
[4] Hemant D P, William P L, Barbara G R. Interprocedural Def-Use associations for C Systems with Single LevelPointers[J]. IEEE Transactions on Software Engineering,1994,20(5): 385-403.
[5] 丁振国. C/C++语言故障模型研究[D].北京:装甲兵工程学院,2005.