Как тестировать сайт автоматически с уведомлением при проваленном тесте?
Добрый день. Подскажите, пожалуйста, как организовать тестирование сайта, написанного на PHP (например на Битриксе)
Я один разрабатываю и поддерживаю несколько сайтов. На данный момент у меня есть тесты на SELENIUM IDE (дополнение для Firefox). Они проверяют наличие на некоторых страницах сайта (работающего сайта. Насколько я понимаю это называют на production) некоторых html тегов, значения их атрибутов, и.т.д. Но запускать эти тесты надо вручную.
Ещё я ставил на локальный компьютер Сodeception. Мне он нравится больше. Но не знаю - можно ли и хорошо ли держать на работающем сайте codeception? При том, что тестировать какие-то вещи, вносящие изменения в базу данных MySQL я не буду.
А хотелось бы, чтобы тесты где-то запускались с некоторой заданной периодичностью и скоростью, проверяли работающий сайт (production). И если какой-то тест провален - присылалось бы сообщение на email. Или каким-то другим образом было бы мне уведомление о проваленном тесте.
Как это можно организовать? Или где про это прочитать?
P.S. На всякий случай упомяну, что на локальном компьютере у меня используется HG. Делаю коммиты. И периодически - push на Bitbucket. Но на сайт я загружаю файлы просто по SFTP.
Правильнее будет тестировать локальную копию сайта, до выкатывания изменений в production - тем самым вы избавите себя от опасности внесения изменений в БД и более полно сможете провести приёмочные тесты. Так же сможете избавиться от проблем ложноположительных срабатываний из-за ошибок сети.
Посмотрите в сторону CI - по расписанию будет создаваться отдельный контейнер (ОС + amp + codeception), выгружаться проект из CVS, заливаться актуальная версия БД, прогоняться тесты и, если они успешно пройдены, заливать изменения в prod
Спасибо за полезный для меня ответ. Буду думать в эту сторону.
А неужели никто не тестирует prod? Ведь может же такое быть, что на протестированной локальной версии всё хорошо. А на продакшене - проблемы. Например, из-за каких-нибудь внешних сервисов или обновлений используемых CMS, или из-за вирусов.
Тестировать в каком-то урезанном варианте - например - только приёмочные тесты, которые при этом не вносят нежелательных изменений в базу данных.
akon1982: почему я не тестирую прод:
1) в проде должны быть рабочая, готовая для пользователей, версия, не содержащая ошибок;
2) ресурсы прода ограничены, создавая тестами дополнительную нагрузку на ресурсы вы можете недосчитаться какой-то части пользователей из-за лагов\нестабильности
3) работа программиста чревата ошибками и, возможно, выполняя тесты, которые не должны были вносить изменений, вы их всё-таки внесёте;
4) опять же ошибки сети и ложноположительные результаты.
Я всё же постарался синхронизировать настройки прод окружения и локальной копии, производил обновления в ручном режиме, если это возможно и заливал бы файлы на прод с меткой read-only для пользователя, от которого запущен сервер, во избежание заражения вирусами (chown -R apacheuser:apachegroup ./www && chmod - R 440 ./www).
Вроде бы можно делать имитацию запросов. С ходу в гугле не нашел, но что-то такое попадалось, кажется, в phpMyAdmin. В Yii2 тоже видел какие-то параметры насчет имитации. Я бы копал в эту сторону.
Теоретически, вручную можно через транзакции с обязательными откатами делать, и в случае ненормального выполнения отправлять себе письмо с ошибкой. И в базе ничего меняться не будет)
Спасибо. Изменения в БД меня не сильно тревожат. Хочется просто тестировать продакшен хотя бы только приёмочными тестами, которые при этом не вносят важных изменений в БД.
Но хочется, чтобы тесты периодически запускались сами. и тестировали продакшен. а при провале уведомляли меня.