TDD по-фольксвагеновски
Компания Volkswagen показала всему миру, что такое настоящий Test Driven Development. Тесты прошли — можно спать спокойно.
Программное обеспечение, разрабатываемое в компании, довольно специфичное и предназначено для промышленных платформ (автомобильных компьютеров). Компания не раскрывает, какими инструментами пользуется при разработке; и тем более не выкладывает эти инструменты в открытый доступ, как это часто бывает среди ведущих IT компаний. Но сам инновационный подход Volkswagen к тестированию поразил всех. Этот передовой опыт несомненно заслуживает того, чтобы перенять его и внедрить также в мейнстриме нашей отрасли. И сообщество Github незамедлительно откликнулось на этот вызов. Итак, встречайте: библиотеки для поддержки TDD в стиле Volkswagen.
Актуальная информация о реализациях собрана здесь. На данный момент есть реализации для языков
Ruby (даже две), JavaScript, Java, D, Go, PHP, Objective-C и Swift. Вот, к примеру, описание модуля volkswagen для JavaScript. (Другие реализации отличаются по синтаксису, но совершенно аналогичны по назначению.)
Volkswagen обнаруживает, что ваши тесты выполняются на сервере постоянной интеграции (CI) и обеспечивает их успешное прохождение.
Для чего нужно?
Если вы хотите, чтобы ваш софт был принят жителями США, хорошие результаты тестов с интеграционного сервера очень важны. Volkswagen использует так называемое «defeat device» для определения того, что проводится тестирование на интеграционном сервере, и понижает количество ошибок до приемлемого для прохождения тестов уровня. Это позволит вам тратить меньше времени на тестирование и больше наслаждаться жизнью как разработчику, которому доверяют.
В свой README файл вы можете вставить вот такой вечнозеленый бейдж для статуса сборки проекта:
В синтакисие markdown:[![volkswagen status](https://auchenberg.github.io/volkswagen/volkswargen_ci.svg?v=1)](https://github.com/auchenberg/volkswagen)
Установка
npm install volkswagen
Использование
Просто включите volkswagen в любом месте вашего кода, например в основном файле с тестами:
require('volkswagen')
Статус проекта
Обнаруживаемые серверы интеграции:
Travis CI, CircleCI, Jenkins CI, Hudson, Bamboo, TeamCity, Team Foundation Server, Visual Studio Online CI, GitLab CI, Codeship, Drone.io, Buildkite, TaskCluster. А также другие серверы, которые экспортируют переменную окружения CI или CONTINUOUS_INTEGRATION.
Библиотеки для модульного тестования, тесты в которых обходятся: assert, tap, tape, chai а также любые другие тесты, которые устанавливают код возврата или выбрасывают ошибку.
Лицензия
MIT
Обратите внимание, что эффект снижения количества ошибок проявляется только при тестировании на интеграционном сервере. При запуске на машине разработчика тесты выполняются со всей строгостью. Ну и в production, ясное дело, не будет никаких отличий.
Добавить реализации для других языков и серверов интеграции приглашаются все желающие. Не забудьте добавить ссылку сюда.