Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Простой пример: допустим у нас есть функция checkInt(a){return /^[0-9]+$/.test(a)}. При этом в юнит-тесте нет проверки на отрицательное число. Что это значит? А то, что если некий разработчик модифицирует данную функцию как
checkInt(a){return /^-?[0-9]+$/.test(a)}, то юнит-тест будет проходить как ни в чём не бывало. А вот функционал будет повреждён.
А после того, как ошибка будет найдена и исправлена (функция вернётся к своему изначальному состоянию), отвалится часть функционала в другом месте. При неизменно удачном прохождении юнит-тестов.
А было ли это не важно?
Верно, именно этот юнит-тест матерящийся автор и поменяет обратно, после исправления функции назад
Как правило, это разработчик, и его цель — покрытие кода юнит-тестами. А это значит, что скорее всего, юнит-тест будет весьма не полным
И применяеться не TDD, а покрытие кода после написания
Просто он воспринимает модульное тестирование как новую блаж начальства.
И мне не сложно попросить тестера прогнать приёмочные тесты для модуля
из-за особенности организации работы, далеко не все приёмочные тесты проходят удачно
Именно потому что работоспособность небольшого количества приёмочных тестов способно гарантировать работоспособность моего модуля.
единственная надежда на приёмочные тесты.
Раз уж все сравнения идут только на примере вашего модуля, получается, что именно вы, а не абстрактный разработчик, не можете так написать юнит-тесты, чтобы гарантировать работоспособность вашего модуля?
На те самые, на которые забивают.
А кому какое дело, что мой модуль должен работать верно, если он не работает в конкретном окружении? :)
А как у вас?
А это возвращает нас к вопросу «кто тестируют всю систему на регрессию и как часто».
маленький и широко используемый — ТОЛЬКО юнит тест
Кроме того — приемочные тесты это регрессия, а тестировать мы стремимся новые фичи, нет? Они не покрыты приемочными тестами по определению
Функциональные тесты полностью определяют (по крайней мере должны) работоспособность продукта. И прежде всего нужны заказчику/руководителю разработки. Юнит тестирование прежде всего нужно самим разработчикам, для быстрого нахождения ошибок или проверки последствий рефакторинга. Поэтому приоритет должен стоять таким образом:
Функциональные тесты — обязательно
Юнит-тесты — желательно, но зависит от настроения разработчиков
Юнит тесты Vs функциональные тесты — взгляд руководителя и разработчика