Pull to refresh

Зачем изучать чужие ошибки?

Reading time 4 min
Views 1.4K
Полгода назад мы запустили проект Панбагон — коллективный блог, предназначенный для коллекционирования багов и их обсуждения. Как я писал в опубликованном на хабре анонсе, у меня нет цели сделать ни публичный баг-трекер, ни доску позора. Мне хотелось создать некий инкубатор, где из мусора могли бы формироваться идеи, которые могли бы оказаться полезны для поиска багов, аналогичным описанным в Панбагоне. Поэтому я призывал не только описывать сам баг, но и излагать мысли, которые возникли у вас по этому поводу.

Однако мне периодически задают сакраментальный вопрос, вынесенный в заголовок — зачем изучать чужие ошибки? Поэтому я решил объяснить, почему я считаю это крайне полезным занятием для тестировщиков.

Однако начну несколько издалека — с рассказа про огненные сморчки.

Недавно Майкл Болтон опубликовал на сайте StickyMinds.com серию замечательных статей, в которых он рассматривает отдельные фрагменты истории развития различных областей человеческих знаний, и рассуждает о том, какие уроки мы можем извлечь для своих занятий тестированием. Одну из этих статей, «Food for Thought», я хочу частично пересказать, мне кажется, что описанные там примеры позволят мне лучше изложить мой замысел.

Болтон упоминает в своей статье книгу Майкла Поллана «The Omnivore’s Dilemma: A Natural History of Four Meals». Эта книга посвящена всестороннему рассмотрению еды и её взаимоотношений с человеком — как мы её производим, как мы её получаем, и как мы её едим.

Среди прочего Поллан рассказывает про весьма редкий гриб «огненный сморчок», который вырастает на пожарищах в первую весну после лесного пожара. Мало того, что этот сморчок редкий, его ещё и довольно трудно обнаружить — он отличается маленькими размерами и очень похож на головёшку, которые валяются буквально повсюду в том месте, где его он растёт. Специалисты используют особые приёмы для поиска этих грибов. Один из способов — смотреть вдоль земли под низким углом, это позволяет заметить торчащие шляпки; другой способ — искать возле кустиков кизила, который предпочитает почву такой же температуры, что и сморчки; ещё один способ — искать на той же высоте над уровнем моря, на которой грибы уже находили на этой неделе. «Я понимаю, для чего нужны эти теории», пишет Поллан, «Теории подсказывают нам, когда следует усилить своё внимание, скрупулёзно исследуя глазами лесную подстилку, а когда можно внимание ослабить. Для „охотника за сморчками“ сосредоточенное рассматривание является высокоточным инструментом поиска, но это ограниченный ресурс, и теории, аккумулирующие накопленные в прошлом знания, помогают расходовать его эффективно».

При тестировании мы действуем примерно так же — пытаемся искать ошибки определённого вида, создавая специфические условия, в которых они могут проявиться, смотрим на систему в нужных местах и «под нужным углом», подаём на вход специфические данные, и так далее, мы знаем и применяем множество различных эвристик, в которых сосредоточено накопленное в прошлом знание.

Но вот что пишет Поллан дальше: во время охоты на сморчки вы должны «быть готовы отбросить все прошлые теории и использовать нечто, что вроде бы работает в данном конкретном месте и в данное конкретное время. Грибы ведут себя непредсказуемо, и теории работают лишь до тех пор, пока не столкнутся с новой загадкой».

Да ведь с багами всё обстоит в точности так же! Все техники, модели, стратегии и эвристики, которые мы используем, иногда приносят пользу, но в определённых ситуациях могут, наоборот, уводить нас в сторону. И никогда заранее нельзя понять, сработает ли тот или иной способ или нет, и какой из них окажется наиболее эффективным. Потому что баги непредсказуемы, как огненные сморчки (может быть баги называть сморчками, а?)

Однако Поллан далее пишет, что всё-таки можно научиться искать сморчки, для этого используется хорошо знакомое грибникам свойство человеческого мозга, которое психологи называют «pop-out effect» — "… когда мы фиксируем в уме какую-то визуальную характеристику объекта, коорый мы хотим заметить или обнаружить (это может быть цвет или форма или ещё что-то), объект как будто выделяется, выпячивается (pop-out) из окружения. Вероятно, люди приобрели такое замечательное умение в процессе эволюции, занимаясь собирательством, оно помогало находить еду.

Можем ли мы использовать этот «встроенный» навык для поиска багов при тестировании? Видимо, в какой-то степени можем. да. Более того, мы можем его развивать путём тренировок. Рассмотрение и обсуждение багов помогает «натаскать» взгляд на обнаружение багов, благодаря фиксации в мозгу определённых шаблонов, состоящих из наборов признаков наличия багов того или иного вида.

Вернёмся теперь обратно к Панбагону.

Просто описать баг — это то же самое, что показать найденный вами сморчок. Едоку, то есть потребителю оных сморчков, этот результат несомненно представляется важным. Ваши заказчики хотят получать от вас именно это. Но если вы обсуждаете результаты вашей охоты с другими грибниками-тестировшиками, для них более важным и интересным является не сам сморчок как еда, а то, каким образом вы его нашли. Конечно, размер, форма и цвет будут внимательно изучены, но ещё они хотели бы знать, какая там была почва, что росло рядом, высоко ли торчала шляпка, ярко ли светило солнце, в спину оно вам светило или в лицо и прочие приметы окружения.

Если вы нашли десяток сморчков, проанализировали сопутствующие приметы, сформулировали теорию, а потом, используя её нашли ещё десяток, вы можете сразу изложить эту теорию. Возможно, она окажется полезной и кто-то другой сможет с её помощью тоже найти несколько грибов.

Но если у вас теория ещё не сложилась — вы можете хотя бы просто рассказать про все приметы, которые вам показались важными, про то, что вы думали и что вы чувствовали в тот момент. Почему вы заметили это баг? Были ли там другие баги рядом, и если были — почему вы решили рассказать именно про этот? Часто ли вы замечаете подобные баги? Какими мыслями или эмоциями сопровождается момент «схватывания» бага? Есть ли у вас уверенность, что в следующий раз, если в похожей ситуации возникнет подобный баг, вы его тоже обнаружите?

Давайте вместе изучать баги в местах их обитания, пытаться выявить признакам, по которым можно их обнаружить, и будем надеяться, что в результате этого появятся новые теории и эвристики, которые кому-нибудь из нас принесут пользу, а вместе с ней почёт и славу умелого тестировщика.
Tags:
Hubs:
+23
Comments 7
Comments Comments 7

Articles