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

Анализ теста на моргание (flaky)

Тест называется "моргающим" (flaky), когда в нескольких запусках он иногда проходит, а иногда не проходит. При этом тестируемый код, сами тесты и конфигурация среды не меняются, просто повторяется запуск тестов.

Чаще всего моргание встречается из-за следующих причин:

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

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

Как воспользоваться

  1. Около моргающего теста нажмите на иконку Explyt и выберите Explyt: Analyze If Flaky
  2. Плагин начнёт запускать данный тест и другие тесты в данном классе с инструментацией кода для выяснения причины моргания
    • Внимание. Тесты будут запущены много раз, что может занять сравнительно большое время. Это необходимо для воспроизведения моргания.
    • Плагин сообщает примерное число необходимых запусков (Approximately 6 runs of...). Это число не является точным, но на него можно ориентироваться. Как правило, требуется в разы меньше запусков, чем сообщается плагином.
  3. В случае, если запуски не привели к воспроизведению моргания, плагин сообщит, что тест не распознан, как моргающий: is not recognized as flaky with rerun. В данном случае плагин всё равно предложит передать код, тесты и собранные данные в AI для выявления проблемы (перейти к шагу 5).
  4. В случае, если запуски привели к воспроизведению моргания, плагин отобразит проблемную инструкцию и стек-трейс до неё. Их можно изучить самостоятельно или просто продолжить
    • При клике на instruction плагин покажет инструкцию в коде или тесте, на которой происходит расхождение поведений работающего и падающего запусков
    • При клике на stack trace плагин покажет
  5. Нажмите на Continue, плагин передаст всю собранную информацию в AI, который объяснит причину проблемы и предложит возможные решения
  6. Внесите изменения в код или тесты для исправления проблемы или свяжитесь с коллегами, если проблемный компонент системы вне вашей зоны ответственности
  7. После внесённого исправления вы можете удостовериться, что моргания больше не происходит. Для этого снова повторите всё, начиная с шага 1. Если исправление было успешно, вы закончите на шаге 3.