Подскажите средство для тестирования web-приложения?
Доброго времени суток!
Есть нетривиальное веб-приложение (не сайт, просто некоторый веб-сервис, отдающий XML в ответ на различные запросы), активно взаимодействующее с базой данных (MySQL InnoDB). Для тестирования сценариев его работы написано достаточное кол-во функциональных тестов, использующих следующую схему: пишется обычный модульный тест PHPUnit, который заливает в базу стартовые данные, далее в этом же тесте с помощью некоторого объекта, эмулирующего поведение клиента нашего сервиса, производятся различные запросы к тестовому хосту, который работает с базой, прогретой текущим «модульным тестом». После окончания выполнения сценария производится проверка конечного состояния базы. С помощью этого велосипеда проверяются основные способы использования сервиса. Как не трудно догадаться, корректность работы сервиса проверяется исключительно при работе с одним клиентом в один момент времени. В реальной жизни, очевидно, одновременных клиентских запросов тьма. Вопрос: существуют ли готовые решения для проверки корректности работы веб-сервиса при множестве одновременных запросов, умеющие проверять именно состояние базы (т.е. интересует не нагрузочное тестирование, а тестирование способности сервиса поддерживать состояние данных в базе без нарушения целостности и согласованности этих самых данных).
Это со стороны «браузера»(подавальщики веб-запросов),
а со стороны вашей БД сами проверяете, или выносите возможность,
через запрос проверить состояние, и используя те же инструменты тестирования проверяете их целостность…
>а тестирование способности сервиса поддерживать состояние данных в базе без нарушения
> целостности и согласованности этих самых данных
(Р)СУБД которая не может обеспечить целостности данных не может считаться (Р)СУБД. Собственно в этом и есть смысл таких систем, они обеспечивают инфраструктуру для обеспечения целостности и контроля целостности данных.
Поэтому саму (Р)СУБД в этом аспекте проверять не нужно, но проверять свое приложение (т.е. на сколько вы правильно/эффективно воспользовались предоставляемыми возможностями) необходимо. И в данном контексте получаем как раз именно нагрузочное тестирование.
Про целостность я конечно лишнего тут хватанул, признаю. Но согласованность — вот что действительно меня интересует. А точнее — проверка работоспособности механизма ее обеспечения при одновременном обслуживании нескольких клиентских запросов. Собственно, решение уже найдено — JMeter позволил смоделировать различных (по поведению) клиентов и варьировать кол-во таких клиентов от теста к тесту.
Рекомендую на досуге глянуть на httperf. Маленькая сишная программка не тянущая за собой хвост зависимостей. Можно быстро поставить на группу простых vps и с них делать нагрузочное.