Перейти к основному содержимому

Проблемы

Тестирование приложений представляет собой достаточно нетривиальную задачу, основные причины этому следующие:

  • Зависимость от внешнего окружения (ОС, браузер, Web API, web сервисы) — чем больше зависимостей, тем сложнее воспроизвести сценарий.
  • Сложный UI — даже самые тривиальные паттерны взаимодействия достаточно сложно описать и автоматизировать с нуля.
  • Асинхронность — сетевые запросы, UI отрисовка, анимации, всё это усложняет верификацию поведения и взаимодействие с интерфейсом.
  • Комплексная структура — современные приложения обладают сложной структурой, большим количеством зависимостей и комплексной системой сборки. Тесты наследуют данную сложность.
  • Адаптивность — UI зачастую адаптивен, как к устройствам, так и к более тонким настройкам пользователя. Такие параметры также должны учитываться при тестировании.
  • Производительность — приложение это комплексная и распределённая система с большим набором компонентов. Чем больше их задействовано, тем медленнее выполняется тест.

Также отдельно стоит отметить отсутствие чётких правил тестирования, которые порождают за собой такие проблемы как:

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

Плохие тесты — это не проблема инструментов, это следствие отсутствия понятной и измеримой модели тестирования.

Рассмотрим основные метрики, с помощью которых можно измерить качество тестов в конкретном проекте.