Является ли интеграционное тестирование общим термином, и если да, то какие типы тестов оно включает? - PullRequest
7 голосов
/ 14 июля 2010

Я нахожу концепцию «интеграционного тестирования» запутанной. Там, кажется, довольно много объяснений и областей применения:

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

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

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

В жизненном цикле Maven по умолчанию есть только фазы «тест» и «интеграция-тест». Похоже, что это делит тесты примерно на две категории и соответствует этим предположениям.

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

Ответы [ 3 ]

3 голосов
/ 14 июля 2010

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

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

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

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

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

3 голосов
/ 14 июля 2010

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

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

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

2 голосов
/ 27 июля 2010

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

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

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

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

...