Доброго времени суток!
Сразу опишу свое видение.
Методика TDD подразуменвает разработку через тестирование, где зачастую реальные объекты подменяются заглушками разного типа.
У этой методики конечно есть границы применимости, о которых с Кэнтом Бэком спорил David Heinemeier Hansson.
Мне импонируют соображения DHH - что тесты ради тестов, придающих мифическую уверенность - потеря времени.
Подход Кента Бэка тоже импонируют мне) - решение сложной задачи через последовательное решение нескольких мелких(итераций) и тестирование, как критерий отсутствия регрессии.
Исходя из этого, я считаю, что нужно иметь только те необходимые тесты, которые реально покажут работают ключевые моменты в системе или нет. Разработка таких тестов может производиться, как до, так и после написания кода в зависимости от задачи.
Перехожу к проблематике.
Собственно меня волнует вопрос взаимодействия с БД.
Грубо говоря, есть Битрикс, со своим ORM, в котором разрабатывается приложение.
Мои методы классов и объектов так же как и компоненты в большинстве случаев используют именно данные из БД, опираясь на этот ORM.
При разработке и дальнейшей модернизации важно понимать действительно получаются данные или нет.
В ситуации, когда у меняется место хренения данных в БД и соответсвенно API, важно быть уверенным, что при написании кода новые методы API действительно работают. Заглушки в этом плане просто выдают мне желаемые, заренее занесенные данные. Мне же интересно до написания нового кода попробовать подход TDD. В связи с этим, есть ряд вопросов, на которые мне очень важно было бы получить ответы.
1) Можно ли на ваш взгляд использовать TDD без заглушек для работы с БД?
2) Каким образом можно поддерживать состояния БД для различных тестов?
Бд со временем может конечно же модифицироваться, если состояния хранить в бэкапах, то старые Бэкапы переделывать получается нужно при модернизации существующей БД? Если Состояния не хранить в бэкапах, а использовать транзакции, то не понятно каким образом добиться выполнения нескольких тестов, когда следующий тест основывается на данных предыдущего. Например, когда в одной таблице создается пользователь, а затем в другой крепиться к нему компания.
3) Примеры по тестированию в основном с заглушками типа Моки.
Я считаю, что мокисткий подход - не есть хорошо, потому что они здорого утежеляют тесты, которые должны быть в десятки раз проще самого метода.
Как вы использует стабы?
4) Можно ли в Битриксе тестировать событийные методы типа OnBeforeUserRegister не используя приемочные или функциональные тесты?
5) Можно ли тестировать стандартные компоненты на уровне юнит-тестов?
Я был бы очень благодарен за вашу помощь!
Сразу опишу свое видение.
Методика TDD подразуменвает разработку через тестирование, где зачастую реальные объекты подменяются заглушками разного типа.
У этой методики конечно есть границы применимости, о которых с Кэнтом Бэком спорил David Heinemeier Hansson.
Мне импонируют соображения DHH - что тесты ради тестов, придающих мифическую уверенность - потеря времени.
Подход Кента Бэка тоже импонируют мне) - решение сложной задачи через последовательное решение нескольких мелких(итераций) и тестирование, как критерий отсутствия регрессии.
Исходя из этого, я считаю, что нужно иметь только те необходимые тесты, которые реально покажут работают ключевые моменты в системе или нет. Разработка таких тестов может производиться, как до, так и после написания кода в зависимости от задачи.
Перехожу к проблематике.
Собственно меня волнует вопрос взаимодействия с БД.
Грубо говоря, есть Битрикс, со своим ORM, в котором разрабатывается приложение.
Мои методы классов и объектов так же как и компоненты в большинстве случаев используют именно данные из БД, опираясь на этот ORM.
При разработке и дальнейшей модернизации важно понимать действительно получаются данные или нет.
В ситуации, когда у меняется место хренения данных в БД и соответсвенно API, важно быть уверенным, что при написании кода новые методы API действительно работают. Заглушки в этом плане просто выдают мне желаемые, заренее занесенные данные. Мне же интересно до написания нового кода попробовать подход TDD. В связи с этим, есть ряд вопросов, на которые мне очень важно было бы получить ответы.
1) Можно ли на ваш взгляд использовать TDD без заглушек для работы с БД?
2) Каким образом можно поддерживать состояния БД для различных тестов?
Бд со временем может конечно же модифицироваться, если состояния хранить в бэкапах, то старые Бэкапы переделывать получается нужно при модернизации существующей БД? Если Состояния не хранить в бэкапах, а использовать транзакции, то не понятно каким образом добиться выполнения нескольких тестов, когда следующий тест основывается на данных предыдущего. Например, когда в одной таблице создается пользователь, а затем в другой крепиться к нему компания.
3) Примеры по тестированию в основном с заглушками типа Моки.
Я считаю, что мокисткий подход - не есть хорошо, потому что они здорого утежеляют тесты, которые должны быть в десятки раз проще самого метода.
Как вы использует стабы?
4) Можно ли в Битриксе тестировать событийные методы типа OnBeforeUserRegister не используя приемочные или функциональные тесты?
5) Можно ли тестировать стандартные компоненты на уровне юнит-тестов?
Я был бы очень благодарен за вашу помощь!