本文主要是介绍臭名昭著的Bug们之三:NASA火星极地登陆器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1999年12月3日,NASA的火星极地登陆器试图在马丁表面着陆时消失了。失败审查委员会调查了失败并认定发生故障最可能的原因是一个数据位的未预期的设置。最令人吃惊的是为什么问题没有在内部的测试中发现。理论上,登陆的计划是:当登录器落到火星表面,它会打开一个降落伞以减缓下降的速度。降落伞打开几秒钟后,探测器的三个腿会迅速伸展开并锁定到位,用于着陆。在探测器处于离火星表面1800米的距离时,它会释放降落伞并点火着陆推进器,慢慢下降到火星表面。
为了省钱,NASA简化了决定何时关闭推进器的机制。他们取代了用于其它航空器上的昂贵的雷达,在着陆器的腿脚上安装了便宜的触点开关,在计算机中设置一位,命令它关闭燃料。简单地说,发动机会一直运行直到着陆器的腿“触地”。
不幸的是,失败审查委员会在他们的测试中发现,在大多数情况下,着陆器的腿会迅速打开着陆,机械震动也会触动开关,设置决定性的位。非常可能的是,着陆器着陆了,计算机关闭了推进器,火星极地登陆器从1800米的高空摔到了火星表面上,成为了碎片。
结 果是灾难性的,但其背后的原因却简单。多个小组测试了登陆器。一个组测试腿的打开过程,另一个组测试那之后的着陆过程。第一个组从没有检查触地位是否设 置,那不是他们的范围;第二个组在开始测试之前,总是重置计算机,清除那一位。两个部分单独工作非常完美,但一起工作是就不同了。
这是一个测试用例的设计问题。这篇关于臭名昭著的Bug们之三:NASA火星极地登陆器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!