вторник, 18 октября 2011 г.

Заметки об управлении дефектами


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

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

     Итак, список полезностей в управлении дефектами:

Поведение тестировщиков

1) Исправление дефекта проверяет тот, кто его подписал - Это прописная истина, впитанная с младых тестерских ногтей. Делать так хорошо, потому что автор баг репорта лучше всего знаком с ситуацией. Каким бы полным ни был отчет об ошибке, автор в процессе исследования бага видел множество мелочей, которые остались у него в памяти. И работал с приложением он определенным привычным именно ему образом.
     Если случается так, что проверить исправление должен другой (например, автор заболел или в отпуске), то желательно сначала повторить дефект в той сборке, где он был замечен. А потом уже проверять исправление в новой сборке.

2) Читайте дефекты коллег - Хотя бы те, которые связаны с тем, что вы тестируете. Особенно актуально читать баги, которые сыпятся во время тестирования текущего билда.
     Что это дает:
б) знание, какие дефекты уже обнаружены, а значит, вы не будете тратить время на тестирование и документирование багов, которые уже известны.
в) новые идеи для поиска дефектов. Нередко можно найти ряд новых багов на основе информации, вычитанной из багов коллег.
г) вы сможете прикрыть коллегу-тестера, если он недоступен, а у программистов есть вопросы.
Пример: на днях прочитала дефект коллеги, не поняла, спросила, мне все объяснили. Потом коллега ушла домой, а вечером у программиста возникли вопросы по данному багу. Благодаря тому, что меня вовремя просветили, программист сразу получил ответы и баг был пофикшен немедленно.

3) Разъясняйте интерфейс баг-трекера -  когда в проект приходит новый человек. Программист, тестировщик, технический писатель - кто угодно. Потратив пару минут на объяснения и показ того, что, где и как надо делать,  вы
а) экономите время и нервы коллеги, которые он растрачивал бы при самостоятельном ковырянии в системе. Он, конечно, разберется, но он потратит 20 минут, а вы объясните за 5. Также, это профилактика возможных проблем, которые могли бы возникнуть при неправильной работе с баг-трекером (например, случайное удаление бага или появление загадочных комментариев).
б) налаживаете контакт. Вы будете работать в одной команде – вот и покажите, что команда, это не только название, но и внимание друг к другу и взаимопомощь. Даже в таких мелочах. Человек гораздо охотнее будет с вами общаться и сотрудничать.

4) Разъясняйте жизненный цикл записи в багтрекере – новичкам. Смысл этого пункта идентичен предыдущему.
     Единственное различие в том, что вы объясняете. В предыдущем случае вы объясняли интерфейс баг-трекера (как добавить новый тикет, как изменить его состояние, как добавить комментарий, как настроить фильтр и пр.).
     А в этом случае вы объясняете, какой смысл стоит за переводом дефекта в трекере из одного состояния в другое. Плюс, всякие нюансы, характерные для вашего проекта.
Например, в некоторых наших проектах у багов не используется состояние «Rejected» (см. картинка в начале поста). Вместо этого разработчик переводит дефект  в «Fixed» и в комментах пишет, что баг отклонен и по какой причине.

5) Перед подписанием дефекта проведите поиск в баг-трекере – А вдруг такой дефект уже есть? Удивительно, но это действие не всем тестировщикам кажется необходимым. В результате, плодятся дубли, а значит тратится время на исследование и подписание уже известных багов, на их отработку ПМом и т.д.
     Чтобы было удобно проводить поиск, назначайте багам ключевые слова из четко определенного списка, фильтруйте их по билдам, по компонентам, по состояниям и т.д. Если младшие коллеги неуверенно пользуются функцией поиска, проведите обучающую сессию – 20 мин тренировки и эффективность работы с поиском повышается в разы.

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

