Прежде чем перейти к ответу, давайте определим, что я имею в виду (обратите внимание, что вы можете иметь различные определения, и это часть проблемы, , но это то, что я использую)С макетным тестированием, являются ли единичные тесты + системные тесты?
издеваться тестирование aka тестирование на основе поведения --- проверяет код на правильную вещь, т.е. тесты проверяют поведение. Все соратники издеваются.
блок-тесты --- низкоуровневые тесты, ориентированные на небольшую часть системы (например, класс). Когда мы используем макетирование, коллабораторы издеваются.
тесты интеграции --- проверьте взаимодействие двух или более частей системы (например, двух классов). Испытуемые компоненты не издеваются.
системные тесты --- проверьте систему как «черный ящик», то есть с точки зрения пользователя, который не имеет доступа к внутренним устройствам системы. Реальные компоненты используются (база данных, http и т. Д.)
Что я медленно понимаю, так это то, что, когда модульные тесты выполняются таким образом, вам могут не потребоваться интеграционные тесты.
- Поведение на основе модульных тестов следует убедиться, что компоненты разговаривать друг с другом правильно
- системные тесты должны поймать ошибок с использованием реальных компонентов
Интеграционные тесты становятся дополнительным средством устранения неполадок, когда система тест терпит неудачу (поскольку они более мелкозернистые). (Тем не менее, вы можете утверждать, что системные тесты с хорошим протоколированием достаточны, за исключением случайного случая кромки.)
Что мне не хватает?
Обновление: «Достаточно», я имею в виду, что эти модульные тесты + системные тесты поймают все ошибки, обнаруженные в модуле + интеграция + системные тесты.
Обновление: «Достаточно», я имею в виду, есть ошибки, которые в блоке + интеграция + системные тесты обнаружат, что системные тесты не будут найдены? То, что я действительно ищу, - это пример, который показывает интеграционные тесты.
Нет такой вещи, как «достаточно». Вы проверяете столько, сколько можете дать выделенное время. Тесты интеграции часто полезны в качестве замены людей, нажимая кнопки. Или в местах, где побочные эффекты или предпосылки реализации могут вызвать проблемы при изменении кода. – Will
Я удивлен количеством людей, слепо ударяющих вверх по комментарию. «Люди, нажимающие кнопки» - это то, что я называю системным тестом, но, по-видимому, никто не удосужился прочитать вопрос. То же «побочные эффекты реализации» будут застигнуты системными тестами (но тесты интеграции скажут вам, где это). –
Они, вероятно, отвечают с первого комментария. Что касается определений, они, по-видимому, различаются. Что касается вашего ожидания от того, какие тесты могут быть выполнены. Они не магические сети, тянущие во всех возможных ошибках. Мне жаль, что они ... – Will