彩票走势图

嵌入式系统的回归测试

原创|行业资讯|编辑:郑恭琳|2020-11-26 13:51:54.387|阅读 165 次

概述:开发团队执行回归测试,以验证软件应用程序中的代码更改(修复错误或添加新功能)不会导致引入其他错误或破坏现有系统的任何功能。 对于许多(如果不是大多数)嵌入式系统,团队将在生命周期结束时执行回归测试,以确定每个软件版本的稳定性。这是一个反复的过程,一直持续到项目达到开发结束或维护结束为止。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

开发团队执行回归测试,以验证软件应用程序中的代码更改(修复错误或添加新功能)不会导致引入其他错误或破坏现有系统的任何功能。

对于许多(如果不是大多数)嵌入式系统,团队将在生命周期结束时执行回归测试,以确定每个软件版本的稳定性。这是一个反复的过程,一直持续到项目达到开发结束或维护结束为止。

在其他工作流程中,回归测试是开发人员日常工作。实际上,可以说在迭代和敏捷过程中,大多数测试是回归测试。在继续进行之前,让我们看一下什么是回归测试以及为什么它在软件开发实践中占如此重要的地位。


什么是回归测试?

回归是“趋势或向低于或低于完美状态的转变”,这是我们在开发软件时都力求避免的事情。回归测试有助于发现缺陷,这些缺陷在我们添加新功能、修复错误以及对测试用例本身进行更改时会渗入我们的软件中。

作为大多数软件开发过程的一部分,开发人员在对软件进行更改后执行回归测试。这些测试确定新的更改是否对软件的现有操作有影响。

当然,回归测试是必要的,但是它们仅表明最近的代码更改并未导致测试失败。无法保证所做的更改会自动生效。此外,激发进行回归测试需求的变更的性质可能会超出当前应用程序的范围,包括硬件、操作系统和操作环境的变更。


为什么嵌入式系统中的回归测试很重要

由于嵌入式系统往往具有对安全性至关重要的约束,因此开发团队对系统或子系统进行回归测试。测试可以说在系统或子系统的每个迭代生命周期的结尾进行。这意味着必须执行为先前软件系统或子系统版本定义的所有单元测试用例,以及为验证新功能而添加的新单元测试用例,以便在软件中显示回归。

如果先前的单元测试用例通过但现在失败了,则可能已经确定了潜在的回归。新功能可能会导致故障。如果是这种情况,则可能需要考虑输入和输出值的更改来更新测试用例。

了解回归测试不仅仅意味着单元测试用例,这一点也至关重要。嵌入式系统的回归测试还包括执行集成测试用例、系统测试用例、性能测试用例、压力测试用例等。实际上,开发人员应执行所有先前创建的测试用例,以确保:

  • 不存在回归。
  • 构建新的、可靠的软件版本。

两者都是至关重要的,因为每个新的软件系统或子系统版本都是在其先前版本的基础上构建或开发的。如果您没有坚实的基础,那么整个事情都会崩溃。

Parasoft C/C++test可以自动生成测试用例。将它们与手动创建的测试用例结合在一起将产生一个集合集:一个测试套件。开发人员和测试人员执行测试套件以识别应用程序缺陷。

Parasoft C/C++test捕获测试结果并确定分析和修复失败的原因。在此初始周期之后,团队可以将现有的测试用例或测试套件重新用于回归测试。

该图表显示了新的单元测试如何在验证后成为回归测试,而回归测试是随着时间的推移累积的测试。

每个新的单元测试一旦通过验证,便会成为将来的回归测试。回归测试是一段时间内的累积测试。

敏捷开发中的回归测试

很明显,需要对软件的更新和更改进行测试。从这个意义上讲,回归测试是开发过程中显而易见的一步。在具有敏捷流程以及持续集成和部署的现代软件开发中,回归测试成为每个周期中的关键步骤。

随着软件的发展,回归测试套件也在发展。随着套件的增长,执行和调试时间也会增加,并且通常会成为管道的瓶颈。如果没有重点和简化的回归测试,就很难进行敏捷开发和简化的DevOps流程。

嵌入式设备的回归测试

在嵌入式系统上工作会增加测试的另一个维度,因为通常更倾向于或要求在目标硬件上执行测试。由于在嵌入式目标上启动和观察测试的复杂性,回归测试可能更具挑战性。此外,由于这些目标系统的高昂成本,软件团队对目标硬件的访问受到限制。

因此,部署一个可重用和可配置的测试自动化解决方案,该解决方案可以从主机和/或虚拟系统上的执行连续无缝过渡,并可以在目标系统上进行验证和确认,从而节省了大量的资源、时间和资源成本。

