Парадокс пестицида и методы борьбы с ним

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

В 1990 году Борис Бейзер в своей книге Software Testing Techniques, Second Edition ввел термин “парадокс пестицида” в контексте тестирования программного обеспечения. Он писал: “Любой метод, который вы используете для предотвращения или поиска ошибок, оставляет после себя часть скрытых проблем, против которых этот метод бессилен”.

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

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

Содержание:

Почему возникает парадокс пестицида?

Парадокс пестицида может возникнуть по следующим причинам:

Развивающееся приложение

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

Устаревшие тесты и данные

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

Недостаточное покрытие тестами

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

Парадокс пестицида в автоматизации тестирования

Теперь давайте посмотрим как обстоят дела с парадоксом пестицида в автоматизации тестирования. Причины парадокса пестицида в автоматизации тестирования могут быть следующие:

Неподдерживаемые тесты

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

Отсутствие управления тестовыми данными

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

Регрессионные тесты

Лучший вариант использования автоматизации тестирования – это регрессионные тесты. Они запускаются каждый спринт, чтобы поднять тревогу, если что-то пошло не так. А что, если они не дают никаких предупреждений и создают впечатление, что все под контролем? Это обычное явление при регрессионном тестировании, если тесты не обновляются, чтобы соответствовать изменениям в приложении, и в каждом спринте запускаются одни и те же устаревшие регрессионные тесты.

Подробнее об эффективных регрессионных тестах читайте здесь.

Ограничения тестовой среды

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

Нехватка ресурсов и времени

Методологии Agile и DevOps по сравнению с водопадной методологией отличаются более быстрыми и компактными циклами тестирования. Создание и поддержка автоматизированных тест-кейсов в коротких спринтах может оказаться сложной задачей из-за нехватки времени и ресурсов. Это часто приводит к уменьшению набора тестов для автоматизации или выполнению их без учета последних изменений в приложении. Тестовое покрытие страдает в обоих случаях. Парадокс пестицида может возникнуть из-за того, что существующий набор тестов не смог обнаружить ошибки и продемонстрировал ложную стабильность.

Недостижимость 100% автоматизации тестирования

Стопроцентная автоматизация – это миф, и при использовании традиционных средств автоматизации тестирования она неосуществима.

Сложные сценарии не могут быть автоматизированы.

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

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

Лучшие методы предотвращения парадокса пестицида

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

Регулярная поддержка тестов

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

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

Независимая оценка

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

Расширение тестового покрытия

Мы никогда не сможем добиться 100-процентного тестового покрытия с помощью традиционных средств автоматизации. Но мы должны стремиться к максимальному покрытию при автоматизации тестирования. Обсуждение новых функций с заинтересованными сторонами поможет расширить покрытие продукта тестами. Не полагайтесь только на существующие тест-кейсы.

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

О том, как расширить тестовое покрытие, читайте здесь.

Проверка наборов тестов

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

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

Приоритезация тестов

Определение приоритетов при создании тест-кейсов – один из эффективных способов борьбы с парадоксом пестицида. Оцените и определите приоритетность кейсов на основе бизнес-риска, критичности, доли рынка, влияния и т. д. Сначала напишите кейсы для хорошего покрытия высокоприоритетных тестов, а затем постепенно переходите к менее приоритетным.

Ad-hoc тестирование и тестирование взаимодействия с пользователем

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

Agile и DevOps тестирование

Интегрируйте автоматизированные тесты в конвейер CI/CD, чтобы получать быструю и раннюю обратную связь. Убедитесь, что тесты запускаются всякий раз, когда в код вносятся изменения. Такая ранняя обратная связь позволяет разработчикам вносить изменения в код на ранних стадиях и значительно снижает стоимость вывода продукта на рынок.

Эффективный анализ дефектов

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

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

Заключение

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

Стремитесь к максимальному покрытию и пишите различные ad-hoc тесты, чтобы обнаружить дефекты, которые в противном случае могут остаться незамеченными. Ключевым моментом является постоянный мониторинг и обновление тестов, чтобы они оставались актуальными, эффективными и ценными с точки зрения ROI.

Перевод статьи «The Pesticide Paradox: Sustaining the Effectiveness of Testing Methods».

1 комментарий к “Парадокс пестицида и методы борьбы с ним”

  1. Пингбэк: 5 ключевых принципов тестирования

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *