пятница, 25 апреля 2014 г.

SQA Days 15. Исследование багов: учимся у Шерлока Холмса!

В сегодняшнем обзоре я затрону только один доклад - доклад Инны Смирновой на тему «Исследование багов: учимся у Шерлока Холмса!»
Инна подняла отличную и наболевшую тему для многих тестировщиков и их руководителей. У меня давно уже крутилась в мыслях похожая идея. Всё думала как к ней подступиться, а тут прелестный доклад Инны.
Основываясь на ее докладе, найденном в интернете сайте и собственном опыте, рассказываю.
Тестирование - это не просто кликанье мышкой, замечание неточностей и их оформление в трекер.
Задача тестировщика состоит не только в нахождении бага, а также в выявлении корня проблемы, в выявлении истинной причины и всех факторов (условий), которые влияют на появление бага. Этот же процесс называют локализацией бага или исследованием бага.
Локализация бага - это следствие, т.е. целый процесс, который включает в себя:
·         утверждение самого факта преступления (в приложении равнозначно факту нахождения бага)
·         сбор показаний у свидетелей (в приложении - выявление последствий бага, выяснение, как он проявляется, в чем выражается)
·         поиск улик (взаимосвязей вызвавших ситуацию)
·         расследование (анализ, построение гипотез о корне проблемы и их отсеивание)
·         следственный эксперимент (попытка воспроизведения бага)

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

Дедуктивный метод Шерлока Холмса состоит всего из двух шагов:
1.       На основе всех фактов и улик строится полная картина преступления.
2.       Отталкиваясь от полученной картины преступления, разыскивается единственно соответствующий ей обвиняемый.

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

Но сбором информации дело не заканчивается. "В искусстве раскрытия преступлений первостепенное значение имеет способность выделить из огромного количества фактов существенные и отбросить случайные. Иначе ваша энергия и внимание непременно распылятся вместо того, чтобы сосредоточиться на главном."
"Раскрыть это дело было трудно потому, что скопилось слишком много улик. Важные улики погребены под кучей второстепенных. Из всех имеющихся фактов надо было отобрать те, которые имели отношение к преступлению, и составить из них картину подлинных событий".
Если применить эти принципы в тестировании, то получится вот такой подход от Шерлока для исследования багов:
1.       Собираем информацию, выделяем существенное и отбрасываем случайное
2.       Генерируем все возможные гипотезы
3.       Сортируем их по степени вероятности
4.       Проверяем поочередно каждую гипотезу:
a.       Придумываем тест для подтверждения гипотезы
b.      Придумываем тест для опровержения гипотезы
5.       При необходимости, возвращаемся к шагу 2 и генерируем новые гипотезы

Однако суровая правда жизни тестировщика гласит:
·         некоторые баги так и не воспроизводятся
·         иногда лучше спросить у программиста и узнать его идеи о корне проблемы
·         если вопроизведение бага занимает более получаса, лучше спросить у руководителя или ПМа нужно ли такое длительное исследование вообще

И отлично Инна подметила, что всё это не будет иметь никакого смысла, если не оформлено в хороший багрепорт! Так что учимся писать понятные всем баги. :)

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


P.S. Холмс говорит, что человеческий мозг имеет ограниченную ёмкость для хранения информации, и обучение бесполезным вещам сократит его способность к изучению полезных.
Поэтому тренируйте и берегите свою память!

Комментариев нет:

Отправить комментарий