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

Как проверить стабильность теста

Проблема

Существует масса причин, из-за которых тесты могут падать:

  • проблемы с инфраструктурой — недоступность браузеров, некорректная работа сети, протухание доступов и т. п.
  • проблемы с внешними сервисами, к которым обращается тест —
  • гонки в самом тесте, когда какой-либо элемент не успел прорисоваться, а контрольное время его ожидания истекло;
  • внезапно возникающие попапы при выполнении теста, которые перекрывают нужный элемент, вносят дифф в отснятый скриншот, не дают кликнуть по нужному элементу;
  • и т. д. и т. п.

Часто такие падения не воспроизводятся с первого раза. Поэтому, чтобы убедиться, что свеженаписанный тест стабилен, нужно запустить его много раз. Но есть одна проблема: если вы запустите свой тест в testplane as is, то после первого же успешного прогона testplane прекратит запускать ваш тест. Тест прошел — всё ОК. Но для проверки стабильности этого недостаточно. Может быть, тест прошел случайно, и если запустить его повторно, то он упадет. Хотелось бы запустить его не 1 раз, и не 2, а например, 20 раз и посмотреть сколько раз он успешно пройдет при 20 повторах. Или 30. Или... и т. д.

Решение: @testplane/test-repeater

Для решения данной проблемы был разработан плагин @testplane/test-repeater.

Плагин позволяет запустить один и тот же тест (или группу тестов) требуемое количество раз.

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

Подробнее о том, как добавить этот плагин в проект, настроить и использовать его, читайте в документации плагина.

Примеры использования

Ниже приведены примеры прогонов тестов, в которых их прогнали 21 раз (1 основной + 20 ретраев), чтобы проверить их на стабильность.

Пример сломанных тестов

Как видно из скриншота тесты были запущены 21 раз и ни разу не завершились успешно:

Неработающий тест

Пример стабильного теста

А здесь наоборот — все запуски прошли успешно:

Стабильный тест

Пример нестабильных тестов

На следующем скриншоте первый тест практически не рабочий — из 21 попытки только 1 раз тест прошел. А второй тест — достаточно стабильный, хотя 2 падения из 21 — это все равно не 100%-ная стабильность. И разработчик может попытаться разобраться, почему все-таки тест иногда падает.

Нестабильный тест

Ключевые слова

  • @testplane/test-repeater