24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 行业资讯>
- 嵌入式系统中的软件测...
行业资讯
嵌入式系统中的软件测试很(hěn)重要
在嵌入式系统的世界中,不仅仅是继续发展和发展的技术。用(yòng)于开发该技术的工具和方法正在日趋成熟和改进。
在八十年代初期,一家小(xiǎo)型计量公司开发了软件,将工程数學(xué)应用(yòng)于坐(zuò)标测量机(CMM)。但是开发生命周期实质上将生产软件视為(wèi)沙盒。将从生产代码开始,添加功能(néng),执行一些相当基本的功能(néng)测试,然后进行交付。
在这么小(xiǎo)的公司中,工程团队自然会包括软件和硬件专家。事后看来,令人惊讶的是,尽管开发的软件确实需要广泛的客户支持,但对于所运行的硬件,却几乎没有(yǒu)相同的消防文(wén)化。
软件开发是一门工程學(xué)科(kē)
软硬件支持之间的部分(fēn)差异是原始开发过程的结果。但是,软件的可(kě)扩展性和随之而来的功能(néng)不断增加的功能(néng)也起着重要作用(yòng)。简而言之,错误的方法比正确的方法要多(duō)得多(duō),而且该特性要求将其视為(wèi)工程學(xué)科(kē)。
这没有(yǒu)什么新(xīn)的。多(duō)年来,领先的航空,汽車(chē)和工业功能(néng)安全标准(例如DO-178,ISO 26262和IEC 61508)都要求这种方法。但是,要想从当今最先进的开发和测试工具中受益,拥有(yǒu)工程學(xué)科(kē)的思维定势是至关重要的,这些工具旨在為(wèi)这种方法提供服務(wù)。
最近,ISO / IEC / IEEE 29119的开发表明了软件测试的重要性,ISO / IEC / IEEE 29119是一套可(kě)以在任何软件开发生命周期或组织中使用(yòng)的國(guó)际软件测试标准。
要求事项
電(diàn)气系统设计通常从状态机开始,并且了解特定产品的不同操作模式。工程师通常可(kě)以非常快速,轻松地将状态机功能(néng)映射到逻辑。如果状态机变得更加复杂,则通常将其转换為(wèi)软件。
高水平的要求对于确保系统正常运行至关重要。这样的需求表征了业務(wù)逻辑和预期的功能(néng),并能(néng)够评估系统是否按照预期的方式工作。最佳实践遵循从高层需求到分(fēn)析再到覆盖的流程,自然而然,需求可(kě)追溯性工具就是為(wèi)此而设计的。
在状态机模型中,表征每个状态的需求是高级需求的示例。通过代码跟踪执行路径以确保正确解释每个需求是检查正确实现的一种很(hěn)好的方法。
功能(néng)安全标准将其扩展到需求可(kě)追溯性的概念。他(tā)们通常要求用(yòng)户根据高级要求来执行所有(yǒu)代码,并通过低级测试来解释和测试所有(yǒu)未发现的案例。最近,网络安全中的“向左移动”范式呼应了这一信息,如图1所示的V模型。
在任何工程學(xué)科(kē)中,重要的是要确保组件在集成到系统中之前能(néng)够独立正常工作。要将这种思想应用(yòng)于软件,工程师需要定义较低级别的要求,并确保每个功能(néng)和功能(néng)集都在发挥作用(yòng)。工程师还需要确保為(wèi)系统的其余部分(fēn)提供适当的接口。
单元测试涉及在功能(néng)和模块级别对输入和输出进行参数设置,进行检查以确保输入和输出之间的连接正确,并遵循覆盖范围内的逻辑。单元测试工具可(kě)以提供经过验证的测试工具和图形表示,将各个输入和输出连接到执行路径,并可(kě)以验证其正确性。
了解功能(néng)和模块级别的接口也很(hěn)重要。静态分(fēn)析工具可(kě)以显示这些接口,并在不同级别上连接逻辑。
任何學(xué)科(kē)的工程师都会告诉您,发现问题的时间越早,修复这些问题的费用(yòng)就越少。
静态分(fēn)析执行源代码分(fēn)析,以在不实际运行系统的情况下对系统的执行进行建模。编写代码后即可(kě)使用(yòng),静态分(fēn)析可(kě)帮助开发人员最大程度地提高代码的清晰度,可(kě)维护性和可(kě)测试性。静态分(fēn)析工具的主要功能(néng)包括:
代码复杂度分(fēn)析:了解代码不必要的复杂之处,以便工程师可(kě)以执行适当的缓解活动。
程序流分(fēn)析:绘制程序执行的设计-审查流程图,以确保程序按预期流执行。
预测性运行时错误检测:通过尽可(kě)能(néng)多(duō)的可(kě)执行路径对代码执行进行建模,并寻找潜在的错误,例如数组边界溢出和零除。
遵守编码标准:通常选择编码标准以确保对网络安全性,功能(néng)安全性的关注,或者就MISRA标准而言,选择一种或两种。编码标准有(yǒu)助于确保代码遵循最佳编程实践,这与应用(yòng)程序无关,无疑是个好主意。
图2诸如静态分(fēn)析之类的活动是开发生命周期早期的开销,但从長(cháng)遠(yuǎn)来看,它们却能(néng)带来回报。
制定足够质量的代码
高质量的工程产品更昂贵也就不足為(wèi)奇了。坚持任何开发过程都需要付出一定的代价,并且开发最好的产品可(kě)能(néng)并不总是在商(shāng)业上可(kě)行。
在安全性很(hěn)重要的地方,功能(néng)安全性标准通常需要分(fēn)析成本和发生故障的可(kě)能(néng)性。每个系统,子系统和组件都需要进行此风险评估,以确保执行相应的缓解措施。无论系统对安全性至关重要还是对安全性至关重要,同样的原理(lǐ)也是有(yǒu)意义的。如果您以相同的严格程度测试系统的每个部分(fēn),则会在风险较低的系统部分(fēn)中过度投资,而在风险较高的情况下,将无法充分(fēn)缓解故障。
软件安全实践首先要了解如果组件或系统出现故障会发生什么,然后将潜在的故障跟踪到适当的活动中以减轻这样做的风险。例如,考虑一个控制飞机引导的系统,该系统可(kě)能(néng)会导致灾难性事故。必须在子条件覆盖范围内执行严格的缓解活动,以确保正确生成代码。
与机上娱乐系统进行对比。如果该系统发生故障,飞机将不会坠毁,因此与可(kě)能(néng)立即造成生命损失的系统相比,测试机上娱乐系统的要求较低。
软件的可(kě)塑性既是福也是祸。使系统几乎可(kě)以在合理(lǐ)范围内执行任何操作非常容易。但是,在确保软件不会失败时,同样的灵活性也可(kě)能(néng)成為(wèi)致命弱点。
即使在商(shāng)业世界中,虽然并非所有(yǒu)软件故障都是灾难性的,但它们也不可(kě)取。许多(duō)开发人员在对安全至关重要的行业中工作,除了遵守最严格的标准外别无选择。但是这些标准所倡导的原理(lǐ)之所以存在,是因為(wèi)已经证明它们可(kě)以使最终产品发挥更好的功能(néng)。因此,无论应用(yòng)程序有(yǒu)多(duō)重要,按比例采用(yòng)这些原则是完全有(yǒu)意义的。
尽管适用(yòng)于软件开发的功能(néng)安全标准过多(duō),令人困惑,但它们之间的相似之处遠(yuǎn)胜于區(qū)别。所有(yǒu)这些都是基于这样一个事实,即软件开发是一门工程學(xué)科(kē),要求我们建立需求,进行设计和开发以实现它们,并尽早对需求进行测试。