一种控制律软件的测试方法

xiaoxiao2020-10-23  13

一种控制律软件的测试方法
【技术领域】
[0001] 本发明设及软件测试技术领域,具体而言,设及一种控制律软件的测试方法。
【背景技术】
[0002] 软件测试,是在规定的条件下对程序进行操作,W发现程序错误,衡量软件质量, 并对其是否能满足设计要求进行评估的过程。软件测试的目的是尽可能地发现存在于软件 中的错误及缺陷,而针对于多模态、多速率组等特点的控制律软件来说,有限的测试数据并 不能完全的验证控制律软件的正确性。在W往的控制律软件测试中,软件测试人员根据控 制律功能点来选取测试数据,如果测试结果正确则认为控制律软件是正确的,然而该些具 有功能点数据的正确性并不能代表所有数据的正确性,因此未能发现存在于软件中的错误 及缺陷。如使用控制律仿真软件生成的数据作为测试数据,成千上万组测试数据由测试人 员人工输入也是不现实的,且输入数据的准确性也有待质疑。

【发明内容】

[0003] 本发明的目的在于解决上述现有技术中的不足,提出一种控制律软件的测试方 法,能够覆盖控制律模型中的连续数据,尽可能的发现控制律软件中存在的错误。本发明控 制律软件的测试方法对基于控制律仿真模型的控制律软件进行测试,包括如下步骤:
[0004] S101、选取控制律仿真模型中的某一运行周期,提取该运行周期内的连续性多组 测试数据,所述运行周期是指在该运行周期内覆盖所述控制律仿真模型中的所有控制指 令,所述连续性多组测试数据中的每一组测试数据包括输入数据和预期输出数据;
[0005] S102、对所述连续性多组测试数据中的每一组测试数据,将其输入数据作为控制 律软件的输入,执行所述控制律软件,并将所述控制律软件的输出作为实际输出数据,将预 期输出数据与实际输出数据进行比对,若所述预期输出数据与实际输出数据的绝对误差超 过精度要求,则计一次软件错误,按该步骤内上述方法执行所述连续性多组测试数据中的 所有测试数据,统计软件错误次数;
[0006] S103、使用软件测试工具对由步骤S102中设及的方法所产生的程序进行测试;
[0007] S104、若步骤S102中软件错误次数不为零,则对所述控制律软件进行程序修改, 使其程序正确,并用步骤S101-S103进行验证,直至所述软件错误次数为零;
[000引S105、分析软件测试结果,对未覆盖到的测试数据进行分析,在所述控制律模型中 再次生成未被覆盖的范围,进行补充测试,重复执行步骤S101-S104,直至覆盖所述运行周 期内所有的测试数据。
[0009] 优选的是,通过在所述控制律仿真模型中添加数据生成模块提取所述运行周期内 的连续性多组测试数据,该数据生成模块通过读取控制律仿真模型中的输入数据与预期输 出数据,通过预处理模块对提取的数据进行处理,把处理后的输入数据作为控制律软件的 输入,并运行控制律软件得到实际输出。
[0010] 上述任一方案中优选的是,所述控制律仿真模型使用MTLAB中的Simulink仿真 模块构建。
[0011] 上述任一方案中优选的是,在步骤S102中,将预期输出数据与实际输出数据进行 比对时,所述的精度不超过0. 001。
[0012] 优选的是,所述精度为0.0001。
[0013] 上述任一方案中优选的是,所述对步骤S103中的软件测试工具,包括TESTBED。
[0014] 上述任一方案中优选的是,所述分析软件测试结果指对所述软件测试指标进行分 析,包括语句覆盖率、分支覆盖率W及功能覆盖率。
[0015] 本发明所提供的控制律软件的测试方法能更有效、更大范围的对控制律软件中的 数据进行软件测试,且方法简单,测试数据覆盖范围广。通过在控制律软件中设置的驱动测 试程序,不仅能对控制律软件生成的实际输出与仿真模型的预期输出做比较结果统计,而 且通过循环语句读取该控制律软件同样能完成该控制律软件的测试。避免了大数据的人工 录入,方法简单,可广泛应用于机载软件中的大量的连续性数据测试。
【附图说明】
[0016] 图1是按照本发明的控制律软件的测试方法的一优选实施例的测试流程图。
【具体实施方式】
[0017] 为了更好地理解本发明所提供的控制律软件的测试方法,下面结合附图对其进一 步说明。
[0018] 如图1所示,本发明控制律软件的测试方法包括如下步骤:
[0019] S101、选取控制律仿真模型中的某一运行周期,提取该运行周期内的连续性多组 测试数据,所述运行周期是指在该运行周期内覆盖所述控制律仿真模型中的所有控制指 令,所述连续性多组测试数据中的每一组测试数据包括输入数据和预期输出数据;
[0020] 应当理解的是,控制律软件具有多模态、多速率组等特点,因而该控制律软件具有 周期性。在本实施例中,采用周期为12. 5ms,具有50ms和100ms两个速率组的控制律软件 进行测试,如选取200s运行周期,则生成16001组测试数据。
[0021] 本实施例通过编写".m文件"用W提取该运行周期内的连续性多组测试数据,通 过在所述控制律仿真模型中添加该读取文件,W提取所述运行周期内的连续性多组测试数 据,如需对飞机的起落架开关SW_GEAR、迎角ALPHA、驾驶杆横向位移DX、脚踐位移DY、滚转 角速率Wx、偏航角速率Wy、左副翼偏度DTX化、右副翼偏度DTXCR进行监视,其中,起落架开 关SW_GEAR、迎角ALPHA、驾驶杆横向位移DX、脚踐位移DY、滚转角速率Wx、偏航角速率Wy为 输入数据,左副翼偏度DTXCL、右副翼偏度DTXCR为控制律仿真模型的预期输出文件。则编 写".m文件"如下:
[0022] void In_Out_Data(void) {
[0023]
[0024] 该数据生成模块通过函数In_Out_Data,读取控制律 仿真模型中的输入数据与预 期输出数据,并把输入数据进行预处理后,作为控制律软件的输入,从而运行得到实际输 出。
[0025] S102、对所述连续性多组测试数据中的每一组测试数据,将其输入数据进行预处 理后作为控制律软件的输入,执行所述控制律软件,并将所述控制律软件的输出作为实际 输出数据,将预期输出数据与实际输出数据进行比对,若所述预期输出数据与实际输出数 据的绝对误差超过精度要求,则计一次软件错误,按该步骤内上述方法执行所述连续性多 组测试数据中的所有测试数据,统计软件错误次数;
[0026] 应当理解的是,本发明中将预期输出数据与实际输出数据进行比对时,所述的精 度不超过0. 001,在本实施例中,取精度0. 0001,具体比较过程如下:
[0027]
[0028] 需要说明的是,输入"SW_GEAR,ALPHA,DX,DY,Wx,Wy"首先赋值给本函数全局变 量,之后执行控制律函数,本函数在循环过程中,调用了函数ControlLaw0,即控制律软件, 通过控制律软件输出"VDTX化"W及"VDTXCR",即实际输出,之后与预期输出结果"DTX化、 DTXCR"做绝对误差油S,并与精度0. 0001进行比较,输出统计结果"result"。
[0029] S103、使用软件测试工具对由步骤S102中设及的方法所产生的程序进行测试;应 当理解的是,本实施例中步骤S102的驱动测试程序替换了原有的控制律测试软件读取程 序,不仅可W批量进行输入、输出数据导入,而且在该驱动测试程序的循环语句里,调用了 控制律软件对应的函数ControlLawO,因而控制律软件的测试软件具备了读取控制律软件 程序的功能,从而也能达到原控制律软件的测试软件所具备的软件测试功能。通过软件测 试模块对控制律软件进行测试。本实施例中,所述的控制律的软件测试工具为TESTBED。使 用该软件测试工具对所述的驱动测试程序进行覆盖率的统计,及对其内的控制律软件进行 覆盖统计,由于对大数据进行测试的阶段一般在软件集成测试阶段进行,因此,较多关注语 句、分支、功能的覆盖率。
[0030] S104、若步骤S102中软件错误次数不为零,证明该控制律软件本身存在程序性错 误,需要对所述控制律软件进行程序修改,使其程序正确,并用步骤S101-S103进行验证, 直至所述软件错误次数,即统计结果"result"为零。
[0031] S105、分析软件测试结果,对未覆盖到的测试数据进行分析,在所述控制律模型中 再次生成未被覆盖的范围,进行补充测试,重复执行步骤S101-S104,直至覆盖所述运行周 期内所有的测试数据。
[0032] W上结合本发明的具体实施例做了详细描述,但并非是对本发明的限制,凡是依 据本发明的技术实质对W上实施例所做的任何简单修改均属于本发明的技术范围,还需要 说明的是,按照本发明的控制律软件测试方法技术方案的范畴包括上述各部分之间的任意 组合。
【主权项】
1. 一种控制律软件的测试方法,对基于控制律仿真模型的控制律软件进行测试,其特 征在于,包括: 5101、 选取控制律仿真模型中的某一运行周期,提取该运行周期内的连续性多组测试 数据,所述运行周期是指在该运行周期内覆盖所述控制律仿真模型中的所有控制指令,所 述连续性多组测试数据中的每一组测试数据包括输入数据和预期输出数据; 5102、 对所述连续性多组测试数据中的每一组测试数据,将其输入数据作为控制律软 件的输入,执行所述控制律软件,并将所述控制律软件的输出作为实际输出数据,将预期输 出数据与实际输出数据进行比对,若所述预期输出数据与实际输出数据的绝对误差超过精 度要求,则计一次软件错误,按该步骤内上述方法执行所述连续性多组测试数据中的所有 测试数据,统计软件错误次数; 5103、 使用软件测试工具对由步骤S102中涉及的方法所产生的程序进行测试; 5104、 若步骤S102中软件错误次数不为零,则对所述控制律软件进行程序修改,使其 程序正确,并用步骤S101-S103进行验证,直至所述软件错误次数为零; 5105、 分析软件测试结果,对未覆盖到的测试数据进行分析,在所述控制律模型中再次 生成未被覆盖的范围,进行补充测试,重复执行步骤S101-S104,直至覆盖所述运行周期内 所有的测试数据。2. 如权利要求1所述的控制律软件的测试方法,其特征在于:通过在所述控制律仿真 模型中添加数据生成模块提取所述运行周期内的连续性多组测试数据。3. 如权利要求2所述的控制律软件的测试方法,其特征在于:所述控制律仿真模型使 用MATLAB中的Simulink仿真模块构建。4. 如权利要求1所述的控制律软件的测试方法,其特征在于:在步骤S102中,将预期 输出数据与实际输出数据进行比对时,所述的精度不超过0.001。5. 如权利要求1所述的控制律软件的测试方法,其特征在于:所述对步骤S103中的软 件测试工具,包括TESTBED。6. 如权利要求5所述的控制律软件的测试方法,其特征在于:所述分析软件测试结果 指对所述软件测试指标进行分析,包括语句覆盖率、分支覆盖率以及功能覆盖率。
【专利摘要】本发明提供了一种控制律软件的测试方法,涉及软件测试领域,对基于控制律仿真模型的控制律软件进行测试。本发明通过对控制律仿真软件生成的连续性输入数据以及预期输出数据进行数据预处理,并执行控制律软件得到实际输出数据,比较实际输出数据与预期输出数据,同时,使用成熟的软件测试工具对上述步骤进行控制律软件数据覆盖率等测试指标统计。
【IPC分类】G06F11/36
【公开号】CN104881363
【申请号】CN201510351825
【发明人】刘佳, 魏小勇, 李育
【申请人】中国航空工业集团公司西安飞机设计研究所
【公开日】2015年9月2日
【申请日】2015年6月24日
转载请注明原文地址:https://www.famiwei.com/read-8138712.html

最新回复(0)