Инна подняла отличную и наболевшую тему для многих тестировщиков и их руководителей. У меня давно уже крутилась в мыслях похожая идея. Всё думала как к ней подступиться, а тут прелестный доклад Инны.
Задача тестировщика состоит не только в нахождении бага, а также в выявлении корня проблемы, в выявлении истинной причины и всех факторов (условий), которые влияют на появление бага. Этот же процесс называют локализацией бага или исследованием бага.
Локализация бага — это следствие, т.е. целый процесс, который включает в себя:
- сам факт преступления (в приложении равнозначно наличию бага)
- сбор показаний у свидетелей (в приложении – выявление последствий бага, выяснение, как он проявляется, в чем выражается)
- поиск улик (взаимосвязей вызвавших ситуацию)
- расследование (анализ, построение гипотез о корне проблемы и их отсеивание)
- следственный эксперимент (попытка воспроизведения бага)
Холмс утверждает, что в раскрытии преступлений ему помогает строгое соблюдение научных методов, особое внимание к логике, внимательность и дедукция.
Дедуктивный метод Шерлока Холмса состоит всего из двух шагов:
- На основе всех фактов и улик строится полная картина преступления.
- Отталкиваясь от полученной картины преступления, разыскивается единственно соответствующий ей обвиняемый.
Это ошибка – строить дедукцию до того, как получены достаточные данные. Незаметно для самого себя начинаешь их подгонять под свою схему.
Поэтому собираем максимум информации о баге:
- Отклонение от ожидаемого результата
- Анализ зависимостей с другими функциями, модулями, системами и т.п.
- На каком окружении воспроизводится
- В какой версии воспроизводится
- Информация из логов (серверных и локальных), из Firebug и других полезных инструментов
- Способы воспроизведения и места откуда воспроизводится
- Продолжение варианта использования
- Анализ похожих проблем
Но сбором информации дело не заканчивается.
В искусстве раскрытия преступлений первостепенное значение имеет способность выделить из огромного количества фактов существенные и отбросить случайные. Иначе ваша энергия и внимание непременно распылятся вместо того, чтобы сосредоточиться на главном.
Раскрыть это дело было трудно потому, что скопилось слишком много улик. Важные улики погребены под кучей второстепенных. Из всех имеющихся фактов надо было отобрать те, которые имели отношение к преступлению, и составить из них картину подлинных событий.
Принципы Шерлока для исследования багов
Если применить эти принципы в тестировании, то получится вот такой подход от Шерлока для исследования багов:
- Собираем информацию, выделяем существенное и отбрасываем случайное
- Генерируем все возможные гипотезы
- Сортируем их по степени вероятности
- Проверяем поочередно каждую гипотезу:
- Придумываем тест для подтверждения гипотезы
- Придумываем тест для опровержения гипотезы
- При необходимости, возвращаемся к шагу 2 и генерируем новые гипотезы
При этом суровая правда жизни тестировщика гласит:
- некоторые баги так и не воспроизводятся
- иногда лучше спросить у программиста и узнать его идеи о корне проблемы
- если вопроизведение бага занимает более получаса, лучше спросить у руководителя или ПМа нужно ли такое длительное исследование вообще