7) Если дефект не может быть проверен в текущем билде, оставляйте комментарий - Это нужно, чтобы держать под контролем «подвисшие» дефекты. Подвисшие – это те, исправления которых вошли в текущий билд, но не могут быть проверены по какой-то причине. Например, заблокированы другими багами. Или этот баг нужно проверить в другой специфической сборке. Сейчас вы это помните, но пройдет немного времени и мозг выгрузит эту информацию из памяти. И попробуйте потом с ходу дать объяснение по каждому багу, если ПМ спросит, а почему это не протестировано. Или вы сами будете мучительно вспоминать на какой конкретно баг завязан этот.
     Посему, чтобы не напрягать зря память, рекомендую записывать.

8) Прежде, чем подписывать предложения по усовершенствованию, получите согласие ответственного лица – Зависит от соглашений у вас в команде. Предложение по усовершенствованию – это когда дефекта формально нет, но вы видите, что имеет смысл кое-что улучшить и вы даже знаете, что конкретно. 
     Если баг в большинстве случаев программист обязан исправить, то внедрять усовершенствование он не обязан. Решение зависит от многих факторов, в т.ч. текущих приоритетов разработки и характера усовершенствования. Я обычно сначала согласовываю такие вещи со всеми заинтересованными лицами - с программистом, с ПМ-ом и др. - зависит от значимости усовершенствования. Предварительное согласование позволяет не плодить в баг-трекете заведомо отвергнутые записи. 

9) Пользуйтесь фильтрами - Обычно баг-трекер позволяет создавать выборки багов в соответствии с определенными условиями фильтрации.
     Например, у меня были такие выборки:
- мои реализованные дефекты (fiхed, которые подписала я)
- реализованные для меня (fiхed, которые подписала не я, но я теперь отвечаю за эту функциональность)
- все мои дефекты (все дефекты, подписанные мной, независимо от состояния)
- все дефекты по билду (на каждый билд отдельный фильтр. Потом удобно делать отчеты или просто смотреть, какие дефекты обнаружены в данной конкретной сборке).
- реализованные дефекты членов команды (на каждого бойца отдельная выборка)
- все неисправленные дефекты по проекту
Наличие правильно настроенных фильтров делает работу быстрее и удобнее.

Настрой уведомления!

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

     Поэтому подумайте, а не настроить ли вам ....

10) Уведомления об исправлении подписанного вами дефекта - Вообще, я пересматриваю список исправленных дефектов в начале нового билда.
     Но вот частный случай, когда такие уведомления могут быть полезны:
Тестируем новый билд. Находим дефект. Например, неправильно выполняется фильтрация. Подписываем. Тестируем дальше. Программист смотрит баг и видит, что щупальца этой проблемы тянутся повсюду в программе. Он исправляет баг и пишет в комментах что мол, вот, все дело в неправильном типе поля, поэтому связанные с этим проблемы больше не подписывайте, я одним махом все исправил. А вы не знаете об этом. Вы себе тестируете, видите, что сортировка тоже не работает. Пишете баг. А вам говорят: эй, это же дубль.
   
     В ситуациях, подобных примеру выше, уведомление об исправлении дефекта, который был подписан на текущий билд, может помочь.Вы прочитали бы комментарий к нему и скорректировали бы свои действия.
     С другой стороны, эту же проблему можно решить без уведомлений, просто договорившись с программистом, что он будет предупреждать о подобных ситуациях.
     Тут надо смотреть, как удобнее.

11) Уведомления о просьбе уточнить подписанный вами дефект - Чтобы вы узнали о такой необходимости сразу, а не тогда, когда вам прийдет в голову проверить состояние этого конкретного бага. Может, вы планируете это через месяц.

12) Уведомлять ПМ о подписании дефекта - Эти уведомления обязательны. ПМ должен немедленно узнать о баге, прочесть его и отреагировать.

13) Уведомлять руководителя команды тестирования о подписании дефекта – По необходимости. Тест тим лид железно должен знать о каждом обнаруженном баге, но у нас работа бывала организована так, что тест лид знал о багах еще до подписания их в трекер. Поэтому уведомления ему были не нужны. В остальных случаях они необходимы.

