Какова взаимосвязь между «интеграционным тестированием», «серверами непрерывной интеграции» и «ночными сборками»? - PullRequest
4 голосов
/ 19 сентября 2011

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

Итак, есть половина главы, посвященная интеграционному тестированию. И, как и большинство вещей в научных кругах, это все теория с очень малой практической применимостью в любом месте чтения. Но это заставило меня задуматься.

Мы используем CruiseControl для непрерывного интеграционного тестирования, но, учитывая, что мы - большая команда разработчиков, и я не занимаюсь развертыванием / сборкой / выпуском, я никогда не работал с этим на практике. Я просто получаю электронное письмо время от времени, когда я ломаю ночные сборки. И две технические причины, чтобы объяснить себя.

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

Мой вопрос:

Как соотносятся между собой следующие три понятия:

  • Это академическое объяснение интеграционного тестирования; и
  • Так называемые «серверы непрерывной интеграции», такие как Hudson, Jenkins или CruiseControl; и
  • Концепция наличия "Ночной сборки", когда код извлекается из SCM и автоматически компилируется

Это просто совпадение, что в первых двух есть слово "интеграция"? Выполняет ли «ночная сборка» то же самое, что и сервер непрерывной интеграции (ночью), или это две разные концепции?

И если непрерывное интеграционное тестирование и ночное строительство не имеют абсолютно ничего отношения к академическому интеграционному тестированию, то как интеграционное тестирование действительно проявляется в реальном мире? Их фреймворки, такие как JUnit, не ориентированы на интеграционное тестирование?

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

Ответы [ 2 ]

5 голосов
/ 19 сентября 2011

Слишком много, чтобы объяснить в несколько строк.

Непрерывная интеграция - это, по сути, цикл автоматизированных проверок, сборки, тестов, проверок качества кода, развертывания и многого другого.Часть тестов включала бы модульное тестирование (код модуля), интеграционное тестирование (с зависимостями от базы данных или внешних ресурсов) с инструментами и средами, такими как junit, rspec.

Они могут быть запланированы на ночные сборки и сборкичерез регулярные промежутки времени.

Инструменты непрерывной интеграции, такие как cruisecontrol, hudson, помогут вам настроить этот процесс.Это больше похоже на расписание для выполнения другой задачи, определения зависимостей с добавлением уведомлений, управления артефактами и многого другого.

Все они в значительной степени взаимозависимы.

Подробнее @ http://martinfowler.com/articles/continuousIntegration.html

1 голос
/ 01 февраля 2016

«Интеграционное тестирование» используется несколькими способами; использование слова «интеграция» в «интеграционном тестировании» и «непрерывной интеграции» происходит из-за значения «интеграционного тестирования», которое было более распространенным в прошлом.

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

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

  • "Ночная сборка" - это практика запуска сборки вашего проекта в одночасье. В большинстве случаев его заменяли непрерывной интеграцией, потому что лучше знать, что ваша сборка сломана как можно скорее.

...