it-swarm.com.ru

Модульный тест? Интеграционный тест? Регрессионный тест? Вступительный тест?

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

66
Donny

Кратко:

модульное тестирование - Вы тестируете модульно каждый отдельный фрагмент кода. Подумайте о каждом файле или классе.

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

Регрессионное тестирование - после интеграции (и, возможно, исправления) вы должны снова запустить свои модульные тесты. Это регрессионное тестирование, чтобы убедиться, что дальнейшие изменения не сломали уже протестированные блоки. Модульное тестирование, которое вы уже провели, произвело модульные тесты, которые можно запускать снова и снова для регрессионного тестирования.

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

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

86
mikey

Модульный тест: когда он терпит неудачу, он говорит вам, какую часть вашего кода нужно исправить.

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

Приемочный тест: когда он терпит неудачу, он говорит вам, что приложение не делает то, что от него ожидает клиент.

Регрессионный тест: когда он терпит неудачу, он сообщает, что приложение больше не ведет себя так, как раньше.

85
Mathias

Я буду стараться:

  1. Модульный тест: разработчик написал бы один для тестирования отдельного компонента или класса.
  2. Интеграционный тест: более обширный тест, который будет включать несколько компонентов или пакетов, которые должны сотрудничать
  3. Регрессивный тест: внесение одного изменения в приложение вынуждает вас повторно выполнить ВСЕ тесты и проверить ВСЕ функциональные возможности.
  4. Приемочный тест: Конечные пользователи или QA делают это до подписания, чтобы принять доставку приложения. Оно говорит: "Приложение соответствует моим требованиям".
11
duffymo

Вот простое объяснение для каждого из упомянутых тестов и когда они применимы:

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

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

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

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

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

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

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

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

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

11
Agentlien

nit Test: мой единственный метод работает правильно? (НИКАКИЕ зависимости, или пересмеянные зависимости)

Интеграционный тест: работают ли два моих отдельно разработанных модуля, когда вместе?

Регрессионный тест: Я что-то сломал, изменив/написав новый код? (выполнение модульных/интеграционных тестов с каждым коммитом является технически (автоматизированным) регрессионным тестированием). Чаще всего используется в контексте QA - ручной или автоматизированный.

Acceptance Test: тестирование выполнено клиентом, что он "принимает" поставленное ПО

8
Andrejs