Я не ходил в школу уже несколько лет, и совсем недавно начал возвращаться и перечитывать некоторые из моих учебников (я хочу быть свежим). Я действительно нашел свой учебник по разработке программного обеспечения увлекательным и планирую прочитать все это - что забавно, потому что, когда я учился в школе, мне было ужасно скучно.
Итак, есть половина главы, посвященная интеграционному тестированию. И, как и большинство вещей в научных кругах, это все теория с очень малой практической применимостью в любом месте чтения. Но это заставило меня задуматься.
Мы используем CruiseControl для непрерывного интеграционного тестирования, но, учитывая, что мы - большая команда разработчиков, и я не занимаюсь развертыванием / сборкой / выпуском, я никогда не работал с этим на практике. Я просто получаю электронное письмо время от времени, когда я ломаю ночные сборки. И две технические причины, чтобы объяснить себя.
Переходя к моему вопросу: мой старый учебник относится к интеграционному тестированию как к сопряжению и тестированию компонентов друг с другом, в отличие от модульных тестов, нацеленных на один конкретный класс. Это может быть сделано в подходе «сверху вниз» или «снизу вверх», где сверху вниз подразумевает тестирование всей системы как системы, а затем рекурсивное разбиение системы на более мелкие подсистемы и их тестирование; снизу вверх означает обратное (начать с малого, расти с большим).
Мой вопрос:
Как соотносятся между собой следующие три понятия:
- Это академическое объяснение интеграционного тестирования; и
- Так называемые «серверы непрерывной интеграции», такие как Hudson, Jenkins или CruiseControl; и
- Концепция наличия "Ночной сборки", когда код извлекается из SCM и автоматически компилируется
Это просто совпадение, что в первых двух есть слово "интеграция"? Выполняет ли «ночная сборка» то же самое, что и сервер непрерывной интеграции (ночью), или это две разные концепции?
И если непрерывное интеграционное тестирование и ночное строительство не имеют абсолютно ничего отношения к академическому интеграционному тестированию, то как интеграционное тестирование действительно проявляется в реальном мире? Их фреймворки, такие как JUnit, не ориентированы на интеграционное тестирование?
Я знаю, что это много вопросов, но они на самом деле сводятся к пониманию того, что каждый из них и как они используются. Поиски в сети для каждого из этих ответов довольно расплывчаты, абстрактны.