基于产品环境下FIT故障注入测试技术研究

发表时间:2020/10/21   来源:《建筑实践》2020年17期   作者:魏杰
[导读] 随着计算机软件在工业、航天、科研等关键领域应用的日益广泛,
        魏杰
        上海电科智能系统股份有限公司
摘要
        随着计算机软件在工业、航天、科研等关键领域应用的日益广泛,其产品可靠性和容错性也变得越来越重要。
        如何丰富软件产品在产品环境下的故障信息库,指导并实现在类产品环境下的故障注入,发现产品潜在的缺陷,是工业环境下测试的一个重点。
        基于产品容错性的故障注入测试技术研究,会在故障模型、故障测试用例的生成、故障注入方式和日志分析总结等方面阐述故障注入的实现方式,结合门禁系统的产品环境实现故障注入的测试。
1、故障注入
1.1故障注入
        故障注入技术广泛用于验证软件容错性、安全性的测试中。它按照选定的故障模型,人为的在目标系统中产生故障,加速系统错误和失效的发生,通过监控预警和日志分析,可以验证系统容错性和故障安全等。
1.2故障模型
        故障模型是指在注入故障过程中根据不同评测对象及其需要处理的故障类型,所采用的各种不同的故障形式。模型选择是故障注入技术实现的基础,有利于故障测试用例生成的自动化。
1.3故障模型主要来源
        (1)是对现有产品故障信息的分类汇总
        (2)是现场故障案例的搜集
        (3)是来自产品应用端的容错性应用需求
1.4故障模型技术总体框架:见图1

        图1:故障模型技术总体框架
1.5设计模式
        该框架在逻辑上可分为三个模块:故障生成模块、通讯模块、目标系统模块。故障生成模块根据用户的需要灵活的提取或生成故障,通讯模块将故障生成模块所生成的故障存储在链表内,目标系统模块运行被测系统故障链表内提取各类故障信息并触发故障。
2、测试用例
2.1故障测试用例来源
2.1.1监控预警
        开发和测试人员不能对产品环境下的系统进行测试工作,但可以通过监控系统对异常情况进行预警,包括日志及外部分析工具。
        日志记录系统运行的错误、异常和失败等信息,不但可用来分析问题的原因,同时可以利用日志设置好预警。产品环境下的日志所提供的监控和预警信息可以帮助阻止不良后果、发现潜在的性能问题、指导类产品环境下的测试。
2.1.2用户反馈
        产品环境下用户行为带有不确定性,甚至有刻意的错误操作或误操作,所以收集用户反馈工作极其重要,是产品质量保证的重要步骤。
        用户反馈信息包括缺陷、用户抱怨、特殊场景、用户建议等方面,主要涉及产品使用问题、产品易用性和可扩展性、新需求等,公司运维人员负责收集工作,运维人员和QA共同完成信息分析工作。
2.2 FIT用例执行要求
        应记录下列重要信息:故障产生对业务的影响程度,故障相关时间,故障告警等,还有必要的人工干预记录,级别高的用例应反复多次执行(如>10),结果将用于后期可靠性分析。
3、故障注入实现
3.1故障注入分类
        基于故障注入测试的主要实现方式是通过硬件、模拟、软件等分类实现的故障注入。
3.2故障注入流程

图2:故障注入流程
3.3硬件故障注入
        基于硬件实现的故障注入主要利用一些故障注入的介质和工具,比如(芯片管脚的探针、金属夹)等,将故障发生装置直接与故障注入的目标端口建立连接。通过故障发生装置改变产品输入/输出接口电路,CPU芯片管脚、存储器、逻辑电路等特定位置的电压或者电流值,根据故障模型实现具体故障的注入。
        (1)人脸识别设备接入闸机时,调整接入电源线的电压,受电设备电源供电工作下限设置为DC8V,观察设备在正常电压外的人脸识别情况。
        (2)设备的摄像头非法断电,影响到设备USB摄像头驱动调动不起来,导致设备画面停留不动、卡死。
        (3)使用探针将产品CPU芯片输出给看门狗芯片的WDT喂狗信号断开后拉低,模拟产品内部程序运行故障(内部程序跑死、跑飞)等,实现故障注入到模块,可以验证产品的内部看门狗自复位功能是否正常发挥作用,以及当产品出现程序跑死、跑飞后的运行状态。
        
图3:看门狗故障设计
3.4基于软件故障注入
3.4.1软件故障注入
        软件故障注入的设想,主要是想通过程序或者脚本来实现故障注入的全过程。这种故障注入测试的方法主要应用与针对硬件产品的嵌入式软件功能的测试。
3.4.2实现方法
        一种是直接修改硬件产品嵌入式程序的源代码,直接模拟嵌入式程序的逻辑或者其他错误,观察系统的故障表现;另一种方法就是采用在产品的嵌入式代码中插入一段故障代码的方法。
        故障类型可以选择总线故障和寄存器故障,故障列表选择见表1。

        
        (1)通过注入寄存器数据段内容更改,使其产生误动作,导致芯片内存贮的数据以及安全设置被篡改,如安全传感器的使能开关或者错误警报机制的开关由开启状态更改为关闭状态,导致系统在异常情况下的内部预警系统设置失效。
        (2)修改代码,增加测试脚本,促使可以向系统随意发送任意流量的数据,配置被测链路,达到最大的处理量,调整数据上传流量,达到最大,运行一段时间,再把流量调整到较低水平运行,随后继续调整大数据流量,如此反复,观察系统及设备运行情况。
3.5效果分析
        (1)在不断丰富故障原型库及完善测试用例的基础上,可指导在类产品环境下能很好的模拟故障类型进行测试,及早的发现系统在持续发布的阶段可能隐藏的问题。
        (2)能很及时的处理系统在运行期间发生的问题,减少出勤运维次数,提高公司运维效率。
        (3)通过脚本实现软件故障注入方式,实现大数据流量的系统压力测试,可以很好的观察系统响应状况及系统内存使用情况。
4、结语及展望
        故障注入是一种相对特别的技术,即可以开发特殊的硬件片将物理故障注入系统,也可以对系统原型实行模拟测试。基于软件实现的故障注入因其成本低、灵活的特性以及对硬件无损害等特点应用越来越广泛。
        系统运维反馈和产品环境下的系统监控及故障日志分析能够很好的丰富测试用例集,在此基础上可指导高效的完成类产品环境下的测试工作,尽可能早的发现系统潜在的缺陷。
        当然,故障注入测试还面临着一些难题,如何模拟产品环境下的故障测试用例并实现自动化生成以及如何面对不同复杂程度的系统开发注入平台也值得探讨。
参考文献:
[1]黄永兢,徐东海,孟浩.嵌入式软件测试方法策略[J].电脑编程技巧与维护,2017,(09)
[2]赵鹤,高婉玲.基于模型的软件测试用例生成方法比较研究[J].现代计算机(专业版),2017,(04):20-26
[3]梁琼崇,丁翔,李升春.故障注入试验系统校准方法探讨[J].电子产品可靠性与环境试验:2017年03期
[4] 李娟.基于故障注入的软件安全测试技术研究,计算机应用技术中国科学技术大学
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: