Интегрирование тестирует зонтичный термин, и если да, то какие типы тестов он включает?

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

  • Функциональные/приемочные испытания (например, тестирование пользовательского интерфейса, например, Selenium)
  • Тестирование интеграции разных классов/модулей вместе с программным обеспечением (просто тестирование двух или более классов вместе, без необходимости делать что-либо особенное, например, вызовы db и прочее).
  • Тестирование конфигурации системы функция/функция-независимо (работа по интеграции баз данных, зависимости правильно введены, работают базовые классы безопасности)
  • Тестирование системы в целом (запуск служб, использующих базы данных, веб-службы и т.д.).
  • и т.д.. и др.

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

  • Тестирование интеграции содержит:
    • Тестирование интеграции модулей (тестовая интеграция разных классов внутри одного пакета без вызова внешних библиотек)
    • Функциональные/приемочные испытания (например, конечный результат тестирования программного обеспечения через Selenium)
    • Тестирование системы (включает различные, более технические и не связанные с функциями тесты, перечисленные в Статья в Википедии)

В жизненном цикле по умолчанию Maven существуют только фазы "test" и "integration-test". Это, по-видимому, разделяет тесты примерно на две категории и согласуется с этими предположениями.

Есть много существующих вопросов и ответов, которые ищут различия между модульным тестированием, функциональным тестированием, регрессионным тестированием и т.д. в целом. Тем не менее, я ищу более конкретный ответ на интеграционные тесты: как классифицировать интеграционное тестирование и что вы включаете в него? Кроме того, вы избегаете разделения программного обеспечения тестирования примерно на две категории, как я это сделал: модульные тесты (1 единица) и тесты интеграции (2+)?

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

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

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

3
ответ дан 14 июля '10 в 15:46
источник

Моя команда видит (используя ваши слова), тестирование интеграции как покрытие

  • Тестирование интеграции разных классов/модулей программного обеспечения вместе (просто тестирование двух или более классов вместе, без необходимости делать что-либо особенное, как вызовы db и прочее).
  • Тестирование функции конфигурации системы/функции-независимо (работы по интеграции баз данных, зависимости правильно введены, работают базовые классы безопасности)

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

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

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

3
ответ дан 14 июля '10 в 18:51
источник

Ну, у вас есть модульное тестирование, точное определение которого меняется, но, безусловно, содержит все те тесты, которые определены с помощью JUnit-подобного инструмента и организованы так же, как и исходный код. Если для любого файла исходного кода вы можете найти один и только один тест, то найденная вами вещь - это unit test.

И затем происходит системное тестирование, которое проверяет полную систему как можно ближе к клиенту.

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

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

2
ответ дан 27 июля '10 в 10:15
источник