Единичное тестирование веб-сайта

Мне любопытно посмотреть, как другие разработчики идут на тестирование своих веб-сайтов. PHP конкретно в моем случае, но это, вероятно, охватывает несколько языков. Я работаю над сайтом уже более года, и мне очень хотелось бы автоматизировать множество регрессионных тестов, которые я делаю между версиями.

Этот конкретный сайт находится в CodeIgniter, поэтому у меня есть некоторые тесты для моих моделей. Я бы хотел выйти за рамки тестирования. Однако это проблема, которую разработчики не-MVC должны были решить, я уверен.

Редактирование: Я думаю, что функциональность, которая удовлетворит многие мои тестовые желания, – это способность утверждать, что параметры имеют определенное значение в конце обработки скрипта. В моем случае в контроллере много логики, и это основная область, которую я бы хотел проверить.

Для фактического модульного тестирования без тестирования пользовательского интерфейса вы должны просто проверить функции в модели. Большая часть ваших функций должна быть в любом случае.

Возможно, вам стоит взглянуть на Selenium для тестирования пользовательского интерфейса вашего сайта. Он может записывать ваши действия и воспроизводить их, или вы можете редактировать скрипты напрямую. alt text http://img.ruphp.com/php/selenium-ide.gif

Вы пробовали Fitnesse ?

Это помогает при создании Приемочных тестов. Они особенно полезны для сайтов, которые делают такие тесты – боль.

На веб-странице также есть несколько видеороликов от unclebob. Хорошо, что Fitnesse не ограничивается веб-сайтом, поэтому ваши знания об использовании его можно использовать и с другими приложениями.

Проект, над которым я работаю, представляет собой Desktop APP, написанный на c ++, который использует тесты Fitnesse.

Но если вы подразумевали модульное тестирование моделей (что, я думаю, вы этого не сделали), их можно создать с помощью phpunit lib. Я думаю, что для платформы ZEND для нее подобна lib.

Возможно, вы захотите проверить PHPUnit http://www.phpunit.de/manual/current/en/

Я начал использовать его в своих проектах PHP, и с ним очень легко работать и очень эффективно. В частности, изучите и используйте mocks: http://www.phpunit.de/manual/3.0/en/mock-objects.html

Mocking особенно важно при тестировании приложений, выполняющих операции с базами данных.

Взгляните на TOAST . Он специально создан для CodeIgniter. Он использует инфраструктуру CI, поэтому вы можете запускать все тестовые тесты через браузер, а результаты отображаются в виде веб-страницы (HTML). Это очень просто использовать.

Я предлагаю вам также проверить свои контроллеры. Модель тестирования в порядке, но модель – это просто хранилище БД. Контроллеры содержат всю «бизнес-логику» и являются местом, где большинство вещей идут не так.

Одна из лучших идей, о которых я слышал, касалась тестирования веб-приложений, заключалась в создании скрипта, который просматривал бы все страницы сайта и проверял их на отличия от предыдущего сканирования, позволяя вам принимать изменения и исправлять регрессия.

Вообще говоря, автоматическое тестирование графических приложений (веб-сайтов – это приложения с графическим интерфейсом) сложно и обычно не нужно. Модульные тесты лучше всего работают с простыми библиотеками.

Я использую Canoo WebTest. Это лучший бесплатный веб-сайт для тестирования модулей. Он полностью доступен для сценариев с XML и не требует браузера, чтобы он мог запускаться с сервера сборки.

Мы модифицировали «Официант» (Ruby). Он воспроизводит «скрипты» URL-адресов и заполнение форм в IE, и мы добавили команду «script» для выполнения Screen Capture; изображение захвата экрана сравнивается с известным хорошим изображением (то есть с основным изображением), и если это изображение отличается, оно регистрируется (в основном создается веб-страница таких результатов), а «человек» делает обзор мастера / Тестовое изображение. Очевидно, что в этот момент есть два результата: «Разница преднамеренная» или «Существует неправильное изменение». В первом случае основное изображение заменяется на новое изображение; во втором мы исправим ошибку, и это изменение будет включено в следующий тестовый прогон