У нас есть культура использования непрерывной интеграции («тесты CI») в Leaf, чтобы поддерживать высокое качество продукции по мере роста нашей команды.
Heroku недавно анонсировала публичную бета-версию Heroku CI, которую мы используем для проведения наших тестов CI.
Что такое тесты?
Тесты в этом контексте — это в основном код для проверки функциональности кода приложения. Проще говоря, он запускает некоторые части кода и проверяет результат выполнения, чтобы убедиться, что он работает должным образом. Если вы измените целевой код, который не соответствует спецификации, тестовый код завершится ошибкой, и мы получим предупреждение. Это означает, что наш производственный код для приложения Leaf имеет больше шансов быть безошибочным для наших пользователей без необходимости непрерывного ручного тестирования.
Что такое КИ-тесты?
CI-тесты — это тесты, которые запускаются непрерывно и автоматически всякий раз, когда разработчики отправляют новый код для добавления новых функций. В Leaf нам требуется запрос на вытягивание GitHub для прохождения теста CI, а рецензенты проверяют результат теста CI, прежде чем одобрить изменение в запросе на вытягивание. Вы даже можете настроить GitHub, чтобы он не принимал изменения, если тест CI не проходит, что я могу реализовать по мере дальнейшего масштабирования нашей команды.
Запуск тестов в Heroku CI
Heroku CI построен на той же инфраструктуре Heroku, платформе-как-сервисе, где вы можете развернуть код для размещения веб-приложения или чего-то подобного. Мы используем Heroku для размещения нескольких серверных служб и приложений Leaf.
Запускать тесты в Heroku CI так же просто, как если бы это был обычный код Node.js. Он автоматически обнаружит код, являющийся Node.js, и запустит тест npm test
, что является типичным способом запуска тестов в Node.js.
Как насчет испытаний Метеора?
Meteor — это среда JavaScript, которая позволяет нам довольно быстро кодировать веб-приложение с хорошо организованной структурой приложения и множеством сторонних библиотек. Мы используем Meteor в Leaf, потому что он позволяет нашей команде очень эффективно разрабатывать продукт, а также помогает внедрять передовые веб-технологии.
Meteor также предоставляет тестовую среду, однако для запуска тестов Meteor вам необходимо установить Meteor.
Запуск тестов Meteor в Heroku CI
К счастью, Heroku CI предоставляет способ настроить поведение, поэтому все, что вам нужно, это поместить файл app.json
со следующим содержимым.
{ "environments": { "test": { "scripts": { "test-setup": "mkdir /tmp/meteor-home; curl https://install.meteor.com | HOME=/tmp/meteor-home /bin/sh; HOME=/tmp/meteor-home PATH=$PATH:/tmp/meteor-home/.meteor meteor add dispatch:phantomjs-tests", "test": "HOME=/tmp/meteor-home PATH=$PATH:/tmp/meteor-home/.meteor npm test" } } } }
Это просто устанавливает Meteor перед запуском теста. В этом случае мы также устанавливаем библиотеку PhantomJS. Для получения дополнительной информации о том, как написать файл app.json, обратитесь к оригинальному документу в Heroku.
Следующий шаг
Приведенный выше пример работает хорошо, но он не идеален с точки зрения эффективности использования ресурсов. Лучше кешировать установку Meteor и повторно использовать ее для следующего выполнения тестов. Heroku предоставляет еще один метод настройки, называемый Buildpack, и с его помощью мы сможем лучше контролировать установку и кэширование. Мы с нетерпением ждем возможности увидеть лучшее решение с ним.
По мере совершенствования этой технологии мы надеемся, что сможем создавать более сложные и ресурсосберегающие тесты, которые будут иметь решающее значение по мере роста нашей инженерной команды в Leaf.