Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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