Вполне возможно, что игра тестировалась тысячи раз, а потом и использовалась десятки тысяч раз, и проблема не проявилась. Однако она существовала, причем всегда. Мы, как люди, написавшие немало программ, вполне понимаем, почему традиционные методы тестирования программ не замечали эту проблему. Тестеры склонны идти по пути, прописанному в документе, называемом спецификацией. В этих документах обычно пишется что-то типа «При входном значении системы, равном A, мы ожидаем получить результат B». Затем проводятся тесты, предполагающие ввод A и проверку, появляется ли на выходе B. Зачастую такие тесты кодифицируются для того, чтобы их можно было проводить почти автоматически. К примеру, для ввода A инструкция выглядит как «Нажмите маленькую кнопку со значком принтера», а исход B был описан как «Из принтера должно выйти несколько листов бумаги с напечатанным на них документом». Существует также тестирование в свободной форме, часто называемое исследовательским{31}
, при котором тестеры думают и действуют как обычные пользователи. Привычные пути работы тестеров проводят к тому, что они упускают из виду редко встречающиеся, но потенциально разрушительные проблемы. В случае развлекательной системы на борту самолета типичный пользователь должен был ограничиться нажатием огромных кнопок «+» и «-» на экране, однако оказалось, что система содержит ужасную ошибку, способную остановить всю работу.В наши дни для тестирования технологий все чаще приглашаются фаззеры, которые отвечают за выявление некоторых из самых опасных ошибок в системах{32}
. Они находят проблемы, которые просто не умеет находить обычный тестер. Фаззинг позволяет пробиться через огромное количество плато в области тестирования. Фаззеры подвергают систему шоку и игнорируют все правила. При отсутствии такой «встряски» сбои в программах становятся невосприимчивыми к «пестицидам», которыми мы их поливаем, а суперсбои терпеливо ждут момента, когда смогут нанести свой коварный удар в самое неподходящее время. Онемение и бесчувственность – это проблема, не ограничивающаяся программированием. Разнообразие, присущее фаззингу, позволяет преодолеть это онемение, а эффективность данного метода не ограничена выявлением ошибок в программах. В сущности, вы можете использовать самую сложную из известных человеку систем – его собственное мышление.Позвольте провести один интересный эксперимент. Прочитайте приведенный ниже список, но только один раз:
1) страус;
2) арахисовое масло;
3) компьютерная программа;
4) осьминог;
5) плащ;
6) сэндвич;
7) лимон;
8) закат;
9) кредитная карта;
10) холодильник.
Для большинства людей запоминание списка из десяти объектов после однократного взгляда представляется довольно сложной задачей. Даже после нескольких изучений или повторений они запомнят лишь элементы из начала и конца списка, да и те быстро выветрятся из памяти. Наша память, как и чувства, склонна игнорировать повсеместное и искать что-то необычное, экстраординарное.
Можете ли вы теперь, не глядя на список, вспомнить, какой элемент был вторым по порядку? Какой порядковый номер был у слова «осьминог»?
Наше мышление не особенно хорошо приспособлено к запоминанию обычных вещей.
Герман Эббингауз, о котором мы уже рассказывали в главе 1, значительно улучшил навыки обучения с помощью повторения, распределенного во времени. Это вполне эффективный подход для механического запоминания, но можем ли мы воспользоваться знанием о том, что наше мышление, как и наши ощущения, склонно активнее реагировать на что-то необычное? Возможно, лучшими источниками информации о том, как избежать плато памяти, могут стать для нас люди, способные делать это постоянно. Найти их можно в местах вроде Чемпионата мира по запоминанию.
В мире существует небольшая группа фанатиков, воспринимающих запоминание как спорт типа футбола или шахмат. Эти спортсмены собираются на различных мероприятиях и соревнуются за титул лучшего в мире. В ходе соревнований часто происходят поистине потрясающие вещи. Так, в 2006 году один из участников, Энди Белл{33}
, невероятно быстро запомнил порядок случайным образом перемешанной колоды из 52 карт. Большинству из нас будет сложно запомнить порядок карт в колоде. Даже посмотрев на карты десяток раз, мы сможем запомнить лишь несколько первых. В данном случае техника Эббингауза неприменима, поскольку здесь важна скорость. Для запоминания всех 52 карт большинству людей потребуется потратить на повторение несколько часов (в лучшем случае).Белл сделал это за 31 секунду.
Тридцать одна секунда! Иными словами, он смотрел на каждую карту меньше половины секунды. В интервью на канале BBC в ответ на вопрос, как ему это удалось, Белл скромно ответил: «Думаю, что у меня такой же мозг, как и у всех остальных, так что это может, в принципе, сделать каждый».
Возможно, он и прав.