来源 | 互联网
编曲 | strongerHuang
说到嵌入式软件测试,我们先来简单了解一下嵌入式软件的特点。嵌入式软件具有实时性强、内存空间有限、I/O通道少、要求功耗低、可靠性高、成本相对较高等特点。由于其对硬件敏感、与硬件相关性强等特点,嵌入式软件的测试与一般商用软件的测试有很大不同。
嵌入式软件的开发环境和运行环境是完全不同且分离的,开发是在Windows/Mac OS桌面客户端(宿主环境)上进行的,而运行环境则是在目标机环境上,一般是基于Linux/Android内核开发的嵌入式操作系统或者类似RT-thread这样的实时操作系统,支持ARM CPU、MCU、蓝牙芯片等低功耗关键硬件。
嵌入式软件的单元测试通常是在宿主机环境中进行的,只有在某些情况下(比如目标机编译器可能有缺陷时)才需要在目标机环境中进行,因此在单元测试方面嵌入式系统软件教程,嵌入式软件和一般的商业软件之间的差异比较小,但是嵌入式软件的单元测试对代码质量的要求比较高,一般要求MC/DC覆盖。
嵌入式软件的集成测试一般是指与目标机硬件环境的集成,也可以是与仿真环境的集成,此时需要进行相应的硬件兼容性测试,但当涉及到系统测试、配置项测试或确认测试时,一般都是在目标机环境中执行,这与一般商用软件的测试有很大区别。
由于嵌入式系统的实时性,其测试要充分考虑系统的实时响应,响应时间一般要求在毫秒级别,相应的负载测试必不可少;在对目标机进行测试时,一般需要对已编译的代码进行插桩。
这样当目标机执行程序时,插桩时预测的数据就可以返回到宿主机进行分析。因此,宿主机与目标机之间的数据传输也应该重视。
此外,还要开发符合系统要求的可靠性和安全性等级,并进行相应的可靠性和安全性测试。嵌入式软件测试的开源工具相对较少,大部分都是商业工具,往往都是成套的,涵盖系统功能、性能分析和安全测试。今天我们就来介绍一下比较常用或者好用的嵌入式软件测试工具,主要是:
电子测试工作室
国产的一款可以进行配置项测试和系统测试的黑盒测试工具,包括测试资源管理、环境描述、接口协议定义、用例设计、实时数据监控、测试任务管理等功能。
主要特点有:
官网地址:
毫升
克洛克沃克
Klocwork是一款静态代码质量检测工具,支持数百万甚至数千万行C/C++/Java/JS/C#代码。
利用领先的深度数据流分析技术,跨类、跨文件静态搜索软件运行时缺陷、错误及安全漏洞,精准定位发生错误的代码堆栈路径。
官网地址:
海泰克斯TESSY
Tessy起源于戴姆勒-奔驰软件技术实验室,由德国Hitex公司提供全球销售和技术支持服务,是一款专门针对基于C/C++开发的嵌入式软件的单元/集成测试而设计的工具。
Tessy还能满足各项标准(如ISO26262、IEC61508、EN 50128/50129等)的测试要求,而且工具本身已经通过了TUV认证,证明该软件是安全可靠的。
主要功能为:
还有其他工具可用,例如:
官网地址:
Rapita 验证套件 (RVS)
RVS是一套针对嵌入式软件的测试工具集,支持MC/DC覆盖率分析,满足DO-178C和ISO 26262认证要求。
RapiTest 具有易于编写、易于审查且功能丰富的测试格式,以及创建多线程测试和测试代码元素(如泛型和私有类型)的能力(无需编写源代码)。
官网地址:
压扁
Froglogic 的 Squish 是一种流行的跨平台、多技术的 GUI 测试工具嵌入式系统软件教程,特别为以下应用程序提供专业和全面的支持:Qt、Java GUI、Web、Linux、Windows、IOS 和 Android。
Squish 支持 BDD、数据驱动、分布式批量测试、可视化验证等,可以识别自定义控件或 2D/3D 图像,支持多种脚本语言:Python、Perl、Javascript、Ruby、Tcl。该平台有两大产品:
官网地址:
DT10
DT10(动态测试工具DT10)是一款软件灰盒测试与系统动态跟踪调试工具,支持C/C++、C#、Java等多种语言,采用领先的自动化代码插入和数据获取技术,支持软件系统进行回溯调试、性能测试、CPU负载分析、变量监控、逻辑分析、内存使用分析、硬件监控分析、复杂及偶发性缺陷的覆盖率分析等灰盒测试场景。
DT10主要由硬件设备Dynamic Tracer和PC端软件两部分组成,软件部分负责源代码插入、数据处理和结果分析,硬件部分负责复杂的接口、信号采集和数据通信。
. 强大的缺陷追溯与定位能力。
官网地址:
矢量CAST
VectorCAST是一套针对嵌入式软件应用的高可靠性、高安全性软件的自动化动态测试工具链,适用于单元测试、集成测试、覆盖率分析、回归测试、静态分析、系统测试和质量分析等软件测试涉及的各个方面。
支持C/C++、Ada语言,内置智能自动测试用例生成算法,并符合各类业界认证标准,如DO-178B/C、ISO 26262、ASPICE、IEC 61508、En 50128、IEC 62304、IEC 60880等。
官网地址: