[InfoQ]波音再陷事故风波:软件测试走捷径导致载人飞船首飞失败( 二 )


这份报告显示 , 飞船和火箭助推器的时间存在偏差 , 而飞船的 Mission Elapsed Timer 提前轮询了火箭助推器的时间 , 从而进行了错误的计时并进入了错误的轨道 。 在发现这个问题之后 , 波音继续搜寻了可能存在的未被发现的其他问题 。 他们很快的发现了第二个 Bug , 该问题可能导致在将服务舱与机组成员舱分开时发射错误的推进器 。
这些明显的错误完全可以被提前“测试”出来 。 于是调查小组对测试的流程进行了检查 , 发现测试人员为了缩短测试时间 , 走了捷径 。 他们将整个飞行过程分成了几个小单元分别进行测试 , 但最后却没有做完整的、端到端的集成测试 。 也就是说根本没有进行时长为 25 个小时的整体测试 。
美国宇航局载人航天业务负责人道格·洛夫罗表示 , 波音公司的问题是“根本性的”和广泛的“软件过程故障” 。 波音的这种软件质量控制 , 还不知道会导致系统中到底存在多少个 Bug , “到底只有这两个还是会有几百个” 。
波音公司表示将重新对代码进行审核 , 这涉及到一百万行代码 , 波音公司官员说 , 审查需要多长时间还不确定 。
波音曾经的鲜血教训
“星际客机”载人飞船的失败正值波音公司遭遇 100 多年历史上最黑暗的时期 。 波音一直因空难事故丑闻缠身 。 2018 年 10 月 , 一架狮航波音 737 MAX 客机发生坠机事故 , 造成 189 人丧命 。 几个月后 , 一架埃航波音 737 MAX 客机也坠毁 , 机上 157 人罹难 。 目前波音 737 MAX 机型仍处于停飞状态 。
回顾波音 737MAX 的两次致命飞行 , 一个自动控制下压机头的名为 MCAS 的自动纠正失速系统受到最大的诟病 。
前波音公司资深软件工程师 Mark Rabin 认为最重要的一个原因就是软件外包 , 而将软件外包的起因则是波音裁撤资深研发以削减成本 。
《彭博社》在一则报告中指出:波音 737 MAX 把软件系统外包给了印度外包公司 HCL 和 Cyient 的软件工程师 , 比起美国正职软件工程师每小时 35 至 40 美元的工资 , 印度外包的时薪只需要 9 美元 。 更进一步 , 波音的分包商与供应商同样选择将工程外包到印度 , 降低成本以保证利益最大化 。
波音公司在 2010 年曾发布了 1000 份裁员通知 , 而这些被裁减的人大部分在 IT 部门 。 该公司当时拥有 158,500 名员工 , 其中包括 18,000 名工程和技术人员 , 但他们计划是削减 10,000 个工作岗位 。 一位前波音软件工程师在 2015 年表示 , 企业将裁掉 90% 经过了熟练培训的员工 , 用“外包”来代替他们 , 从而缩减开支 。
软件外包是一个需要发包方和承包方高度协作的过程 。 服务周期长、可变因素多 , 这使得公司在软件外包过程中面临重大风险 。 波音的 787 型飞机计划 70% 使用外包 , 最终导致了延期三年还交付不了 , 波音表示:“我们同时在技术、工具和供应链上做了太多改变 , 超出了我们的管理能力” 。
同时波音的组织结构也存在较大的问题 。 在波音公司 , 高级工程师主要向各型号飞机的业务主管汇报工作 , 然后才向技术端的总工程师汇报 。 这种模式造成的问题是:工程师一旦发现问题 , 因为可能造成飞机的研发进度滞后 , 通常会首先面临来自高管的压力 , 因为这些高管的工作就是保证在 Deadline 前完成任务 。
从民用到航空 , 软件测试有多重要?
波音公司发言人戈登·约翰德罗 (Gordon Johndroe) 在电子邮件中说 , “星际客机”载人飞船发生的故障与两起致命的波音 737 MAX 客机坠毁事故之间“无法直接对比” 。 约翰德罗说 , “鉴于任务要求和条件的特殊性” , 航天软件开发“采用了不同的方法和人员” 。
但航空安全网站 AirSafe.com 航空安全分析师、前波音工程师托德·柯蒂斯 (Todd Curtis) 说 , 人们肯定会质疑波音的各个部门是否可能因为共享设计、测试和评估方法 , 从而导致不同软件出现相同的问题 。


推荐阅读