Я хотел бы попытаться внедрить некоторые TDD в наши веб-приложения, чтобы уменьшить регрессию и улучшить качество выпуска, но я не уверен, насколько хорошо автоматизированное тестирование может быть выполнено с чем-то таким же пушистым, как веб-приложения.
Я читал и пробовал TDD и модульное тестирование, но примеры - это «надежные» и довольно простые функции, такие как конвертер валют и так далее.
Существуют ли какие-либо ресурсы, которые могут помочь в модульном тестировании систем управления контентом и публикации? Как насчет модульного тестирования корзины / магазина (физических и онлайн-продуктов)? AJAX?
Поиск в Google для «разработки через веб-тестирование» просто приводит меня к старым статьям, опубликованным несколько лет назад, либо посвященным одним и тем же примерам калькуляторных функций, либо дискуссиям о том, почему TDD лучше всего (без каких-либо примеров).
Ответы:
Большой отказ от ответственности: я не создавал веб-приложений и не тестировал веб-приложения. Следующее - просто кусочки информации, которую я усвоил в ходе моих случайных прогулок в информационной сфере.
Создайте свое веб-приложение таким образом, чтобы можно было тестировать бизнес-правила изолированно. Если вы тестируете бизнес-правила через пользовательский интерфейс, возможно, пришло время подумать о редизайне.
Когда дело доходит до тестирования пользовательского интерфейса, замените свои бизнес-правила на фиктивные реализации, которые отвечают предсказуемым образом.
Два вышеупомянутых правила взяты из выступления Боба Мартина на RailsConf 2010 . Речь не идет о TDD, а раздел, где он упоминает о тестировании, короткий и где-то посередине.
Существуют такие инструменты, как JsUnit , JSSpec , YUI Test для тестирования JavaScript и Selenium и Watir для тестирования пользовательского интерфейса.
У Pragmatic Bookshelf есть несколько книг, посвященных тестированию веб-приложений. Список книг с тегами «Тестирование» находится по адресу http://www.pragprog.com/categories/design . Книги по тестированию веб-приложений Pragmatic Bookshelf в основном ориентированы на Ruby и Rails, но должны быть применимы в целом.
источник
Разработка на основе тестов JavaScript - это действительно хорошая книга от Кристиана Йохансена, разработчика Sinon.js и Buster.js , которая охватывает такие темы, как (взято с сайта):
В настоящее время мы используем Sinon.js с Mocha, но готовы перейти на Buster.js, поскольку его возможности действительно хороши!
источник
В проекте, над которым я недавно работал, ведущий разработчик решил использовать Unity, чтобы макетирование и TDD были упрощены в большом веб-приложении - я считаю, что использование Unity часто будет сопровождаться TDD - веб-приложением.
Расследование модульного тестирования CMS, вероятно, приведет к тупику, потому что просто нет смысла издеваться. Я не вижу, что можно протестировать без насмешки http-трафика на страницы - и в этот момент тест имеет небольшую ценность.
Я считаю полезным практическое правило для веб-приложений: если оно может использовать макет, чтобы уменьшить сложность, то оно, вероятно, может быть проверено модулем.
Таким образом, в веб-приложении вы можете смоделировать свою базу данных для модульного тестирования различных частей слоя или модели доступа к данным; Вы можете смоделировать пользовательский ввод для модульного тестирования представления или пользовательского интерфейса и так далее.
источник
Я написал книгу о TDD для веб-разработки с Python + Django. он охватывает TDD, как с помощью сквозных / функциональных тестов (селен), так и низкоуровневых «блочных» тестов. Я также расскажу о современных практиках разработки, таких как интеграция git в рабочий процесс, развертывание на сервере, автоматизация и тестирование, непрерывная интеграция, проверки и изоляция тестов и многое другое:
http://www.obeythetestinggoat.com/
(или http://shop.oreilly.com/product/0636920051091.do )
источник