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

Я хочу развить высказанную Алексом Сергеевым тему «осмысленности» заметок с описанием багов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии (4)

RSS свернуть / развернуть
+
0
Забавная аналогия. :-) Но как любая аналогия, она немного лжива.
Я хочу обратить внимание одно отличие сморчков от багов.

Анализировать причины произрастания сморчков мы не можем (черт их знает, почему они выросли именно тут!), поэтому скатываемся до анализа своих предположений и ощущений, которые привели нас к сморчку.

Но анализировать причины возникновения багов мы можем! И такой анализ дает гораздо больше, чем анализ собственных ощущений при поиске бага.

Анализируя причины возникновения бага мы тренируем свою интуицию, заставляем ее строить модель программиста, совершающего ошибки и модель уязвимости программы к ошибкам программиста. Как-то примерно так: «Программист может ошибаться так, и так тоже может. Неужели и так может? Ого и даже так!». Потом эта интуиция начинает нам подсказывать «А вот тут программер мог ошибиться точно так же как и в тот раз! Надо бы проверить.»

Знание причин позволяет находить существенную аналогию между с виду совершенно не похожими друг на друга ситуациями.
avatar

xoposhiy

  • 23 января 2010, 00:55
+
+1
Анализировать причины произрастания сморчков можем. Но нам не всегда нужны причины. Причина: кислотность почвы любят такую же, как кизил. Причины почвоведы пусть выясняют. Нам достаточно бытовой наметаннасти глаза — привычки экономно проходить взглядом справа, где кизил, а не слева, где его нет.

Мне всегда нравились экологические аналогии с процессом мышления. Тестирование обычно сравниваю с рыбалкой. Повезти может и новичку, но в среднем улов будет больше у опытного рыбака. Он знает повадки рыб. Он знает местность, рельеф дна, тенденции в зависимости от погоды. Уловистые места обычно на граице тихой воды и течения, на границе прозрачной и мутной воды (и облавливает прочие пограничные значения). Опытный рыбак сверлит лунку над банкой или над резким перепадом глубин. Или в устье реки (и тому подобного интерфейса). Начинающий рыбак (тетер), никогда не советовавшийся с опытным, видит на заснеженном льду водоема только белое безмолвие. Багзилла это рыбный магазин. Панбагон — рыболовная артель.
avatar

korziner

  • 23 января 2010, 01:44
+
0
Всякая аналогия лжива. Но несмотря на это они приносят пользу. Процитирую замечательную статью Accept Defeat: The Neuroscience of Screwing Up (которую я, вероятно, тоже как-нибудь перескажу своими словами, потому что приведённый отрывок лишь иллюстрация, а объяснение этого феномена содержится в остальной части статьи):

Dunbar tells the story of two labs that both ran into the same experimental problem: The proteins they were trying to measure were sticking to a filter, making it impossible to analyze the data. “One of the labs was full of people from different backgrounds,” Dunbar says. “They had biochemists and molecular biologists and geneticists and students in medical school.” The other lab, in contrast, was made up of E. coli experts. “They knew more about E. coli than anyone else, but that was what they knew,” he says. Dunbar watched how each of these labs dealt with their protein problem. The E. coli group took a brute-force approach, spending several weeks methodically testing various fixes. “It was extremely inefficient,” Dunbar says. “They eventually solved it, but they wasted a lot of valuable time.”

The diverse lab, in contrast, mulled the problem at a group meeting. None of the scientists were protein experts, so they began a wide-ranging discussion of possible solutions. At first, the conversation seemed rather useless. But then, as the chemists traded ideas with the biologists and the biologists bounced ideas off the med students, potential answers began to emerge. “After another 10 minutes of talking, the protein problem was solved,” Dunbar says. “They made it look easy.”

When Dunbar reviewed the transcripts of the meeting, he found that the intellectual mix generated a distinct type of interaction in which the scientists were forced to rely on metaphors and analogies to express themselves. (That’s because, unlike the E. coli group, the second lab lacked a specialized language that everyone could understand.) These abstractions proved essential for problem-solving, as they encouraged the scientists to reconsider their assumptions. Having to explain the problem to someone else forced them to think, if only for a moment, like an intellectual on the margins, filled with self-skepticism.
avatar

barancev

  • 25 января 2010, 16:58
+
+1
И плохой тестировщик подобен хрюшке, которая только находит трюфели (сморчки, баги), но не может сказать, почему она искала именно там и по каким признакам он их нашла)
avatar

retverd

  • 23 января 2010, 23:38

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.