Это вторая публикация в серии технических обновлений, в которой основное внимание уделяется новому набору тестирования для ARK Core v2, возникающим проблемам и обзору процесса разработки.

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

Разработка Core v2 началась с Mocha, первого набора для тестирования (такого же, как и v1), однако появились более подходящие варианты для наших конкретных нужд. Были взвешены плюсы и минусы разных решений, и в итоге Jest был выбран вместо Mocha. Команда разработчиков решила внедрить Jest по многим причинам.

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

Jest был разработан и используется Facebook для тестирования всего своего кода JavaScript, включая приложения React. Jest также используется Airbnb, Twitter, Pinterest, Instagram и Oculus. .

Одна из философий Jest заключается в предоставлении интегрированного опыта с нулевой конфигурацией. Поскольку у ARK есть доступ к этим инструментам, мы смогли больше сосредоточиться на написании тестов, что привело к гораздо более стабильной и здоровой базе кода.

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

Как заявляет Airbnb:

«Airbnb перешел с Mocha на Jest. Запуск нашего набора тестов с Mocha занял 12+ минут. В CI с нашими мощными сборочными машинами (32 ядра) мы можем запустить весь пакет Jest за 4 минуты 30 секунд ».

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

Примеры

Запуск тестов

Запуск тестов для нового Core API v2. После того, как покопался с пользовательским скриптом для запуска / остановки узла.

Глобальная настройка

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

Простой тест API

Пример простого теста API, выполненного в Jest.

Повышение производительности

Jest обеспечил нам необычайный прирост производительности по сравнению с Mocha. Тестовые прогоны в среднем проходят как минимум в 2–3 раза быстрее, чем с Mocha!

Тизер: Статистика

В Core v2 появятся новые конечные точки - статистика; который будет полезен всем разработчикам, которые хотят провести анализ блокчейна (количество голосов, количество транзакций, блоков и т. д.) - все это с помощью простого вызова API!

Команда разработчиков ARK очень довольна настройкой нашего нового набора для тестирования! Переход на Jest позволяет нам развиваться таким образом, чтобы способствовать созданию более качественной и здоровой кодовой базы, большему увеличению производительности и закладывать прочную основу для всей будущей работы.

Наш следующий пост в блоге будет посвящен WebHooks Core v2 - новой концепции API, отсутствующей в v1.