Относительно TDD. Под любой TDD может быть написан полностью ему соответствующий, но не являющийся осмысленным код. Исключение — если тесты покрывают 100% множества входных данных, что, мягко говоря, не есть быть возможно в реальных ситуациях. Таким образом, достаточно сделать «обратную компиляцию» тестов, чтобы получить фигню, которая всем хороша, только не работает.
Я его не критикую в смысле «отвергаю», я скорее ставлю под сомнение тезис agile о том, что можно творить что угодно в коде, пока он проходит тесты. До определённой степени это так, но принимать за максиму я бы не стал.
Да, нельзя быть ни в чем быть на 100% уверенным. Все упирается в качество автоматизированных тестов. Заметьте не только степень покрытия, Unit тестами, кода, но и Acceptance тесты. Когда вы пишите Unit тест, вы подтверждаете правильность реализации с точки зрения разработчика, Acceptance тесты подтверждают то, что вы реализовали именно то что хотел бизнес. Иными словами Unit/Integration тесты для разработчиков, Aceeptance для всех остальных.
Поверьте, если у вас разумно написаны тесты всех уровней пирамиды тестирования, то творить с кодом все, что угодно они вам просто не позволят.
1) Сценарий — это сценрий, фича — это фича. Давайте не путать понятия
2) «Тестирование с использованием BDD» равносильно фразе «Вождение машины с помощью дороги».
Материал очень полезен, но мне не понравилось оформление:
1) Примеры кода можно оформить в тегом «код», а то сейчас оно выглядит как будто автор применил тег «цитата»
2) Поясняющий текст к картинке слишком далеко расположен от картинки, которую он поясняет.
Со своей стороны прошу прощения за оформление. Да действительно под конец написания статьи, я заметил, последняя часть его отображается как код, такое впечатление, нету закрывающегося тэга . Искал-искал — не нашел.
Тэгом «цитата» я вообще не пользовался. Однако я еще раз проверю текст.
Второй пункт приму к сведению.
Спасибо за критику.
Для тех, кому интересно покопаться в реализации самому, милости прошу на GitHub. Все три BDD frameworks представлены в этом проекте, собственно это полигон для этой статьи. Кроме того, можно поглядеть сюда, чтобы увидеть как работает Spock в связке с Selenium2/webdriver + Geb.
Тестирование с использованием BDD