一、什么是嵌入式测试
嵌入式软件测试的概念似乎没那么大众,很多人从字面上理解,可能会以为这是个硬件测试,那么嵌入式测试实际上是什么呢?
根据IEEE(国际电机工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置的简称”。而嵌入式测试就是为保证嵌入式系统质量所做的测试。
嵌入式系统在人类生活中发挥着重要的作用,包括飞行控制器这样的控制系统,以及洗衣机这样的家用电器。日前,嵌入式系统中软件的比重越来越大,也越来越复杂,保证嵌入式软件的可靠性正面临严峻的挑战。
大多数软件测试方法都可以直接或间接地用于嵌入式软件的测试,但是由于操作系统的实时和嵌入式特性,嵌入式软件测试也面临一些特殊的问题。嵌入式软件具有实时性、内存空间有限、I/O通道少,而且要求功耗低、高可靠性,和硬件关联性强等特点,因此嵌入式软件的测试与一般商用软件的测试有较大的区别,选好嵌入式测试工具也就尤为重要。
二、嵌入式测试工具推荐
一般指与目标机的硬件环境集成,也可以和仿真环境集成,这时需要做相应的硬件兼容性测试。但到了系统测试、配置项测试或确认测试,一般就会在目标机环境下执行,这时和一般商用软件的测试有较大的差别。
由于嵌入式系统的实时性,其测试应充分考虑系统实时响应的问题,其响应时间一般要求在毫秒级别,其对应的负载测试少不了。而且,对于数据传输的测试也要认真对待。
而嵌入式软件测试工具,开源工具比较少,多数是商业工具。今天我们就介绍比较常用的或好用的嵌入式软件测试工具,主要有:
~ UTP协同自动化测试平台
~ Klocwork
UTP协同自动化测试平台
UTP协同自动化测试平台是一款国产化黑盒测试工具,可以做配置项测试和系统测试,包括测试资源管理、测试需管理、环境描述、接口协议定义、用例设计、实时数据监控、测试任务管理,测试报表留存等功能。
UTP协同自动化测试平台的嵌入式测试主要通过协同调度各种测试机器人为各个输入接口创造各种输入,经被测系统处理后,检查各个输出接口的输出是否满足预期,来实现对嵌入式系统内部功能的全面测试。并且整个测试过程的时序逻辑可以在UTP系统的平台页面上进行创建, 方便实现符合业务测试要求的各种逻辑和时序。
UTP系统的嵌入式测试支持对嵌入式系统有多种接口(如RS232串口,CAN接口,Ethnet接口,Wifi接口,SPI接口,I2C等),也可能带有实体按键和显示屏的被测系统的测试。
如上图所示,用户在UTP协同测试平台编写测试用例/脚本, UTP平台根据脚本的逻辑命令协同调度各个测试机器人执行,测试机器人通过各种接口同被测系统进行输入和输出交互。
官网地址:
https://www.macrosoftsys.com
Klocwork
Klocwork是一款支持百万行甚至千万行以上的C/C++/Java/JS/C#代码质量静态检测工具。
利用领先的深度数据流分析技术,静态地跨类、跨文件地查找软件运行时缺陷、错误和安全漏洞,并准确定位错误发生的代码堆栈路径。
Klocwork支持自动化扫描1000多种代码缺陷,包括空指针、资源及内存泄漏、未捕获的异常、除零等,全面检测代码质量问题
Klocwork提供全面的安全规则扫描能力,支持CWE, OWASP, CERT, PCI DSS, DISA STIG, 和ISO/IEC TS 17961等标准,深度数据流分析能力强、准确率高、漏报率低
支持常用的IDE,如Eclipse, Visual Studio, IntelilJ Idea等,并与CI/CD工具和集成、B/S+C/S部署方式
Klocwork支持静态检测软件应用的安全漏洞,包括SQL注入、被污染的数据、缓存溢出、弱代码实现及其它多种常见应用安全漏洞
官网地址:
https://www.perforce.com/products/klocwork