Не так давно у меня на канале была статья об аксиомах тестирования. Ошибки в программном обеспечении способны приводить к серьёзным последствиям - к серьёзным потерям времени, денег, здоровья и даже жизни.
Итак, самые дорогие ошибки в программном обеспечении и технике:
Блэкаут в США в 2003 году
Казалось бы тривиальная ошибка в программном обеспечении General Electric (крупная компания-поставщик электроэнергии в США) привела к отключению электроэнергии на Восточном побережье США. Без электричества остались школы, больницы, аэропорты, жилые дома и 55 млн. чел.
14 августа 2003 года в 0:15 ночи оператор электрической системы в Индиане заметил небольшую проблему. Проблема вызывала раздражающий сигнал об ошибке и оператор решил его выключить. Но он забыл перезапустить систему мониторинга ошибок (которую выключил). Выключение системы мониторинга не привело к блэкауту. Но через несколько часов из-за дерева отключились линии электропередач в Огайо-об этом никто не узнал. Перегруженные линии передач привели к эффекту домино, начали выключаться электростанции в Онтарио, Нью-Йорке, Мичигане и далее.
Никто из операторов не заметил каскад ошибок энергосистемы, а дублирующих систем не было предусмотрено.
А вот это совсем обидно. NASA потеряло спутник Mars Climate Orbiter стоимость 125 млн$ из-за того, что субподрядчик не перевёл фунты в метрическую систему. В итоге спутник на большой скорости вошёл в атмосферу Марса и из-за перегрузок его системы вышли из строя - он оказался на 100 км. ниже планируемой орбиты и разбился.
Запуск ядерных ракет
А вот в этом случае ошибка в технике и ПО могла и вовсе привести к глобальной катастрофе. Спутник СССР "Око" системы предупреждения о ракетной атаке сообщил о пуске 5 ракет с территории США. Только благодаря подполковнику Станиславу Петрову катастрофы не случилось. У него вызвало подозрение то, что летят всего 5 ракет, хотя в случае реальной атаки было бы сотни пусков. Офицер не отдал команду на ответную атаку. В чём же причина? Дело в том, что в определённом положении спутника и Солнца свет отражался от облаков и оставлял инфракрасное излучение. Спутник воспринял это излучение за ракеты.
Деление на 0
В 1997 году на американском ракетном крейсере "Йорктаун" было 27 компьютеров с Windows NT. На компьютеры крейсера поставили новую программу, управляющую двигателями. Один из операторов топливной системы записал в таблицу (при выполнении калибровки) нулевое значение. Затем программа разделила на ноль, ошибка перекинулась по локальной сети на другие компьютеры и в результате система "Йорктауна" отключилась.
Похожая проблема возникала у ВВС Израиля. Истрибитель приблизился к Мертвому морю и тут неожиданно отключился автопилот и часть систем самолета. Дело в том что программы автопилота истрибителя производили деление значения текущей высота над уровнем океана. Мертвое море лежит ниже уровня океана, высота становилась нулевой и провоцировала ошибку.
Перемена дат
Следующая история тоже с самолетами - 12 истребителей F-22 отправились в Окинаву. И тут эскадрилья пересекла линию перемены дат (на один день вперёд). В У всех истребителей в результате ошибки отключились главные дисплеи. Пилоты потеряли доступ к данным о количестве топлива, датчикам скорости и высоты, связь была частично нарушено. К счастью, благодаря мастерству пилотов самолёты успешно приземлились без приборов.
Ошибка опять в ПО - разработчики не предусмотрели что где то необходимо прибавлять или вычитать сутки.
Оказывается ошибки при тестировании стоят очень дорого!) И это далеко не все факты - ещё больше в следующей статье!)