14) Уведомлять себя о подписании дефектов другими - Чтобы вы могли пойти и посмотреть, что подписали коллеги. Зачем читатать баги коллег я писала выше. Как вариант, можно без уведомлений просто пару раз в день заглядывать в список свежих багов.

15) Уведомлять программиста о назначении на него дефекта - Обязательно. Программист должен как можно быстрее узнать о баге, который он должен исправить.

16) Уведомлять программиста об отвержении дефекта - Обязательно. Программист должен как можно быстрее узнать, что баг все же не исправлен.

17) Уведомлять программистов о подтверждении дефекта - Вот это для меня было открытием. В одном из проектов программисты сами попросили присылать им уведомления, когда тестировщики подтверждали исправление дефекта. Суть в том, что программисту не нужно больше томиться, гадая, то ли он все-таки исправил баг, то ли тестеры еще это не проверили. И потом, чисто психологически, приятно получать не только отрицательный, но и положительный отклик на свои усилия. Если у вас такие уведомления не практикуются, спросите, не хотят ли ребята их получать. Может, они просто не знают, что такое возможно.
     С другой стороны, если вы уже долго работаете без таких уведомлений, возможно все слишком привыкли к текущему положению дел. И появление кучи писем, в ответ на которые не нужно судорожно мчаться и что-то фиксить, будет досадным спамом. В другом проекте, где мы это пробовали, идея не прижилась и такие уведомления отключили.
     Но, по крайней мере подумать, надо ли такое в вашем проекте, можно.

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

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

  1. чЁ ТО с русской терминологией, читать трудно.

    Из середины вырвал, что ПМ чё-то должен. Вообще может и должен, ноне те стовому отделу, а своей проф-совести... и может у него с совсестью какой-то другой договор :)

    И ешё это похоже на описание костылей к какому-то багтрекеру, а не описание процесса. Мне кажется ценны отдельно процесс, отдельно костыли.

    Про вывод:
    Не согласен с тем, что уведомления эффективный интрумент отслеживания изменений!

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

    Уведомления работают только тогда, когда они редки и желанны (у пользователей ждущих фикса :)

    Если что-то требует немедленного вмешательства, то об этом нужно говорить словами / адресными письмами.

    Уведомления нужны для менеджеров назначенных подшивать бумажки и бездельников которые не умеют/ не хотят пользоваться трекером.

    ОтветитьУдалить
  2. to Nicholas A. Georgievsky

    >чЁ ТО с русской терминологией, читать трудно.

    Вы имеете в виду, что вперемешку используются термины "баг" и "дефект" или что-то другое?

    > Из середины вырвал, что ПМ чё-то должен. Вообще может и должен, ноне те стовому отделу, а своей проф-совести... и может у него с совсестью какой-то другой договор :)

    ПМ, как и любой участник проекта, должен исполнять свои обязанности. Кому он это должен вопрос философский :) Круг обязанностей может варьироваться. У нас принято, что в большинстве проектов ПМ назначает, кому из программистов какой дефект исправлять. Поэтому, это просматривается в заметках в посте.

    > И ешё это похоже на описание костылей к какому-то багтрекеру, а не описание процесса.

    Это действительно набор разрозненных заметок, в начале поста я специально это отметила.

    > Не согласен с тем, что уведомления эффективный интрумент отслеживания изменений!
    >я пользуюсь запросами к трекеру, которые выполняю в тот момент, когда у меня на есть время обрабатывать их результаты

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

    > Если что-то требует немедленного вмешательства, то об этом нужно говорить словами / адресными письмами.

    Уведомления и есть те самые адресные письма, которые
    а) не нужно писать вручную, они сами создаются и сами рассылаются, кому надо.
    б) чуточку снижают шумовой фон в помещении (представьте, что будет, если десять человек в комнате постоянно будут что-то выкликать друг другу). Мы и так все страшно общительные люди :)
    в) содержат информацию непосредственно из баг-трекера. В частности – описание дефекта. Разработчик может сразу приступать к исправлению, даже идти в трекер не надо.

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

    ОтветитьУдалить
  3. > 6) Перед проверкой исправления дефекта, проверяйте, вошел ли он в текущий билд

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

    > Не согласен с тем, что уведомления эффективный интрумент отслеживания изменений!
    >я пользуюсь запросами к трекеру, которые выполняю в тот момент, когда у меня на есть время обрабатывать их результаты

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

    А вообщем команда должна сама сесть и обсудить как им удобно работать(это я по поводу организационного процесса).

    ОтветитьУдалить
  4. to Pesick:

    >Как по мне, проще при выпуске билда от разработчиков запросить список пофикшеных багов

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

    > А вообщем команда должна сама сесть и обсудить как им удобно работать(это я по поводу организационного процесса).

    да, согласна полностью

    ОтветитьУдалить
  5. Добрый день. У вас много хороших советов. Надеюсь вы не будете против, если некоторые я позаимствую для своего доклада а предстоящей конференции SQA Days.

    ОтветитьУдалить
  6. > Это чисто техническое затруднение, что не в каждом трекере мы находили, как настроить выборку, чтобы не все пофикшенные баги отображались, а только те, проверять которые нужно в ближайшем билде.
    В любом трекере решается через поле "исправлено в билде #"

    --
    Я тоже резко против оповещений. По крайней мере мгновенных. Раз в сутки - еще куда ни шло.

    ОтветитьУдалить
  7. to LeshaL:
    Добрый день. Не против :)


    to Sergey Martynenko:
    > В любом трекере решается через поле "исправлено в билде #"

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

    >Я тоже резко против оповещений. По крайней мере мгновенных. Раз в сутки - еще куда ни шло.

    Было бы хорошо, если бы Вы рассказали:
    1) почему Вы резко против оповещений
    2) чем Вы их заменяете
    3) в чем выигрыш этой альтернативы

    ОтветитьУдалить
  8. а я (QA) за email-оповещения!
    это очень удобно, когда ставишь фильтр складывать такие письма в отдельную папку и каждое утро, проверяя почту, просматриваешь where is my issues. И сразу понятно, где застрял баг, в каком он статусе, какому тиму он ушел. Очень понравилась настройка трекера, которые нотифицирует все изменения с заведенными мною дефектами и с теми, на которые подписался как вотчер. Очень удобно. Просматривать сотни своих дефектов - это очень много времени, а видеть все изменения за последние сутки в виде писем - очень даже удобно. И когда ожидаешь фикса шоустоппера - очень здорово получить письмо, а не лазить каждые 10 мин в трэкер. Особенно актульно, когда тим разбросан по миру или по офисам.

    ОтветитьУдалить
  9. to MushkaNaOpushke:
    да, да! у меня тоже в почте настроены фильтры и все приходящие уведомления автоматически раскладываются по папочкам.


    Судя по комментариям к посту, похоже, что удобство/неудобство работы с уведомлениями зависит в первую очередь от привычек каждого человека, и уже во вторую очередь от баг-трекера и собственно уведомлений. То есть если кто изначально привык обходиться без уведомлений, постоянно мониторить баг-трекер и пр., то поток писем будет бесполезным и раздражающим. А если изначально вы привыкли к уведомлениям, то без них потом как без рук.

    ОтветитьУдалить
  10. "А если изначально вы привыкли к уведомлениям, то без них потом как без рук." - ППКС

    На самом деле в нотификации по почте есть один очень большой плюс - можно работать (readonly) с багами из дома, не входя в корпоративную сеть. Подключение к почтовому серверу через SSL ничего не стоит, а вот поднять инфраструктуру с VPN намного сложнее.

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

    ОтветитьУдалить
  11. to LeshaL:
    > Но есть и минусы. Например засоряет почту, отвлекает и тд.

    Чтобы не засорялась почта можно автофильтром складывать все тематические письма в отдельную папку. Тогда остальная входящая корреспонденция не засоряется. Если кто не хочет вообще получать уведомления, можно автофильтром автоматически их удалять.

    Чтобы не отвлекаться, можно отключить всплывающие уведомления о приходе почты. И точно также, как в случае с RSS, идти читать, только когда это удобно.

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