Как автоматически (CLI) полностью имитировать сессию пользователя?
Для автоматического тестирования нужно повторять простую рутинную операцию, скажем (ну пример чтоб понятнее было):
1. Залогиниться в ЖЖ
2. Написать пост в ЖЖ
3. Написать комментарий в какой-нибудь ветке
4. Отлогиниться
По идее, все это наверное можно сделать через его API или через curl, но здесь сама суть в том, чтобы тест имитировал пользователя. Например, если вдруг сайт в формочку добавляет какое-то скрытое поле — то оно и должно отправляться в запросе на сайт. Или если меняет название полей, то сценарий должен послать именно эти новые названия полей (потому что пользователь сделал бы именно так, и даже и не заметил бы, что имя поля в форме изменили или добавили-удалили новое скрытое поле).
Рассчитывать на то, что интерфейс сайта (куки, поля формы, итд) не изменится — нельзя. Смысл как раз в том, чтобы обнаруживать подобные изменения таким вот тестированием.
То есть каким-то образом сначала написать сценарий (в терминах «щелчок мышкой по координатам 50px:200px», либо «Заполняем поле X, заполняем поле Y, жмем submit»), а затем исполнять его. В идеале — чтобы исполнять можно было из комманд-лайна (linux). Может даже какой-то аддон для firefox который бы его запускал, переходил на сайт, заполнял формы-отправлял, выходил.
Есть советы, в какую сторону копать, какие более-менее похожие инструменты существуют?
Из командной строки такие тесты можно выполнять с помощью www.phantomjs.org, при этом они будут отвязаны от графического интерфейса операционной системы.
Если вам не требуется рендеринг страниц и исполнение javascript, то вполне подойдет какой-нить headless браузер (например github.com/fabpot/Goutte)
С этим беда, все плохо, всюду люди пишут что-то свое, например, на основе Selenium. Если у вас много пользователей, вам проще наладить обратную связь и мониторинг ошибок, пусть они бесплатно вам все тестируют и сообщают о проблемах.
Мы тоже используем Selenium для подобных вещей. В принципе все устраивает.
Из комерческих тулов с чем еще был опыт и которые поддерживают тестирование через управление веб браузером — это www.borland.com/products/silktester Он правда денег стоит много…