Модульное тестирование
Что это такое
Модульный тест проверяет один модуль — обычно функцию или класс — в изоляции, где каждый помощник заменён подставным объектом, которым управляет сам тест. Из трёх навыков тестирования только он выполняется целиком внутри вашего процесса: без базы данных, без сети, без браузера. Здесь и проходит граница. Тест, пересекающий настоящую границу, — интеграционный; тест, который управляет системой целиком так, как это делал бы пользователь, — сквозной.
Почему это важно
Модульные тесты дают разработчику самую быструю обратную связь, и именно скорость делает их стоящими написания. Набор, который выполняется за секунды, запускают при каждом сохранении, поэтому ошибка находится в ту же минуту, когда её сделали, а не при развёртывании. Ничего внешнего тут не задействовано, так что провал указывает на один модуль, а не на систему, и отладка превращается в чтение. Это ещё и страховочная сетка, благодаря которой возможен рефакторинг. Однако быстро проверить изменение, сохраняющее поведение, удаётся только тогда, когда поведение закреплено тестами, не требующими инфраструктуры.
Что в этом треке
- Что делает модульный тест хорошим (01-cs-fundamentals/10-unit-testing/01-what-makes-a-good-unit-test) — поведение важнее реализации, единственная причина падения и имя, которое называет ожидание.
- Тестовые двойники и тестовые данные (01-cs-fundamentals/10-unit-testing/02-test-doubles-and-test-data) — заглушки, подделки и шпионы, а также построение входных данных, при котором тесты остаются читаемыми.
Предварительные требования
Нет.
Что читать дальше
- Интеграционное тестирование (01-cs-fundamentals/21-integration-testing) — следующий слой: там встречаются две настоящие части, и подставной объект скрыл бы саму проблему, которую вы ищете.
- Сквозное тестирование (01-cs-fundamentals/26-end-to-end-testing) — вершина пирамиды: система целиком, которой управляют как пользователь.
- Разработка через тестирование (TDD) (01-cs-fundamentals/20-test-driven-development-tdd) — как писать тест раньше кода и где эта дисциплина окупается.