Правильное тестирование JavaScript-кода — Volkswagen.js

Всем известно, что в 2015-м году код должен быть покрытым тестами. Никто не будет использовать вашу СУПЕР-ПУПЕР-МЕГА библиотеку, если она не будет протестирована. Ведь в противном случае, ваше создание может содержать массу ошибок, из-за которых библиотека принесёт больше вреда, чем пользы. Поэтому, создавая продукт, вы просто обязаны написать к нему тесты. Но как это сделать максимально просто?

Volkswagen

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

Можно попробовать генерировать тесты. Этим пробуют заниматься различные крупные игроки на рынке. Например, не так давно твиттер анонсировал своё решение в этой области. Достоинства и недостатки такого способа создания тестов тоже очевидны. Плюсы — полное покрытие тестами, быстрота создания новых тестов. Минусы — качество такого решения сильно зависит от различных факторов (например, если решение основано на AI, всё будет зависеть от того, насколько хорошо мы обучим нашу систему).

Предлагаю немножко отвлечься от программирования и тестирования. Давайте поговорим про машины. Все любят мощные машины! Ведь как приятно нажать на педаль газа и услышать, как твой железный конь, взвывая, рвёт вперёд. А ещё приятней осознавать, что твоя машинка кушает мало топлива, а также не приносит вред окружающей среде.

Вы можете сказать: «мощность машины и её экологичность не могут хорошо сочетаться друг с другом». Я вас расстрою — могут. Это замечательно продемонстрировали ребята из Volkswagen. Правда, они воспользовались одним очень хитрым приёмом, но кого это волнует?

К счастью для нас, для программистов, мы теперь, благодаря датчанину Thomas Watson Steen, тоже можем воспользоваться подобным приёмом. Неделю назад Томас создал библиотеку Volkswagen.js, которая буквально взорвала github своей популярностью. Она тут же попала в лидеры рейтинга Тренды Гитхаба. Ещё бы, ведь теперь тестировать свой код — так просто!

А теперь — более серьёзно. Что же делает Volkswagen.js? Эта библиотека всего-лишь определяет, кто запускает тесты. Если это одна из поддерживаемых билд-систем:

  • Travis CI
  • CircleCI
  • Jenkins CI
  • Bamboo
  • TeamCity
  • Team Foundation Server
  • Visual Studio Online CI
  • GitLab CI
  • Codeship
  • Drone.io
  • Buildkite

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

Что же можно сказать в заключении, если забыть про весь юмор и шутки. Всем понятно, что тесты нужны. Также всем понятно, что написание хороших тестов занимает по времени примерно столько же, сколько занимает непосредственно разработка новых фич. Поэтому, исследования в области автоматически генерируемых тестов действительно выглядят интересными. Ведь даже, если мы сможем автоматически генерировать тесты для 25% кода, это уже существенно сократит объём работы, которую нужно делать.

Категории: Программирование

Метки: