如何优化嵌入式软件测试?提高测试自动化是关键
由于在嵌入式目标上启动和观察测试的必要性和复杂性,嵌入式软件的自动化测试具有挑战性。此外,软件团队通常对目标硬件的访问权限有限。
软件测试自动化对于从主机开发系统到目标系统的嵌入式测试的持续运行至关重要。测试嵌入式软件特别耗时。自动化回归测试套件节省了大量时间和成本。
测试嵌入式软件的要点
根据需要,从目标系统中收集测试结果和代码覆盖率数据对于验证和标准符合性是至关重要的。而数据收集在测试执行中是至关重要的。它可以通过记录和维护测试用例、测试结果、源代码和需求之间的可追溯性来完成。
集成测试解决方案,如Parasoft C/C++test,提供了一个优化的测试线束,为二进制足迹采取最小的额外开销,并以源代码的形式提供,如果需要平台特定的修改,可以在这里进行定制。
Parasoft的c/c++软件开发测试解决方案支持将回归测试基线创建为一个有组织的测试集合,并自动验证所有结果。这些测试定期自动运行,以验证代码修改是否改变或破坏了回归测试中捕获的功能。
如果引入任何变更,这些测试用例将无法提醒团队注意问题。在随后的测试中,parasoft c++ test如果检测到初始测试中捕获的行为发生变化,将报告任务。
自动化很重要,但它需要做的不仅仅是保持现状。为了提高软件的安全性、安全性和质量,在不进一步减缓进度的情况下,需要在配置项/光盘管道中进行更多的测试。
提高测试自动化,优化嵌入式软件配置项/光盘
团队面临的最大难题是如何提高测试效率,同时在不影响进度和成本的情况下满足安全、安保和质量需求。不可避免的是,即使是简单的测试自动化(测试执行和结果),也需要妥协来保持测试时间的合理。
简单的解决方案是凭猜测选择软件的哪些部分作为完整的系统测试套件进行测试,这既耗时又昂贵。使用更智能的测试自动化来优化测试,消除了测试创建和执行中的问题。
用代码覆盖率优化测试
一般来说,代码覆盖率是对自动化测试运行时执行的产品代码量的度量。通过运行一套测试并查看代码覆盖率数据,可以大致了解应用程序中有多少内容正在被测试。
收集和分析代码覆盖率指标化测试
收集和分析代码覆盖率度量是安全关键嵌入式软件开发的一个重要方面。代码覆盖率衡量测试用例和执行测试的完成情况。它提供了验证完成的证据,至少按照软件设计的规定。
高级单元测试自动化工具,比如Parasoft C/++test,提供了所有这些代码覆盖度量等等。C/c++ test自动化了主机和目标测试的数据收集,并随着时间的推移积累测试覆盖历史。这个代码覆盖历史可以跨越单元、集成和系统测试,以确保覆盖在测试的所有级别都是完整和可追踪的。
通过自动化单元测试用例创建增加代码覆盖率化测试
生产性单元测试的创建一直是一个挑战。功能安全标准合规性要求高质量的软件,这推动了对影响和产生高代码覆盖率统计的测试套件的需求。
团队需要单元测试用例来帮助他们实现他们的覆盖目标,这些目标甚至在安全关键软件领域之外也很重要。任何未被至少一个测试覆盖的代码都是未经测试的!
解决覆盖率差距化测试
团队可以使用覆盖率顾问。Parasoft发现了如何使用高级静态代码分析(数据和控制流分析)来找到执行特定未覆盖代码行所需的输入参数值。
该分析计算执行特定代码行所需的函数参数、全局变量和外部函数调用的前提条件。覆盖率顾问为用户选择的代码行提供一组解决方案。呈现的值用于创建新的单元测试用例。这一功能提高了开发人员处理单元测试用例的生产率,从而提高了代码覆盖率。
通过智能测试执行优化测试
为了加速连续管道中的测试,需要基于每个构建的智能测试执行来减少需要执行的测试集,以解决每个新迭代引入的风险。测试影响分析提供的分析是使测试只关注绝对需要测试的内容,而不是使用强制方法的关键。
Parasoft C/C++test中的智能测试执行通过用于配置项系统(Jenkins、TeamCity、Bambean等)的插件进行扩展,以获得高级功能,帮助软件开发组织减少与运行连续构建相关的瓶颈。在具有专用插件的集成开发环境中也可以获得相同的功能,这些插件通过一个REST应用编程接口访问一个集中的覆盖映像,并确定需要在集成开发环境中本地执行哪些测试来验证所有更改的代码。
智能测试执行使用测试影响分析来跟踪针对应用程序的手动测试的执行,以及与这些测试相关联的、捕获的代码覆盖信息。类似的技术用于自动化测试。这种分析指出了需要执行哪些手动测试来访问每一个新版本所提供的已更改的功能。因此,在开发人员和测试人员的本地IDEs中,智能测试执行是至关重要的。它使他们能够将测试集中在需要的地方,消除猜测和额外的“以防万一”工作。
持续集成和持续交付在嵌入式开发中很常见。将一个瀑布式的过程移植到CI/CD和敏捷开发中,在降低风险、提高质量和安全性方面是有回报的。然而,测试仍然是嵌入式系统采用CI/CD工作流的一个障碍,因为它们在自动化测试方面面临独特的挑战。通过智能测试执行消除这些障碍,并在提高代码覆盖率的同时优化测试,是成功采用CI/CD的关键。