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

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

Что такое эвристики в тестировании?

Эвристики — это практические правила, которые помогают принимать решения в условиях неопределённости. Они основаны на опыте, интуиции и здравом смысле, а не на строгих или формальных алгоритмах. В тестировании эвристики используются для оптимизации процесса, когда ресурсы время/бюджет/человеческие силы ограничены.

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

Популярные эвристики в тестировании

1. «Время вышло»

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

Когда Microsoft готовилась к выпуску Windows 95, у компании был жёсткий дедлайн как это обычно и бывает :) Команда тестирования столкнулась с огромным количеством багов, но времени на полное тестирование всех функций просто не было. В итоге они сосредоточились на критически важных сценариях, таких как загрузка системы, работа с файлами и базовые функции интерфейса.

Забавный момент, что в Windows 95 был баг, связанный с вычислением дат ( с 2000 годом), который не был обнаружен вовремя из-за ограниченного времени на тестирование. Однако, несмотря на это, Windows 95 была выпущена в срок, 24 августа 1995 года, и стала одним из самых успешных продуктов Microsoft. Её запуск сопровождался масштабной маркетинговой кампанией, включая рекламу с песней «Start Me Up» от The Rolling Stones, а баг был исправлен в последующих обновлениях.

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

Вывод: Эвристика «Время вышло» — это вынужденная мера, которая часто используется в условиях жёстких дедлайнов. Хотя она может привести к пропуску некоторых багов, фокус на критически важных функциях помогает избежать катастрофических последствий. А иногда такие истории становятся частью фольклора IT-индустрии.

2. «Мёртвой лошади»

Этот подход основан на идее: «Если что-то явно не работает или бесполезно, не тратьте на это время». Название происходит от старой шутки: «Если вы обнаружили, что едете на мёртвой лошади, самое время слезть с неё». В контексте тестирования это означает, что если функция или система явно неработоспособна или не имеет ценности, не стоит тратить ресурсы на её тестирование.

Как это работает:

  1. Обнаружение «мёртвой лошади»: Тестировщик или разработчик замечает, что функция или компонент системы явно не работают или не соответствуют требованиям.

  2. Принятие решения: Вместо того чтобы тратить время на попытки «оживить» её (например, искать баги или пытаться исправить), команда решает сосредоточиться на других, более важных частях продукта.

  3. Документирование: Проблема фиксируется, и принимается решение либо удалить функцию, либо переработать её в будущем. Быстрый фикс, как правило, в этом случае не подходит.

Вспомним, что в процессе разработки игры Cyberpunk 2077 от CD Projekt Red было множество амбициозных идей, таких как сложные AI-системы для NPC и динамический мир. Однако ближе к релизу стало очевидно, что некоторые из этих функций просто не работают так, как задумывалось. Вместо того чтобы тратить время на их исправление, команда решила сосредоточиться на стабильности основных механик игры. К сожалению, это не спасло игру от критики при релизе, но это пример того, как эвристика «мёртвой лошади» могла бы быть применена.

В истории IT есть множество примеров, когда компании продолжали «ехать на мёртвой лошади», тратя огромные ресурсы на бесперспективные проекты. Например, Microsoft потратила годы на развитие Windows Phone, несмотря на очевидные проблемы с экосистемой и низкий интерес пользователей. В итоге проект был закрыт, но это стоило компании миллиардов долларов.

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

3. «Освежающей паузы»

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

Как это работает:

  1. Тестирование до усталости: Тестировщик работает над продуктом в течение длительного времени, что может привести к снижению концентрации и пропуску багов.

  2. Пауза: Тестировщик делает перерыв.

  3. Возвращение с новым взглядом: После паузы тестировщик возвращается к работе и часто замечает проблемы, которые раньше не бросались в глаза.

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

Известный программист и автор книги «Мифический человеко-месяц» Фред Брукс однажды сказал: «Иногда лучший способ решить проблему — это лечь спать». Это отлично иллюстрирует идею эвристики «Освежающей паузы». Многие разработчики и тестировщики замечали, что после сна или даже короткого перерыва они находят решение проблемы, над которой бились часами.

Почему это работает:

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

  • Снижение усталости: Усталость снижает концентрацию, а перерыв помогает восстановить силы.

  • Креативность: Пауза может вдохновить на новые идеи или подходы к тестированию.

Вывод: Эвристика «Освежающей паузы» — это простой, но эффективный способ улучшить качество тестирования. Она напоминает, что иногда лучший способ найти баг — это сделать шаг назад, отдохнуть и вернуться к задаче с новыми силами. Так что, если вы застряли на какой-то проблеме, не бойтесь сделать перерыв — возможно, решение придёт само собой!

Помимо уже упомянутых, существует множество других эвристик, которые могут быть полезны в работе тестировщика, существует множество ресурсов\книг\блогов для их более глубокого изучения, могу порекомендовать почитать личный must have:

  1. Книги:

    «Lessons Learned in Software Testing» by Cem Kaner, James Bach, Bret Pettichord.

    «Explore It!» by Elisabeth Hendrickson.

    «Thinking, Fast and Slow» by Daniel Kahneman (доступна на русском как «Думай медленно… решай быстро»).
    upd: Эта книга доступна на русском языке , но она не в точности про тестирование, а больше на понимание когнитивных эвристик. Автор объясняет, почему люди иногда совершают нерациональные поступки и принимают неверные решения. Он выделяет две разновидности мыслительной деятельности.
    Книга не даст вам готовых рецептов для тестирования как например две выше упомянутых, но поможет стать более осознанным и эффективным. Если вы готовы погрузиться в мир психологии и улучшить своё мышление, эта книга — отличный выбор. Рекомендую всем тестировщикам, которые хотят выйти за рамки рутинных задач и понять, как работает их мозг.

  2. Блоги\форумы

    Блог Джеймса Баха: satisfice.com.

    Блог Майкла Болтона: developsense.com.

    Форум на Software-Testing.Ru.

Заключение

Эвристики в тестировании — инструмент, который помогает тестировщикам быстро находить решения и выявлять проблемы. Они особенно полезны в условиях ограниченных ресурсов и неопределённости. Эксперты, к примеру Джеймс Бах, Михаэль Болтон и Элизабет Хендриксон, подчёркивают, что эвристики — это не строгие правила, а ориентиры, которые нужно адаптировать под конкретный контекст.

Использование эвристик требует опыта, критического мышления и умения задавать правильные вопросы. Если применять их с умом, они могут значительно улучшить процесс тестирования и помочь находить проблемы, которые иначе могли бы остаться незамеченными.

А какие эвристики используете вы или использовали ли вообще? Делитесь своим опытом/мнением в комментариях!

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