什么是软件测试中的嵌入式测试?
什么是嵌入式系统?
嵌入式系统是软件和硬件紧密结合的电子控制设备。嵌入式系统可能包含各种计算设备。这些是集成在其他设备中的 PC,用于运行特定于应用程序的功能。最终用户通常甚至不知道它们的存在。
嵌入式测试
嵌入式测试 是检查嵌入式系统中软件和硬件的功能和非功能属性并确保最终产品无缺陷的测试过程。嵌入式测试的主要目的是验证和确认嵌入式硬件和软件的最终产品是否满足客户的要求。
嵌入式软件测试检查并确保相关软件质量良好并符合其应满足的所有要求。嵌入式软件测试是保证医疗设备、铁路、航空、汽车行业等关键应用安全性的绝佳方法。严格而仔细的测试对于授予软件认证至关重要。
如何进行嵌入式软件测试
一般来说,进行测试有四个原因:
- 查找软件中的错误
- 有助于降低用户和公司的风险
- 降低开发和维护成本
- 为了提高性能
在嵌入式测试中,执行以下活动:
1. 该软件提供了一些输入。
2. 执行软件的一部分。
3. 观察软件状态,并检查输出的预期属性,例如输出是否与预期结果匹配、是否符合要求以及是否没有系统崩溃。
嵌入式软件测试类型
从根本上讲,嵌入式软件可以采用五个级别的测试
软件单元测试
单元模块可以是函数或类。单元测试由开发团队(主要是开发人员)执行,通常采用同行评审模式。根据模块规范开发测试用例。
整合测试
集成测试可以分为两个部分:
- 软件集成测试
- 软件/硬件集成测试。
最后,测试硬件域和软件组件的交互。这可以包括检查内置外围设备与软件之间的交互。
嵌入式软件开发的特点是注重软件运行的实际环境,而实际环境通常是与软件同时创建的,无法在模拟条件下进行全面的测试,这给测试带来了不便。
系统单元测试
现在要测试的模块是一个完整的框架,它由完整的软件代码组成,此外还有 实时操作系统 (RTOS) 以及平台相关部分,如中断、任务机制、通信等。控制点协议不再是函数调用或方法调用,而是利用 RTOS 消息队列发送/获取的消息。
观察系统资源来评估系统支持嵌入式系统执行的能力。在这方面, 灰盒测试 是首选的测试方法。根据组织的不同,系统单元测试要么是开发人员的职责,要么是专门的系统集成团队的职责。
系统集成测试
要测试的模块从单个节点内的一组组件开始。控制点和观察点 (PCO) 是网络相关通信协议和 RTOS 的混合体,例如网络消息和 RTOS 事件。除了组件之外,虚拟测试器同样可以充当节点的角色。
系统验证测试
待测试的模块是具有完整实现的子系统或完整的嵌入式系统。最终测试的目的是满足外部实体的功能要求。请注意,外部实体可以是人,也可以是电信网络中的设备,或者两者兼而有之。
区别:嵌入式测试和软件测试
软件测试 | 嵌入式测试 |
---|---|
软件测试仅与软件有关。 | 嵌入式测试与软件和硬件都相关。 |
世界上平均 90% 的测试都是纯手动的黑盒测试。 | 嵌入式测试是在嵌入式系统或芯片上进行的,可以是黑盒测试或白盒测试。 |
测试的主要领域是 GUI 检查、功能、验证和某种程度的数据库测试。 | 测试的主要领域是硬件对于给定输入数量的行为。 |
软件测试主要在客户端-服务器、网络和移动应用程序上进行。 | 嵌入式测试通常在硬件上执行。 |
例如谷歌 Mail雅虎 Mail, Android 领域广泛应用,提供了卓越的解决方案。 | 例如医疗保健领域的机器、计算机中使用的微控制器。 |
挑战:嵌入式软件测试
嵌入式软件测试期间可能面临的一些挑战:
硬件依赖性
由于硬件访问受限,硬件依赖性是嵌入式软件测试面临的主要困难之一。然而,仿真器和模拟器可能无法准确表示实际设备的行为,并且可能对系统性能和应用程序的可用性产生错误的印象。
开源软件
大多数嵌入式软件组件本质上都是开源的,不是内部开发的,也没有完整的测试。测试组合和结果场景多种多样。
软件与硬件缺陷
另一方面,当为新创建的硬件开发软件时,在此过程中可以发现高比例的硬件缺陷。发现的缺陷不仅限于软件。它也可能与硬件有关。
可重现的缺陷
在嵌入式系统中,缺陷更难重现/再现。这迫使嵌入式测试程序对每个缺陷的评估都远高于标准情况,而不是收集尽可能多的合理数据来修改系统以找到缺陷的根源。
持续的软件更新
嵌入式系统需要定期进行软件更新,如内核升级、安全修复、不同的设备驱动程序等。软件更新影响的限制使得错误识别变得困难。此外,它增加了构建和部署过程的重要性。
总结
嵌入式软件测试存在一些困难,这使得它比常规软件测试更困难。最根本的问题是严格依赖与软件同时准备的硬件环境,并且通常需要执行可靠的软件测试。有时甚至很难在没有自定义工具的情况下测试软件,这使得在后期阶段集中精力进行测试变得异常诱人。
您应该考虑的最重要的事情之一是,您应该经常选择自动化软件测试。嵌入式自动化测试是一个更快的过程,只需几个小时即可完成,这样,您的软件问题就解决了。