2011-01-18 5 views
16

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

В настоящее время для проверки нагрузки я использую grinder. Мы записываем скрипты, а затем обрабатываем их, чтобы обрабатывать, помимо прочего, асинхронные запросы. Эта система работает сейчас; однако сценарии деликатные, и я не могу их поддерживать во время нашего цикла разработки. Мне нужно иметь возможность «запускать браузер» с помощью языка программирования, который абстрагируется от деталей html и javascript, но он должен быть безголовым. Другими словами, если мой скрипт тестирования ломается, он должен представлять собой фактический поломка приложения. Запуск firefox в xvfb не работает, поскольку firefox все еще использует слишком много ресурсов даже на безголовой машине linux, работающей с xvfb. Я попробовал управлять firefox с помощью webdriver под безголовым сервером x.

Я работаю над HTMLUnit в течение нескольких дней, так как это идеальное решение. Я пишу HTMLUnit драйверов в Jython, и поэтому я могу использовать их с мясорубкой. К сожалению, я сталкиваюсь с ошибками javascript (это не настоящие ошибки в firefox/chrome/IE), и я думаю, что я нахожусь в конце пути для этого. В любом случае я хорошо знаю HtmlUnit, и мне действительно нужна альтернатива.

Я знаю, что есть некоторые другие решения (envjs и zombie.js); однако я не знаю, как развиты эти технологии, и я не хочу тратить еще одну неделю на тупик.

Насколько сложно было бы взять исходный код для Firefox или Webkit и прокомментировать все вызовы рендеринга/графического интерфейса и создать настоящий безголовый браузер? Это было сделано? Будет ли проще сделать это с чем-то другим? Честно говоря, я не могу понять, почему это уже не было сделано, поэтому я предполагаю, что это намного сложнее, чем я ожидаю.

Я предполагаю, что если я смогу получить поистине безмозглый браузер с разумными характеристиками производительности (у меня есть большой серверный флот, чтобы бросить эту проблему, но он недостаточно велик для реального firefox с визуализацией GUI), тогда я буду установлен ,

+0

Рассматривали ли вы использование коммерческого сервиса, такого как BrowserMob (http://browsermob.com/performance-testing) или Gomez (http://www.gomez.com/products-solutions/products/load-testing/). Хотя и не дешево, кажется, проще, чем пытаться взломать Firefox/Webkit. –

+0

Я действительно не изучал эти услуги, но я слышал о них. Я увлечен тем, что собираю систему в доме, желательно с использованием технологии с открытым исходным кодом. У нас много тестовых серверов, и я действительно хочу их использовать. Спасибо за предложение. – user573225

ответ

1

Возможно, вы сможете воспользоваться некоторыми из доступных инструментов тестирования модуля JavaScript, чтобы собрать необходимую вам среду.

Например, я обнаружил, что загрузка env.js в rhino дает приемлемый поддельный браузер для тестирования большинства JavaScript. Это не соответствует некоторым атрибутам DOM, например, элементам, соответствующим их окну, но это не было серьезной проблемой в моем опыте.

Смотрите также:

+0

Спасибо, я могу попробовать env.js с носорогом рядом. Это должно позволить мне интегрироваться с текущей фреймворком, работающим на основе java. Любые идеи о том, как это будет сравниваться с HtmlUnit? Любой опыт работы с zombie.js? – user573225

+0

Из того, что я помню, в последний раз, когда я смотрел HTMLUnit, у меня не было поддержки JavaScript, в которой я нуждался, но этого больше не может быть. Я не пробовал zombie.js, но стоит посмотреть, спасибо за это. – Jonah

0

Посмотрите WebKitDriver. Проект включает в себя безгласную реализацию WebKit.

14

enter image description here

Это было сделано ребятами над на http://www.phantomjs.org/.По их собственным словам:

PhantomJS - это бесшумный WebKit с API JavaScript. Он имеет быструю и родную поддержку для различных веб-стандартов: обработка DOM, селектор CSS, JSON, Canvas и SVG.

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

PhantomJS создается Ariya Хидайята

+5

Что относительно Gecko? – Rolf

+1

www.slimerjs.org хотя его без головы без xvfb –

1

Посмотрите на LoadBooster. Это облачная служба тестирования нагрузки, которая использует безгласный браузер PhantomJS для тестирования веб-сайтов. Отказ от ответственности: я работаю за LoadBooster.

Смежные вопросы