开发团队可以使用Parasoft C/C++test在主机平台,目标处理器模拟器或嵌入式目标上执行单元测试。经过优化,Parasoft C/C++test的测试工具以二进制代码或处理周期的形式花费最少的额外开销,以源代码的形式出现。这意味着团队可以针对所需的特定于平台的修改进行自定义。这是必需的,因为从目标系统收集测试结果和代码覆盖率数据对于安全性和安全性至关重要的系统至关重要,并且是DO-178B/CISO 26262IEC 62304等过程标准所要求的。

该信息图显示了在Parasoft C/C++test中从主机到目标部署、执行和观察测试的高级视图。

Parasoft C/C++test中从主机到目标部署、执行和观察测试的高级视图。

此外,Parasoft C/C++test提供了与嵌入式IDE和调试器的专用集成,从而使测试用例的执行过程变得流畅且自动化。受支持的IDE环境包括EclipseVS CodeGreen Hills MultiWind River WorkbenchIAR EWARM MDKARM DS-5TI CCSVisual Studio等。请参阅所有Parasoft C/C++test技术规范。


如何决定回归测试?

回归测试的关键挑战是确定要测试的应用程序的哪些部分。如果对最近的代码更改的影响存有疑问,默认情况下默认运行所有回归测试并不罕见。就是“全有或全无”的方法。但是,对于大型软件项目,这将成为一项艰巨的任务,并拖累了团队的生产力。这种无法集中测试的特性阻碍了迭代和连续过程的许多好处——在测试目标有限的嵌入式软件中可能会加剧这种情况。

需要一种方法来确定需要重新执行哪些测试,并将测试工作(单元测试、自动功能测试和手动测试)集中在验证受最新更改影响的功能和相关代码上。通过结合使用专有的覆盖范围分析引擎(CC++C/C++testJavaJtestC#的dotTEST)和Parasoft DTP中的过程智能引擎(PIE),开发人员和测试人员可以了解其中的变化。两次构建之间的代码库以及更高的效率,实现了敏捷的承诺。这种智能测试执行的形式称为测试影响分析(有时称为基于变更的测试)。

通过测试影响分析了解代码更改对测试的影响

测试影响分析使用在测试运行期间收集的数据以及内部版本之间的代码更改来确定哪些文件已更改以及哪些特定测试涉及这些文件。的分析引擎可以分析两次构建之间的差异,并确定要执行的回归测试的子集。它还了解对修改后的单元的依赖性,以确定对其他单元进行的更改会受到何种波纹影响。

Parasoft C/C++testJtestdotTest可以洞悉软件更改的影响,并提供有关在何处添加测试以及在何处运行更多回归测试的建议。请参阅下面的示例基于更改的测试报告。

来自Parasoft DTP的基于更改的测试报告的屏幕截图,显示了已测试和未测试的代码区域。

Parasoft DTP的基于更改的测试报告的示例。它显示了已测试和未测试的代码区域。

回归测试更早或更频繁

通过测试影响分析简化回归测试,可大大降低测试的总体负担。它使开发人员和测试人员可以仅专注于受影响的代码和测试。结果?

  • 更多测试以增加代码覆盖率。
  • 更多的周期可以收敛到更好的产品上。
  • 或两者结合。

回归测试不再是负担,而是提高产品质量和安全性的关键步骤。它生成度量标准以帮助度量质量,安全性和总体进度。

借助最新的工具支持和基于目标的测试,开发人员在创建代码后也可以立即开始进行回归测试。随着时间的推移,每个新的单元测试都将成为回归测试,开发人员可以立即利用基于变更的测试。

尽早进行回归测试(将其移至开发时间表的左侧)意味着可以更早地发现缺陷。向左移动可立即节省时间和金钱。在软件生命周期的后期,它会带来更多回报。

不要小看这个收益。这样可以节省大量下游成本。在SDLC中尽早发现缺陷可以降低修复成本,并减少对下游活动的影响。查看下图。

动画图-Jones, Capers。应用软件度量:全球生产率和质量分析。显示发现的缺陷向左移动。


总结

回归测试是嵌入式软件测试的核心活动。每个新添加的功能,错误修复或配置更改都需要进行测试,以确认已经起作用并继续起作用。但是,随着项目的增长和软件复杂性的增长,回归测试的数量也随之增长。

最终,测试自动化对于帮助处理测试负担变得必要。智能测试执行等新技术使回归测试更加容易。它促使开发人员和测试人员专注于专门测试已更改和受影响的代码的测试。

将敏捷,CI/CDDevOps等流程改进与软件测试自动化相结合,几乎可以在编写代码后就开始进行回归测试。它可以有效地将测试向左移动,并在更便宜且更易于修复时发现错误。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP