数控设备软件测试的解决方案
扫描二维码
随时随地手机看文章
数控设备中软件的特点
数控设备中的软件大多数都是嵌进式软件,即那些与硬件有着紧密关系并且运行在特定的硬件环境中的软件。嵌进式软件最大的特点就是与硬件环境有着密不可分的关系,整个数控系统的性能、智能化水平的高低以及可靠性的优劣等都是由硬件环境和软件共同决定的。但是众所周知,当前技术条件下软件的可靠性比硬件的可靠性要低一个数目级,据资料统计,嵌进式系统的运行失效中有75%是由其中的软件失效所引起的。事实上软件失效所导致的系统故障已经成为数控设备故障诊断中一个不容忽视的题目了。
数控系统中软件的测试与诊断方法
与硬件故障相比软件失效主要有以下两个特点:(1)软件失效不会随时间而发生变化。硬件的故障中有很大一部分是由于设备的磨损和材料的老化所致,而在软件中则不存在这样的题目,一旦软件运行正确,它是不会随着时间的推移而退化的。(2)软件的失效多数是由程序代码中的固有错误所导致,而对于嵌进式软件来说,软硬件之间的接口错误也是导致失效的一个重要因素。
由于失效机理的不同,软件的诊断方法与硬件通常所使用的故障诊断方法也不尽相同。从保证设备可靠性的角度来看,硬件设备在出厂之前要做一系列的可靠性试验,目的就是要把设计和加工过程中产生的题目提前暴露出来,而到了用户使用阶段,工作的重点就是对设备的运行状态进行监测,对出现的故障进行诊断和维修。而软件的工作重点则在于软件出厂前和使用初期对软件进行的测试,尤其是对软件与硬件集成之后所进行的系统测试。可以这样说,系统测试是发现嵌进式系统中软件题目的最行之有效的方法之一。
在软件测试的理论中,系统测试属于一种动态黑盒测试,即测试职员不必深进软件代码的细节,只需通过控制软件的输进条件驱动被测软件的真正运行。简单的说,动态黑盒测试就是要尽量模拟出被测系统的真实使用情况,并通过对被测系统的实际操纵来达到发现故障的目的。根据系统测试原理,我实验室自主设计开发出一种具有一定通用性的嵌进式软件系统测试环境,并在此基础上总结出一套有效的系统测试方法。本文下面结合一个具体测试实例对系统测试环境以及测试方法进行先容。
发动机数控系统的系统测试
系统测试环境
对一个数控设备中的嵌进式软件进行系统测试的第一步就是要搭建系统测试的环境。系统测试环境的作用就是能够让软件在真实的硬件环境下运行,而且还能够让测试职员把测试用例施加到被测软件中,并且可以收集到测试的结果数据。系统测试环境是一个由硬件和软件共同组成的测试平台。
图1所示即为我们在为某型号发动机的数控系统软件进行测试时设计开发的系统测试环境。
整个测试环境由三大部分组成:测试用例及测试脚本天生环境、系统检测软件以及系统检测箱。其中的测试用例及测试脚本天生环境和系统检测软件属于测试平台的软件部分,而系统检测箱以及与之相连的I/O设备都属于硬件部分。测试用例及测试脚本天生环境是一个图形化的编辑环境,测试职员可以在这个环境中把设计好的测试用例通过画图或是写文本的方式转换成测试脚本,它是测试用例的可执行形式。测试脚本中包含了一系列对被测系统的操纵动作,它的实质作用就是通过控制测试流程来实现测试者的测试意图。
系检测软件由脚本解释器、模型、测试结果收集和显示模块四个部分组成。脚本解释器是用来把测试脚本解释成为可执行的代码形式,在测试过程中用于控制测试流程。模型则根据测试脚本的要求计算产生测试数据,并发送到被测系统之中。测试结果收集是用来收集被测系统运行过程中的状态信息和输出数据。显示模块用来根据测试职员的要求在测试过程中把被测系统的状态信息和输出数据显示出来,以便测试者可以观察和控制测试的进行。
地面检测装置是在设备正常运行之前检测数控系统的完好性和对装置中闪存的读写操纵,以及设备运行以后进行数据下载和数据分析的工具。地面检测装置的功能包括对电子控制器及发动机模型的仿真、电子控制器的检测、继电器箱的检测、传感器的检测和电液伺服阀线圈的检测等。在测试环境中,地面检测装置从系统检测软件中获得模型根据测试脚本所产生的测试数据,在装置内部把这些测试数据全都转换为可以输进到被测系统中的数据形式,并通过I/O接口送到被测系统之中,驱动被测系统的运行并完成测试。从上面的先容可以看出,这套系统测试环境具有以下几个主要特点:
具有一定的通用性。这套环境不仅可以对发动机数控软件进行测试,而且可以对相似的一类嵌进式软件进行测试。
操纵简便。测试环境只需要测试者把测试用例编写成测试脚本的形式,即可在测试环境中实现自动化的测试,无须对被测系统进行直接的操纵。
测试效率较高。由于有系统检测软件和系统检测箱的支持,这种自动化测试的执行效率比手工测试有了较大的进步。
支持重复性的测试。由于测试用例是以测试脚本的形式存在,所以同一个测试可以毫无差别的无穷次执行。重复性测试在故障修改之后的回回测试中有很大的应用。
系统测试过程
在建立好测试环境之后,就可以利用它进行系统测试了,具体过程可以分为以下步骤:
1.设计测试用例。系统测试用例由两部分组成:测试输进序列和测试的预期结果。测试输进序列描述了一次测试中对被测设备的具体操纵流程,包括如何启动设备、何时进行加速操纵、何时进行停车操纵以及何时封闭设备等。测试预期结果描述了被测试的设备在上述的操纵下应该产生什么样的动作或出于什么样的状态。
测试用例的质量是是否能发现设备软件故障的关键所在。在设计测试用例时,可以根据测试的侧重点不同,从正常功能、边界情况和非正常操纵等几个方面进行考虑。正常功能测试就是根据被测试的发动机的正常使用情况,模拟出一些具有代表性的操纵。边界情况的测试是指对输进被测系统的模拟量的边界值进行测试,经验表明当输进量在边界上或是边界的邻近点取值时是最轻易产生错误的,例如在发动机在正常转速范围的边界点四周运行时往往轻易发生故障。非正常操纵主要是考察数控设备软件在处理一些异常情况时的能力,例如在使用者出现错误操纵或是在使用中忽然发生硬件故障的时候数控软件是否具有一定的保护功能,而不至于出现重大的事故,这项测试主要是考察数控系统的可靠性和健壮性。
2.运行测试。设计好的测试用例在测试环境提供的图形化编辑环境中通过画图或是文本方式可以转换成测试环境能够识别的测试脚本形式。每一个测试用例转换成为一个测试脚本,测试脚本可以直接加载到测试环境中进行一次测试。在测试运行过程中测试用例的操纵序中的操纵得到依次执行,被测试的设备也因此得到运行。运行过程中还可以通过测试环境提供的显示模块观察到设备运行的状态。
3.分析测试结果并得出测试结论。一次测试结束之后,测试环境会自动地收集到被测试设备的各项运行数据。把这些数据与测试用例中预期结果进行比较,由此判定被测试设备运行是否正常,是否发生了故障。
从正常功能、边界情况和非正常操纵三个方面考虑我们天生了100个测试用例,并在搭建的测试环境中得到成功的运行,最后通过对测试结果数据的分析,发现了几个关键性的题目,例如当飞机的飞行高度超过一定的值后,软件所进行的插值计算就会出现错误。另外还有由于软件的设计逻辑有题目而导致发动机在不该停车的时候停车了等。经过分析确定这些故障都是由于数控软件的缺陷所导致的。软件设计职员对这些题目进行了正确的修改之后,系统的可靠性和健壮性都得到了很大的进步。
结语
利用本文先容的系统测试环境以及测试方法我们已经成功地进行了多个嵌进式软件的测试,发现了很多软件中潜伏的重要缺陷,在为进步设备的质量和可靠性方面发挥了重要作用。