嵌入式软件静态测试技术
2019-11-28张桥华罗永升谭琪张莉妹上官霞南
张桥华 罗永升 谭琪 张莉妹 上官霞南
湖南中车时代通信信号有限公司 湖南长沙 410000
现阶段,在航空航天、轨道交通等行业嵌入式软件应用广泛,嵌入式软件具有较高的可靠性以及稳定性,能够有效保证系统的正常运行。根据分析表明,在编码阶段进行缺陷纠正比之交付用户后进行缺陷纠正能够节省98%-99.5%的成本。因此使用静态测试技术对软件编码阶段进行测试十分必要。
1 嵌入式软件的优点
嵌入式软件就是将开发工具和操作系统嵌入到硬件当中,其产业主要包括开发或制造嵌入式电子设备、嵌入式系统软件、设计或制造芯片,其具有以下优点:①实用。嵌入式软件服务于嵌入式系统,所以它与外部硬件具有十分密切的联系,嵌入式能够进行定向开发更好的满足使用需求,所以嵌入式软件特别实用。②适用。嵌入式软件具有模块式软件的特性,它在嵌入式系统中的运用十分灵活方便,并且不会对嵌入式系统的功能以及特性产生影响,使嵌入式系统使用更加灵活方便,实现优化配置。③安全。因为嵌入式软件能够进行定向开发,使开发针对嵌入式软件的木马以及病毒不但使用范围很小,还需要较高的开发成本以及技术。④体积小。嵌入式软件需要安装在存储器中,所以需要嵌入式软件具有较小的体积、比较少的占用资源、紧凑可靠的代码等特点。
2 静态测试概述
静态测试是指忽略程序执行阶段,直接在代码中进行错误寻找以及代码评估的过程,其目的是监控代码的质量,其具有无需运行程序,可以进行人工检测,检测条件低等特点,但是进行静态测试的检测人员需要具有较高的专业素质[1]。检查软件是否与描述一致是静态测试的主要功能,保证软件冲突与歧义不存在,运用静态测试主要是为了纠正软件系统规格和表示上的错误。静态测试主要包括检查代码、测试代码质量、分析静态结构等功能。它不但可以进行人工操作,使工作人员自身的逻辑思维优势能够得到充分发挥,还可以使用软件工具进行自动测试。人工操作能够查出一些机器无法查出的逻辑错误,一般能对软件中30%-70%的错误进行有效排查。
3 静态测试方法
传统的嵌入式软件测试大多采用动态测试与静态测试结合的方式,进行嵌入式软件动态测试需要以软件编程完成为前提,用例质量能够直接决定测试的效率,另外,人为因素对测试结果的影响较大。动态测试太过注重现象,想要重现、定位、调试问题需要较长的实践,影响嵌入式软件的测试效率。
静态测试与动态测试相比具有更高的测试效率,更低的测试成本,无需进行代码运行就能对程序中所有静态结构以及路径进行全面分析,对编程规范进行检查,能够实现对影响代码安全以及质量的因素进行有效排查,为代码的安全以及质量提供保障[2]。
3.1 静态分析
静态分析是指在系统处在非运行状态时,利用软件算法完成被测代码内容、格式、结构的分析测试。经过研究表明,大多代码错误相对密集,经常能在一小部分模块中发现大部分的错误,与人们财富分配的“二八定理”相适应,20%的核心模块往往存在80%的错误。在进行编程的过程中,动态测试受限,只能通过静态分析来进行错误密集模块的定位。由此可见,在编码阶段,静态分析发挥非常重要的作用。由于静态分析阶段会进行内部信息收集,而这些信息能够为审查代码提供信息参考,所以应该在编译完成之后与审查代码之前进行静态分析。
3.2 代码审查
需要使用人工对代码审查进行操作,运用代码审查技术将代码中违反开发标准以及存在错误之处检查出来,可以对工具无法发现的问题进行审查,主要包括以下三个层面:
3.3 是否与设计要求一致
进行代码审查时,要检查代码是否符合设计文档要求以及达到相应的规格,检查代码是否有效合理的表达出其设计思想,比如进行不同函数以及类的正确分解、选择正确的外部接口。
3.4 代码逻辑表达及结构是否正确
对代码逻辑表达式进行检查,包括是否进行正确的异常参数防御处理,变量值的定义是否能够满足范围要求,是否进行逻辑判断分支的正确处理,是否正确使用逻辑变量等。
代码可读性:检查代码的缩进控制编码是否有利于代码可读性的提高,检查代码的变量名、标号、函数名等是否具有存在意义以及命名格式是否符合编码规范,检查代码是否具有意义、充分、准确的注释等。
针对嵌入式软件的特点,进行代码审查时应注意以下四个方面:①初始化。软件产品的正常运行需要以初始化正确作为前提,需要对是否进行正确的初始化操作,并且是否正常进入初始化状态等问题进行检查。②处理通信数据。对软件通信数据的精度参数、格式、速率参数以及异常是否进行了合理正确的处理进行检查,避免因不正确的接口处理,造成通信功能损失或者错误的情况,严重的甚至会造成零件损坏。③处理时间特性。嵌入式软件需要具有非常高的时间性能,需要对时间周期是否正确进行检查,软件是否存在相应的处理措施等。④安全性检查。对软件是否具有相关的防御性编程设计进行检查,对软件在危险状态下的预防措施是否有效进行考虑,以及对软件在不同危险状态下的反应情况进行检查,或者对外部环境下软件的安全性要求进行提取,比如,在软件进入死循环运行时,是否具有相关的防护措施,使软件运行恢复正常。
代码审查应该在软件开发初期开展,能够使代码的正确性提高,但是需要审查人员具有较高的专业素质,但是审查代码的规模越大,代码审查的效果越低[3]。
4 结语
随着飞速发展的互联网技术,在人们生活中嵌入式软件的应用范围越来越大,嵌入式软件将会得到更好的发展。在进行嵌入式软件开发时应该利用静态测试技术对软件质量进行检查,为提升软件质量以及系统正常运行提供保障。相关工作人员应该不断创新,实现嵌入式软件静态测试技术更好、更快的发展。