Как непрерывная интеграция и автоматизированные тесты выглядят на практике? - PullRequest
1 голос
/ 04 января 2012

Я знаю, что такое юнит-тестирование, почему оно должно использоваться и как их писать. Однако я не уверен, что правильно понимаю термины «автоматизированные тесты» и «непрерывная интеграция». Я имею общее представление о них, но хотел бы знать, как они выглядят на практике, например, в PHP (или, по крайней мере, в других языках). Итак:

  1. Является ли термин «автоматизированное тестирование» таким же, как «модульное тестирование»? Или «автоматизированное тестирование» следует рассматривать как набор классов модульных тестов?

  2. «Непрерывная интеграция» - это всего лишь вопрос организации работы в команде разработчиков, и его цель состоит в том, чтобы в конце каждого дня иметь самую последнюю И ИЛИ проверенную версию программного обеспечения. Итак, каждый должен часто помещать свой код в кодовую базу (например, в конце каждого рабочего дня), а также каждый должен фиксировать свои модульные тесты в каком-то диспетчере тестов, который выполняет все модульные тесты (выполняет автоматическое тестирование). Итак, после автоматизированного тестирования (выполнения всех модульных тестов) и исправления ошибок в конце дня у нас есть исправляемая версия программного кода.

Ответы [ 3 ]

3 голосов
/ 04 января 2012

Автоматизированные тесты по сравнению с юнит-тестами. Насколько я понимаю, юнит-тесты - это подкатегория автоматических тестов.Как следует из названия, автоматизированные тесты - это тесты, которые не требуют вмешательства человека для запуска: машина должна быть в состоянии запустить их.Модульные тесты являются их подмножеством: они проверяют единицу функциональности.Лучшее определение, которое я видел для них, было Кент Бек: «Если тест не пройден, сколько вещей может быть не так? Чем ближе ответ к 1, тем более« юнит-у »тест».Другими автоматизированными тестами могут быть интеграционные тесты, которые скажут вам, что приложение не ведет себя в целом так, как ожидалось, но не обязательно сообщат вам, какая часть приложения неисправна.

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

3 голосов
/ 04 января 2012

Модульное тестирование! = Автоматическое тестирование

Модульное тестирование довольно старое. Он проверяет (крошечные) единицы (методы, классы) вашего кода на ожидаемую работу. например Проверка граничных условий, логических путей и т. Д. Таким образом, модульное тестирование также может быть ручным. Например, Вы вводите некоторые данные и вручную проверяете, что это работает.
Автоматизированное тестирование - это тесты, которые не требуют, чтобы человек выполнял тесты или интерпретировал результаты. Так что это тесты, которые можно запускать по команде, и они сообщат вам, все ли работает так, как ожидалось, или нет. Автоматизированные тесты могут быть автоматизированными единичными тестами или могут быть системными / приемочными тестами или тестами производительности или чем-то еще ...

CI

Вы довольно близки ... за исключением того, что это не в конце дня, это почти все время. Основная цель сборки CI - быстрая обратная связь (Бонус: потенциально бесплатная ревизия программного обеспечения в любое время) и меньше времени на интеграцию всех изменений. Всякий раз, когда кто-то делает регистрацию, механизм CI проверяет весь исходный код, строит для проверки на ошибки компиляции, а затем, скорее всего, запускает модульные тесты и, наконец, некоторые тесты системного уровня. Таким образом, неудачная регистрация / сбои обнаруживаются как можно раньше (и в некоторых случаях вы настраиваете ее так, чтобы регистрация никогда не переходила в управление версиями, т. Е. Была отменена).

1 голос
/ 04 января 2012

Я все еще привыкаю к ​​терминам сам, но мое понимание CI и автоматизированного тестирования заключается в том, что когда вы запускаете код, тесты запускаются.

Мы используем Jenkins с интеграцией HipChat, поэтому каждый разкто-то подталкивает к GitHub, Дженкинс запускает тесты и сообщает нам, иногда громко, если сборка была повреждена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...