пятница, 30 июля 2010 г.

Проще надо быть...

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


Казалось бы - ну зачем ещё нужны эти лишние потери времени, особенно когда лишнего времени и нет, ведь уже найден путь, как можно воспроизвести проблему? Так почему бы не описать его сразу именно в первоначальном виде? Изначально я стала заниматься упрощением полученного сценария воспроизведения проблемы из соображений гуманизма и эгоизма:
 - во-первых, мне было жалко программистов, которым придётся скорее всего несколько раз повторить все эти долгие шаги, пока они будут исправлять ошибку; 
 - а во-вторых, я думала о себе, любимой, которой и сложную последовательность описывать лень, да и потом при проверке исправления (возможно, неоднократном) дольше возиться придётся. 

Так я стала с помощью повторных экспериментов пытаться выбрасывать действия лишние и ненужные, а оставлять только значимые и ключевые для воспроизведения проблемы. Со временем это стало привычкой, о причинах возникновения которой даже не задумываешься. Но после нескольких недавно отловленных багов, я обратила внимание на то, чем ещё может быть полезно максимальное упрощение пути воспроизведения бага, кроме последующей экономии своего и чужого времени:

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

- выкристаллизовав последовательность шагов до нескольких ключевых, проще понять причину возникновения ошибки - как программисту для исправления, так и тестеру для поиска аналогичных и смежных проблем;

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

А ещё мне просто нравится докапываться до сути проблемы, спрятанной порой в пяти процентах всех сложных действий, приведших к обнаружению ошибки - ведь это интересно :)

9 комментариев:

  1. Мысли очень правильные, но всё это уже давно (лет 30 как?) описано в книжках. Читайте!

    ОтветитьУдалить
  2. Господин Анонимный, спасибо за комментарий. Вероятно, мне стоит прислушаться к Вашему совету и начать читать книжки - никогда не пробовала, наверное, это очень увлекательно. А если мне захочется записать какую-либо мысль, то лучше, наверное, просто давать ссылку на книгу и страницу, ведь скорее всего она давно уже где-то записана. А пока мне в голову не придёт что-то совершенно новое и уникальное, видимо, лучше просто молчать.

    ОтветитьУдалить
  3. У меня так не получается, когда забот слишком много, просто не хватает времени на дополнительный анализ найденного бага. 2 раза воспроизвел, скинул на отработку и пошел дальше.

    ОтветитьУдалить
  4. Лена, из вашего поста очевидно, что к таким мыслям вы пришли сами. Это, конечно, вызывает уважение. Но ежели вместо этой деятельности, которую уже успешно провели мастера в этой области, прочитать (перечитать?) пару книжек вроде книжки Канера, можно прийти к намного более серьезным открытиям. А так - сплошной баян, только в других выражениях.
    P.S. Язвительный тон выбирать было необязательно. Проведенная вами аналитическая работа действительно вызывает у меня уважение.
    P.P.S. Уж простите за анонимность.
    Ваш Анонимный :)

    ОтветитьУдалить
  5. admin, да, когда времени нет, дополнительный анализ порой приходится пропускать; и иногда это даже оправдано. Но достаточно часто такая экономия времени может обернуться дополнительными потерями. У меня самой не всегда получается полностью "раскрутить" проблему, и периодически приходится об этом жалеть.

    ОтветитьУдалить
  6. Уважаемый анонимный, позволю себе достаточно развёрнуто ответить на ваш последний комментарий.

    Во-первых, не поняла, что вы имеете в виду под "вместо этой деятельности". Если вы предполагаете, что я потратила массу времени на некую аналитическую работу, которую вы упоминаете, чтобы прийти к тому, о чём я написала в данной заметке, то это слегка не так. И из текста ("<...>после нескольких недавно отловленных багов, я обратила внимание<...>") это может быть понятно.

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

    Ну и в-третьих, касательно "баяна", ответьте, пожалуйста, на три простых вопроса:

    1) читают ли блоги только высокропрофессиональные гуру, которые давно прочитали все возможные книги по тестированию и ищут информацию исключительно свежую и новаторскую?

    2) работа тестеров, которых вы знаете и встречаете, опытных и новичков, всегда безупречна, и никогда нет нужды рассказать/напомнить кому-либо из них о каких-то простых вещах, которым неплохо следовать в работе?

    3) заставляю ли я кого-либо читать свой блог?

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

    P.S. Извините, но язвительный тон у меня включается автоматически на снисходительные советы типа читать книги.

    P.P.S. Сегодня была чудная погода, я гуляла в парке с подругой (работающей программистом), рассказала ей, что написала в своём блоге заметку на тему того, что при описании багов желательно максимально сокращать последовательность действий, приведших к проявлению бага, на что она сказала что-то вроде: "вот это точно, а то некоторые, кажется, этого совершенно не делают".

    ОтветитьУдалить
  7. 2Анонимный: Чтобы не прослыть троллем, предъявите пруфлинк -- названия книг, глав, номера страниц, где про это написано :)

    ОтветитьУдалить
  8. 2Lena: Буквально вот сейчас, в то же самое время, в мейл-листе http://groups.yahoo.com/group/software-testing/ обсуждается похожая тема, но немного в другом контексте: How would you respond to "No user would ever do that!"

    Тестировщик обнаруживает дефект, НО для его воспроизведения требуется выполнить достаточно сложную последовательность действий. Сообщает о нём и получает ответ -- "No user would ever do that!" И что делать?

    Конечно же среди советов встретился и "попытайтесь найти более простой способ воспроизведения, который с большей вероятностью может встретиться в реальной жизни".

    2Анонимный: (Кстати, Кем Канер, модератор этого мейл-листа, не возмущается там по каждому поводу, что я мол это тридцать лет назад уже все написал, читайте мои книги, а дает конкретные ссылки, если ему есть что сказать по делу :) )

    ОтветитьУдалить
  9. Алексей, спасибо! Я всё никак не могу научиться спокойно реагировать на подобные комментарии, хотя и понимаю, что они запросто могут быть, особенно раз уж я пишу о простых вещах... Так что на самом деле - спасибо :)

    Кстати, интересная тема для обсуждения. Надо бы полюбопытствовать, что это за мейл-лист такой, наверное, там много интересного обсуждается (честно говоря, не сталкивалась ещё с мейл-листами, надо разобраться, что это такое... %)).

    ОтветитьУдалить