彩票走势图

什么是嵌入式系统的回归测试?它为何如此重要?

翻译|使用教程|编辑:况鱼杰|2020-11-20 11:16:47.757|阅读 340 次

概述:开发团队进行回归测试,以验证软件应用程序中的代码变化(修复错误或添加新功能)不会导致引入另一个错误或破坏现有系统的任何功能。本文将会告诉大家什么是回归测试,以及为什么它在软件开发实践中占有如此重要的地位。

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

相关链接:

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


对于许多嵌入式系统,团队在生命周期结束时进行回归测试,以确定每个软件版本发布的稳定性。这是一个反复的过程,一直持续到项目达到开发结束或维护结束。在其他工作流程中,回归测试是开发人员日常的现实活动。事实上,可以说在迭代和敏捷过程中,大部分测试都是回归测试。在进一步探讨之前,我们先来看看什么是回归测试,以及为什么它在软件开发实践中占有如此重要的地位。


什么是回归测试?

回归是指 "向较低或不完美状态的趋势或转变"--这也是在开发软件时都在努力避免的。回归测试有助于发现在添加新功能、修复错误时,以及在对测试用例本身进行更改时,潜入软件中的缺陷。作为大多数软件开发过程的一部分,开发人员在对软件进行更改后要进行回归测试。这些测试确定新的更改是否对软件的现有运行产生了影响。

当然,回归测试是必要的,但它们只是表明最近的代码变化没有导致测试失败。并不能保证这些变化本身是有效的。此外,促使需要做回归测试的变化的性质可能会超出当前应用程序的范围,包括硬件、操作系统和运行环境的变化。


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

由于嵌入式系统往往有对安全和安保至关重要的限制,开发团队要对系统或子系统进行回归测试,测试可以说是在系统或子系统的每个迭代生命周期结束时进行。这意味着必须执行所有为前一个软件系统或子系统版本定义的单元测试用例,加上为验证新功能而增加的新单元测试用例,以暴露软件中的回归。

如果以前的单元测试用例通过了,现在却失败了,那么可能已经发现了一个潜在的回归。新功能可能会导致失败。如果是这种情况,那么测试用例可能需要考虑输入和输出值的变化而进行更新。同样至关重要的是,要明白回归测试不仅仅意味着单元测试用例。嵌入式系统的回归测试还包括集成测试用例、系统测试用例、性能测试用例、压力测试用例等的执行。事实上,开发人员应该执行所有之前创建的测试用例,以确保:

  • 不存在退步的情况。
  • 建设一个新的、可靠的软件版本发布。

这两点都很关键,因为每一个新的软件系统或子系统的发布都是建立在前一个版本的基础上或开发的。如果你没有一个坚实的基础,整个系统就会崩溃。

Parasoft C/C++test 可以自动生成测试用例。将它们与手动创建的测试用例结合起来,就会形成一个集合:测试套件。开发人员和测试人员执行测试套件来识别应用程序的缺陷。Parasoft C/C++test  捕获测试结果,并识别出故障,进行分析和修复。在这个初始周期之后,团队可以重复使用现有的测试用例或测试套件进行回归测试。



敏捷开发中的回归测试

可能很明显的是,软件的更新和更改需要进行测试。从这个意义上说,回归测试是开发过程中一个明显的步骤。在具有敏捷流程和持续集成和部署的现代软件开发中,回归测试成为每个周期的关键步骤。随着软件的增长,回归测试的套件也在增长。随着套件的增长,执行和调试时间也在增长,往往是管道的瓶颈。如果没有专注和精简的回归测试,很难拥有敏捷开发和精简的DevOps管道。


嵌入式设备的回归测试

在嵌入式系统上工作会给测试增加另一个维度,因为在目标硬件上执行测试往往是可取的,或者是必须的。由于在嵌入式目标上启动和观察测试的复杂性,回归测试可能更具挑战性。再加上由于这些目标系统的高成本,软件团队获得目标硬件的机会有限。因此,建立一个可重用和可配置的测试自动化解决方案,可以从主机和/或虚拟系统上的执行--以及目标系统上的验证和确认--以连续的方式无缝过渡,可以大大节省资源、时间和成本。

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


此外,Parasoft C/C++test 还提供了与嵌入式IDE和调试器的专用集成,使测试用例的执行过程变得流畅和自动化。支持的IDE环境包括Eclipse、VS Code、Green Hills Multi、Wind River Workbench、IAR EW、ARM MDK、ARM DS-5、TI CCS、Visual Studio等。查看所有Parasoft C/C++test 技术规范。


如何决定回归测试的内容?

回归测试的关键挑战是确定测试应用程序的哪些部分。当对最近的代码更改的影响有疑问时,默认运行所有回归测试并不罕见。这就是那种 "全有或全无 "的方法。然而,对于大型软件项目来说,这就成了一项巨大的工程,拖累了团队的生产力。这种无法集中测试的情况阻碍了迭代和持续流程的许多好处--在测试目标是有限资源的嵌入式软件中可能会更加严重。

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


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

测试影响分析使用测试运行期间收集的数据和两次构建之间的代码变化来确定哪些文件发生了变化,哪些特定的测试触及了这些文件。Parasoft的分析引擎可以分析两次构建之间的delta,并确定要执行的回归测试子集。它还能理解修改后的单元的依赖性,以确定对其他单元的改动会产生什么波及。

Parasoft C/C++testJtestdotTest 可以深入了解软件变更的影响,并提供建议,以确定在哪些地方增加测试,在哪些地方运行更多的回归测试。请看下面基于变更的测试报告示例。



更早、更频繁地进行回归测试

通过测试影响分析简化回归测试,大大降低了测试的整体负担。它使开发人员和测试人员能够只关注受影响的代码和测试。结果是什么?

  • 更多的测试来增加代码覆盖率。
  • 更多的周期来汇聚到一个更好的产品上。
  • 两者的结合。

回归测试不再是一种负担,而是提高产品质量和安全性的关键步骤。它产生的指标有助于衡量质量、安全性和整体进度。

通过最先进的工具支持和基于目标的测试,还可以在开发人员创建代码时就开始回归测试。随着时间的推移,每个新的单元测试都会成为回归测试,开发人员可以立即利用基于变化的测试。尽早进行回归测试(将其转移到开发时间线的左侧)意味着更早地发现缺陷。向左移动可以立即节省时间和金钱。在软件生命周期的后期,它的回报率甚至更高。不要小看这种回报。它可以节省大量的下游成本。在SDLC中更早地发现缺陷,可以削减修复成本,减少对下游活动的影响。请看下图。



总结

回归测试是嵌入式软件测试的核心活动。每一个新增加的功能、错误修复或配置变更都需要进行测试,以确认哪些功能已经在工作并继续工作。然而,随着项目的增长和软件复杂性的增加,回归测试的数量也在增加。最终,测试自动化成为帮助处理测试负担的必要手段。智能测试执行等新技术让回归测试变得更容易。它促使开发人员和测试人员专注于专门测试更改和受影响代码的测试。

将敏捷、CI/CD和DevOps等流程改进与软件测试自动化相结合,使得几乎在代码写好后就开始回归测试成为可能。它有效地将测试转移到左边,并在成本更低、更容易修复的情况下更早地发现错误。



标签:软件测试技术C/C++Parasoft

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

文章转载自:

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP