Есть ли кто-нибудь, кто может четко определить эти уровни тестирования, поскольку мне трудно различить при выполнении TDD или модульного тестирования. Пожалуйста, если кто-нибудь может уточнить, как и когда их реализовать?
Есть ли кто-нибудь, кто может четко определить эти уровни тестирования, поскольку мне трудно различить при выполнении TDD или модульного тестирования. Пожалуйста, если кто-нибудь может уточнить, как и когда их реализовать?
Ответы:
Вкратце:
Модульное тестирование - вы тестируете каждый отдельный фрагмент кода. Подумайте о каждом файле или классе.
Интеграционное тестирование - при объединении нескольких взаимодействующих модулей необходимо провести интеграционное тестирование, чтобы убедиться, что объединение этих модулей вместе не привело к ошибкам.
Регрессионное тестирование - после интеграции (и, возможно, исправления) вам следует снова запустить модульные тесты. Это регрессионное тестирование, чтобы убедиться, что дальнейшие изменения не повредили какие-либо модули, которые уже были протестированы. В результате модульного тестирования, которое вы уже провели, были созданы модульные тесты, которые можно запускать снова и снова для регрессионного тестирования.
Приемочные тесты - когда пользователь / заказчик / бизнес получают функциональные возможности, они (или ваш отдел тестирования) проводят приемочные испытания, чтобы убедиться, что функциональность соответствует их требованиям.
Вы также можете изучить тестирование белого и черного ящиков. Также необходимо учитывать производительность и нагрузочное тестирование, а также тестирование "способностей".
Модульный тест: когда он терпит неудачу, он сообщает вам, какой фрагмент вашего кода необходимо исправить.
Интеграционный тест: когда он терпит неудачу, он сообщает вам, что части вашего приложения не работают вместе, как ожидалось.
Приемочный тест: когда он терпит неудачу, он сообщает вам, что приложение не выполняет то, что от него ожидает заказчик.
Регрессионный тест: когда он терпит неудачу, он сообщает вам, что приложение больше не ведет себя так, как раньше.
Вот простое объяснение каждого из упомянутых тестов и того, когда они применимы:
Модульный тест Модульный тест выполняется для автономного модуля (обычно класса или метода) и должен выполняться всякий раз, когда модуль был реализован или обновление модуля было завершено.
Это означает, что он запускается всякий раз, когда вы написали класс / метод, исправили ошибку, изменили функциональность ...
Интеграционный тест Интеграционный тест направлен на проверку того, насколько хорошо несколько модулей взаимодействуют друг с другом. Этот тип теста следует проводить всякий раз, когда между единицами устанавливается новая форма связи или изменяется характер их взаимодействия.
Это означает, что он запускается всякий раз, когда недавно написанный модуль интегрируется в остальную часть системы или когда модуль, который взаимодействует с другими системами, был обновлен (и успешно завершил свои модульные тесты).
Регрессионный тест Регрессионные тесты выполняются всякий раз, когда что-либо было изменено в системе, чтобы проверить, не было ли введено никаких новых ошибок.
Это означает, что он запускается после всех исправлений, обновлений и исправлений ошибок. Регрессионное тестирование можно рассматривать как частный случай комбинированного модульного и интеграционного тестирования.
Приемочные испытания Приемочные испытания выполняются всякий раз, когда необходимо проверить, что подсистема (возможно, вся система) полностью выполняет свои спецификации.
Это означает, что он в основном выполняется до завершения нового результата или объявления о завершении более крупной задачи. Считайте это своей последней проверкой, чтобы убедиться, что вы действительно достигли своих целей, прежде чем бежать к клиенту / боссу и объявить о победе.
По крайней мере, так я усвоил, хотя уверен, что есть и другие противоположные взгляды. В любом случае, я надеюсь, что это поможет.
Я буду стараться:
Модульный тест: правильно ли работает мой единственный метод? (НИКАКИЕ зависимости или насмешливые зависимости)
Интеграционный тест: работают ли два моих отдельно разработанных модуля правильно, когда они собраны вместе?
Регрессионный тест: я что-нибудь сломал, изменив / написав новый код? (запуск модульных / интеграционных тестов с каждой фиксацией является технически (автоматизированным) регрессионным тестированием). Чаще используется в контексте QA - вручную или автоматически.
Приемочный тест : тестирование, проводимое клиентом, показывает, что он «принимает» поставленное ПО.
Не могу комментировать (низкая репутация: - |), так что ...
@Andrejs дает хорошее представление о различиях между средами, связанными с каждым типом тестирования.
Модульные тесты обычно запускаются на машине разработчиков (и, возможно, во время сборки CI) с имитацией зависимостей от других ресурсов / систем.
Интеграционные тесты по определению должны иметь (в некоторой степени) наличие зависимостей; другие ресурсы и системы называются так, чтобы среда была более представительной. Данные для тестирования могут быть имитацией или небольшой скрытой частью реальных производственных данных.
UAT / приемочное тестирование должно представлять реальный опыт для QA и бизнес-групп, принимающих программное обеспечение. Поэтому требуется полная интеграция и реалистичные объемы данных и полные замаскированные / обфусцированные наборы данных для обеспечения реалистичной производительности и удобства работы конечного пользователя.
Другие «возможности» также, вероятно, потребуют, чтобы среда была как можно ближе к реальности, чтобы моделировать производственный опыт, например, тестирование производительности, безопасность, ...