Отслеживайте продолжительность тестирования

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

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

Примечание: Это специальный пост для демонстрации моей заявки на Redis Hackathon.

Обзор моей работы

Redis Timing Tracker поможет вам отслеживать продолжительность всех тестов. Это полезно для того, чтобы знать, когда время выполнения теста внезапно увеличивается.

Обзор всех тестовых страниц

Обзор страницы одного теста

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

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

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

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

Вы можете увидеть это в действии: https://redis-timing-tracker.vercel.app/.

Примечание: пока отслеживание работает только с Jest. И учитываются только те тесты, в которых нет ошибок. Полная длительность теста не сохраняется, если в тесте есть ошибка.


Давайте посмотрим на архитектуру проекта:

Я разработал Jest-репортер, который должен быть добавлен в проект для отслеживания времени выполнения тестов.
Этот репортер будет публиковать следующие данные в теме:

  • выполнение каждого теста
  • общая продолжительность выполнения

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

Категория подачи

Я представляю этот проект для Wacky Wildcards.

Используемый язык

JS/TS/Node.js.

Ссылка на код

romain-trotard / redis-timing-tracker

Redis Timing Tracker

Что это такое?

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

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

Бэк-офис развернут здесь: https://redis-timing-tracker.vercel.app/.

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

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

Вот небольшая схема ахитектуры:

Используемый стек

Типовые структуры написаны с помощью Typescript.

В этом проекте я использую 3 сервиса стека Redis:

  • Redis pub/sub
  • RedisJSON
  • RediSearch
  • RedisTimeSeries

Сообщения pub/sub

Прежде чем рассматривать, как хранятся данные. Важно увидеть, как используется Redis pub/subСобытия публикуются и подписываются на тему …

Посмотреть на GitHub

Дополнительные ресурсы / информация

Я разработал BO с помощью Next JS и использовал Chakra UI для создания внешнего интерфейса.

Для построения графиков я использовал recharts.

Для базы данных я использовал клиент node-redis. И использовал следующие модули:

  • RedisJSON
  • RediSearch
  • RedisTimeSeries

  • Ознакомьтесь с Redis OM, клиентскими библиотеками для работы с Redis как с многомодельной базой данных.
  • Используйте RedisInsight для визуализации данных в Redis.
  • Подпишитесь на бесплатную базу данных Redis.

Оцените статью
devanswers.ru
Добавить комментарий