Шрифт:
Интервал:
Закладка:
Проведенное компанией Progressive Insurance исследование показало, что менее одного процента людей, услышавших включение автомобильной сигнализации, позвонят в полицию. Какофония неэффективных сигналов привела к тому, что в Нью-Йорке был принят закон, согласно которому запрещалось использование сигнализаций, не выключавшихся автоматически после трех минут работы. Это развязало руки преступникам. Проведенное в 1997 году исследование данных о страховых случаях, связанных более чем с 73 миллионами автомобилей, показало, что внедрение автосигнализаций не привело к уменьшению количества краж. Вот что происходит, когда нам предлагают фальшивые сигналы и недостоверные данные: мы игнорируем и те и другие.
В противостоянии между сигналом и шумом последний имеет явное преимущество. Человеку свойственно выключать информационные каналы, переполненные шумом. Проблема состоит лишь в том, что эти каналы действительно содержат важные для нас сообщения. Иногда противоугонная сигнализация включается именно тогда, когда нужно, однако этот канал коммуникации уже отключен в нашем мозге и воры используют это в своих интересах. Известная и довольно наглая техника кражи автомобиля состоит в том, чтобы запустить сигнализацию сразу у многих машин, а затем спокойно заняться угоном одной-единственной.
Автосигнализация утратила свою эффективность, поскольку перестала быть необычной. Однако, отключаясь от нее, мы упускаем из виду по-настоящему важные сигналы – а это может привести к значительным ошибкам.
В конце 2000 года технологическое сообщество США заинтересовалось техническим сбоем, произошедшим в округе Волусия во Флориде. Машина для электронного голосования в районе с 600 зарегистрированными избирателями насчитала минус 16 тысяч 22 голоса за Эла Гора, кандидата от Демократической партии{23}. Если вы в это время не снимались в эпизоде шоу «Остаться в живых» на пустынном острове, то наверняка помните драму, связанную с противостоянием Буша и Гора в ходе выборной кампании. Неуверенность! Неопределенность! Хаос! Но что же случилось в Волусии? Каким образом машина, призванная помогать в одном из самых важных процессов в стране, могла дать столь серьезный сбой? (Нужно отметить, что плохие результаты были аннулированы и не оказали никакого влияния на итог выборов, поскольку голоса в Волусии были впоследствии пересчитаны, причем с изрядной шумихой.)
Наверняка машина для голосования тестировалась тысячи раз, а затем сотни раз использовалась на региональных выборах без каких-либо проблем. Тем не менее проблема возникла, и это изрядно замедлило процесс выбора следующего лидера свободного мира. Если же мы с вами посмотрим на внутреннюю кухню отрасли по разработке программного обеспечения, то легко поймем, почему серьезные программные сбои часто не привлекают внимания. Программы создаются разработчиками, то есть людьми, производящими множество страниц с логическими инструкциями, которые машина затем интерпретирует и в соответствии с которыми работает. В большинстве компаний-разработчиков готовый программный продукт проверяется тестерами – людьми, которые смотрят на программу со всех сторон в надежде найти ошибки. Тестеры делают то, что делали бы на их месте обычные пользователи. Они нажимают на большие кнопки, выбирают самые типичные опции, открывают и закрывают файлы и т. д. Проблема состоит в том, что зачастую пути, по которым идут обычные пользователи, не всегда позволяют выявить сбои или ошибки в программе. Какие-то проблемы выявляются, однако способность тестеров найти сбои быстро достигает уровня плато – система, по сути, приобретает иммунитет к стандартным техникам тестирования. Однако многие ошибки, упускаемые из внимания, оказываются потом чуть ли не самыми важными (минус 16 тысяч 22 голоса – это серьезно). То есть обычный метод охоты за сбоями несовершенен и позволяет упускать именно те важнейшие ошибки, которые как раз и необходимо найти.
Каждый год сотни продуктов отзываются с рынка из-за тех или иных дефектов. О некоторых из этих дефектов производители знают еще перед выпуском продукта, однако во многих случаях их не выявляют из-за того, что тестирование было слишком методичным, слишком нормальным. Борис Бейзер, легенда в мире тестирования программных продуктов, называет эту ситуацию парадоксом пестицидов{24}. В своей книге Software Testing Techniques («Техники тестирования программ») он замечает: «Каждый метод, который вы используете для предотвращения или выявления сбоев, оставляет следы менее заметных сбоев, против которых этот метод неэффективен». Выражаясь иными словами, традиционные методы проверки могут привести к появлению «суперсбоев», что особенно страшно, если речь идет о программах, контролирующих движение самолетов, гаджетах, следящих за ускорением автомобиля, или устройствах, помогающих выбрать президента.
Процессу тестирования программ необходим шок, позволяющий предупредить парадокс пестицидов и пробиться сквозь создаваемое сбоями плато. Решение этой проблемы может состоять в использовании подхода, известного в наши дни под названием «фаззинг» и способного справиться почти с любым плато, вызванным акклиматизацией.
Фаззинг обращает внимание на все странное и необычное{25}. Эта техника основана на точке зрения, с которой редко соглашаются инженеры: большинство систем слишком сложны для полного понимания, что приводит к возникновению странных вещей. Инженеры привыкли к жестким процессам и живут в мире математических допусков. Фаззинг допускает, что реальный мир значительно более неопределен.
Первый опыт общения Хью с фаззингом{26} (хотя в то время он этого еще не понял) состоялся, когда он учился в школе на Багамах. Хью захотел выпить газировки. Тогда, в 1980-х годах, машины по продаже прохладительных напитков только-только начали появляться в школах в столице страны Нассау. Багамы – довольно небольшой рынок для поставщиков таких машин, а кроме того, ситуация осложнялась уникальным положением национальной валюты. Официальной денежной единицей на острове выступает багамский доллар, искусственно привязанный к доллару США в соотношении один к одному. Багамские и американские доллары полностью взаимозаменяемы. Если вы покупаете в магазине шоколадку, то можете получить сдачу наполовину в американских, а наполовину в багамских долларах.