虚拟平台中的“有意”/“无意”故障注入
构建虚拟平台的重点往往会放在系统运行，尤其是在汽车和航空航天的数字孪生领域。只有确保虚拟平台能够正常运行系统，软件才得以可靠地在虚拟平台上运行。
为确保系统正常运行，通常需要解决如何测试异常、故障和其他问题。该过程通常被称为“故障注入”，指采用人为的在目标系统中引入故障的方法，来加速系统的失效，通过观察系统在出现故障之后的行为反应对系统的可靠性进行评价。
故障注入一般可分为：
1、基于硬件的故障注入：指利用额外的硬件将故障引入目标系统的硬件中。
2、基于模拟的故障注入：指在系统设计阶段，采用某种标准硬件描述语言为目标系统建立硬件仿真模型，然后在该模型内部插入故障注入单元来实现故障注入。
3、基于软件的故障注入：指根据一定的故障模型，通过修改目标系统的内存映像来模拟系统硬件或软件故障的发生。
众所周知，在硬件上直接执行故障注入既复杂又昂贵，且难以精确控制注入时间与位置，容易对目标系统硬件造成损伤。虚拟平台是规避这一问题的解决方案。
虚拟平台作为硬件系统的数字孪生，能够提供任何状态、任何位置的故障注入，如硬盘故障与拒绝服务（DoS，Denial of Service）攻击，从而便捷地供软件进行成本低廉、可靠性高且可无限重复的故障注入。
使用虚拟平台进行故障注入的优点包括但不限于：
1. 虚拟平台的环境具备完全确定性，故障分析时无需考虑环境因素，相对较为简单；
2. 只需插入脚本就能实现自动化的多组合故障注入，测试量及测试速度甚至优于硬件本身；
3. 使用虚拟平台进行故障注入比直接在硬件上进行故障注入可节省约90%的成本。
一般来说，虚拟平台中的故障注入需要对系统模型进行扩展。某些类型的故障可以通过简单的模型状态改变（如修改寄存器值、内存内容等）来引入，但通常需要模型中有特定故障。在实际操作时，除了预先设计的、故意的故障注入外，还会存在不能被明确定义为“故障”的意外故障。
虚拟平台上的操作系统突然崩溃，而屏幕显示的是“divede by zero”故障——多半是时钟漂移的缘故。
我们知道，实际硬件操作过程中，不同芯片上的处理器内核通常不会出现完全相同的时间，这是由于单个时钟周期通常会在某个时间点出现偏差，俗称“时钟抖动”，而“时钟漂移”指的是因物理设计等原因而出现的偏差。
实际上，虚拟平台中的时间是紧密协调的，并未对真实硬件普遍存在的时钟漂移进行建模，从而导致了这种硬件上未曾发生、只会在虚拟平台上出现的问题。
在检测系统软件能否正确检测到新插入的电路板并激活的测试中（具体指将电路板热插拔到带电背板），在虚拟平台上同时向系统添加两块电路板时，软件当即崩溃。只要在虚拟平台对应的真实背板上也同时热插拔两块电路板，并对比堆栈痕迹，就可知bug是出在虚拟平台还是系统本身。事实上，在完成读秒、同时将两块板子插入的那一瞬间，背板就被烧毁了。
尽管此种情况发生的概率很低，故障发生的原因可能是短路也可能是过载，但无论是什么结果，都是前期设计时没有考虑到此种情况所导致的——也许这才是开发人员真正需要注意的地方。
天目全数字实时仿真平台SkyEye，是基于可视化建模的硬件行为级仿真平台，工程师可在虚拟测试环境中任意注入故障，随时暂停或反向执行，稳定复现缺陷，有助于突破硬件配置的界限、解决软件问题。
[1] 佟向鹏, 王文凤. 基于故障注入的系统测试方法及应用[C]// 2013年首届中国航空科学技术大会. 0.
[2] Intentional and Accidental Fault Injection in Virtual Platforms
微信公众号：迪捷软件
联系电话：0575-88361699；19957518153【销售】/ 13260299730【合作】 / 13501153049
联系邮箱：contact@digiproto.com
工作地址：浙江省绍兴市越城区中关村•水木湾区科学园3#802
北京市海淀区永丰路9号
上海市松江区阿里云创新中心
中国（四川）自由贸易试验区成都高新区天府三街288号
西安市高新区天谷七路996号
公司网址：www.digiproto.com
公司简介：浙江迪捷软件科技有限公司2013年成立于北京，专注于安全关键领域数字化转型，遵循中立开放的商业理念，为我国安全关键领域提供嵌入式DevOps和数字样机产品及解决方案。我司软件产品全部为自主研发，具有核心知识产权，涉及了高端装备的设计、研发和测试等环节。