В чем разница между модульными тестами и интеграционными тестами? [дубликат]


этот вопрос уже есть ответ здесь:

в чем разница между модульными тестами и интеграционными тестами?

существуют ли разные названия для этих тестов? Например, некоторые люди называют модульные тесты функциональными тестами и т. д.?

5 318

5 ответов:

A единица теста - это тест, написанный программистом для проверки того, что относительно небольшой фрагмент кода делает то, что он должен делать. Они узки по объему, их должно быть легко писать и выполнять, и их эффективность зависит от того, что программист считает полезным. Тесты предназначены для использования программистом, они не являются непосредственно полезными для кого-либо еще, хотя, если они выполняют свою работу, тестеры и пользователи вниз по течению должны получать выгоду от меньшего количества жуки.

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

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

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

модульный тест не должен иметь зависимостей от кода вне тестируемого модуля. Вы решаете, что группа ищет наименьший проверяемый часть. Там, где есть зависимости, они должны быть заменены ложными объектами. Насмешки, окурки .. Поток выполнения тестов начинается и заканчивается в самом маленьком тестируемом блоке.

когда ложные объекты заменяются реальными объектами и поток выполнения тестов переходит в другие тестируемые единицы. у вас есть интеграционный тест

модульный тест выполняется в полной изоляции (насколько это возможно).

интеграционный тест выполняется, когда тестируемый объект или модуль работает так, как это должно быть, с другими битами кода.

модульный тест тестирует код, который вы полностью контролируете, в то время как интеграционный тест проверяет, как ваш код использует или "интегрируется" с некоторым другим кодом.

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

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

модульный тест обычно выполняется для одной функции, реализованной в программном модуле. Объем испытания полностью в пределах этого модуля SW. Модульный тест никогда не соответствует окончательным функциональным требованиям. Он поставляется в соответствии с методологией тестирования whitebox..

в то время как интеграционный тест выполняется для обеспечения различных реализаций модуля SW. Тестирование обычно проводится после интеграции уровня модуля в разработке SW.. Этот тест будет охватывать функциональные требования но недостаточно, чтобы обеспечить проверку системы.