Your SlideShare is downloading. ×
Selenium Grid: Culinary tips #optconf.ru
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Selenium Grid: Culinary tips #optconf.ru

365
views

Published on

Selenium Grid: Culinary tips #optconf.ru

Selenium Grid: Culinary tips #optconf.ru

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
365
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Краткая теория завершена, но перед тем как давать советы я хочу сказать немного об ограничениях которые накладываются на весь мой доклад. Проблема пакмана приводит к тому что рисунки и конфигурации grid в рассказе актуальны именно для Selenium RC (хотя они должны работать с незначительными изменениями для WebDriver)Так случилось что для тестирования у нас используется только firefox. На текущий момент разных версий, но грид построен на 16 версиии я не уделяю внимание про особенность поддержки мультибраузерности.В качестве серверной платформы для grid у нас иcпользуются linux(а логотип windows8 я добавил, потому что это сейчас популярная тема), а если серьёзно все системные настройки и технические решения так или иначе будут зависеть от linux. Вы евангелист microsoft, ну что ж прошу меня извинить. Ну и значок цепочки – это внешняя ссылка на материал (их будет очень много), на самом деле я думаю презентация должна быть ценна именно этими ссылками и не конкретными советами которые будут дальше.. Значок осьминога явно указывает что на github есть репозиторий где вы найдете код который иллюстрируется в слайдах. Вообще я люблю когда на слайдах есть листинг … они не дают заснуть слушателям. Все советы…
  • Примите как должное – selenium это такой же сервис как sshили ftp, и нельзя запускать его абы как, создайте отдельных пользователя и группу, опишите структуру директорий. Создайте инит скрипты, которые дадут Вам единую точку управления сервисом, о том как это делать можно прочитать ссылку или просто посмотреть любой приличный инит скрипт. Не стоит сразу стараться создать его максимально универсальным, со временем Вы создадите для приемлемый вариант.
  • Совет два.Логи наше все. Они как бекапы бесполезны до поры до времени…пока не случится что-то плохое. Из своей практики могу сказать что никто не уделяет должное внимание логам selenium сервера. На то думаю множество причин –их слишком много, они почти всегда непонятные, да и во время разработки тестов есть масса других индикаторов все ли работает как нужно. А теперь горькая правда – логи сервера порой единственно что позволит понять в чем проблема. Но какая сложность или особенность в логировании selenium? По-умолчанию, логи получаются перенаправлением STD odt/err в файл. Часто при рестарт сервиса они перетираются, а если нет то накапливаются сотнями гигабайта. Наспех настроенный logrotate приводи к остановке записи логов в файлах при очередном цикле ротирования, а Вы уверены что логи у Вас пишутся. Как выйти из ситуации? Примените всю мощь log4j который не только позволяет детально настроить уровни логирования, но и реализовать логику корректной записи и ротирования.Детально как это сделать описано в приведенных ссылках.
  • Продолжая тему логов, хочется упомянуть об удобстве коллекционирования – те сборки логов в одном надежном и просторном месте. Эту хитрость знают матерые системные администраторы, у которых под контролем парк серверов. А чем наш selenium кластер хуже? Я бы мог посоветовать graylog2 удобный коллектор, немного монстроидален, но богатый функционал никогда не будет лишним. Что мы получим от единой точки доступа логам? Первое – удобство. Не нужно заходить на машину и набирать магическое less grep tail –f. Приятный интерфейс просмотра добавит скорости при анализе журналов событий. Ну и напоследок мы получаем возможность выявления общих проблем.
  • Любой сервис нуждается в мониторинге. Мы уже запомнили что selenium это такой же сервис как им многие другие, хотя внимание по началу он требует куда больше. И так перед нами ответственный выбор – система мониторинга или выбор уже сделан давно, неважно. Важно что чтобы система мониторинга Вас устраивала – по производительности, легко подстраивалась под ваши меняющиеся нужны и как производного обладала удобным API с клиентом под ваш любимый язык разработки.Для нас такой системой стал zabbix. Он обладает достойным API и качественным сторонним клиентом для многих языков в т.ч. и для pythonОчень важно автоматизировать все действия до добавлению сервисов в мониторинг и установки разных агентов и параметров. Это не просто съэкономит Ваше время но и гарантирует что Вы не забудете (или поленитесь) что-то добавить в вашу систему мониторинга. Решений тут также крайне много – если Вы используйте python – взгляните на fabric.
  • Все технические и идеологические вопросы мониторинга разрешены. Серверы настроены, но за какими параметрами следить? Я думаю за всеми! Ну, конечно, в первую очередь за самыми типичными системными –память, диск, свободное места разделов, число inodes. В общем все что как правило уже предоставляет выбранная вами система мониторинга. В качестве наглядного примера хочу показать один из наших экранов по мониторингу кластера. Таблица в который по вертикали выставлены основные параметры – утилизация CPU, сетевая активность, объем доступной оперативной памяти. А по горизонтали – конкретные серверы кластера. Очень удобно и вполне наглядно, пока сервера не больше десятка)
  • – специфичными параметрами. Их Вам нужно выделить самим, но от этого их ценность только возрастает. Что за параметры это например могут быть? Доступность порта на который приходят запросы, как его проверять думаю каждый решит сам лишь напомню что это http порт. Я уверен что запуская селениум сервер в linuxВы активно используйте virtual frame buffer для исков, и конечно, его работоспособность краеугольный камень в работе браузера, в которым осуществляется тестирование. Очень ценным параметром может стать подсчет числа активных те запущенных экземпляров браузера, в конечном итоге складывая эти числа со всех нодгрида Вы можете смело заявлять миру что у Вас n число потоков тестирования. Тут я разместил правдивый недельный график отображающий состояние описанных параметров.
  • И хочу закончить тему мониторинга кластера нотификацией и способами реагирования на все те события и параметры за которыми пристально следить zabbixили что-то что используете Вы. Мы крайне заняты и хотим отвлекаться только на важные события мониторинга, для этого нужно четко определить что для нас важно, а что нет, для этого существуют триггеры или или аналоги. Обязательно задавайте конкретные и как можно более простые условия срабатывания триггеров. По ним мы выполняем нотификацию, куда именно опять таки решать Вам – email, smsили никуда. Мы использует специальные dashboard для выводы разной важной информации, туда же мы выводит кратно нотификации системы мониторинга, один из вариантов как раз показан на нижней картинке. Ну а more information ведет прямиком в zabbix
  • Покончив с мониторингом, самое время автоматизировать решение каких-либо важных проблем. Это особенно актуально, когда нет возможность в корне побороть проблему (или пронять ее природу), а возникает она эпизодически и решение отнимает заметное время, при этом действия явно носят однотипный характер и легко поддаются автоматизации. Как пример, могу привести исключительную ситуацию в который накапливаются открытые браузеры при том что selenium server считает из закрытыми. Последствия как правило довольно печальный, мы расходуем сейчас уже не такую дорогую память, затем уходим в свап и начинаем расходовать очень ценный disk io, что привод к проблемам на всей физической машине. Придумали решение (листинг на экране) закрепили скрипт на срабатывает по тригеру максимального числа браузеров и PROFIT!
  • Немного о стабильности и живучести selenium grid. А что если сервер выполняющий роль hub выйдет из строя? Как мы заметили в начале – hub ключевая точка. Да наш огромный кластер станет не работопригодным. Добавить живучести можно запуском не одного, а нескольких hub и распределением между ними нод (с браузерами), а общую точку объединения хабов – сможет выполнять любой http прокси сервер. Ведь сам селениум использует jetty. Можно если захотеть написаний свой – при помощи Twisted, как это показано у меня на слайде. А вот почему на эту роль не подойдет всеми любимый nginxдумаю каждый сможет догадаться сам.
  • Transcript

    • 1. Selenium Grid: Culinary tips TM Profit from the CloudAlexander HayorovNovember, 2012
    • 2. об авторе доклада3+ года в автоматизации тестирования сейчас в automation QA – автоматизация облачных услуг и хостинга 4 года - опыт автоматизации тестирования 5 команд автоматизации + outsourcing TM 2 Profit from the Cloud
    • 3. немного теории карта запросов: роль хаба node node node Grid hub Testing apps node Clients - ключевая роль в стабильности и производительности; - концентрирует на себе: запросы, трафик; - осуществляет балансировку и контроль; TM 3 Profit from the Cloud
    • 4. Почему мы выбрали selenium grid?- один сервис на все команды- много трудоемких (продолжительных, многопоточных) тестов- стабильность в тестировании- нужна стандартизованная среда- желание повысить утилизацию ресурсов для тестирования TM 4 Profit from the Cloud
    • 5. какие проблемы нас ожидают selenium – это сервис логирование мониторинг нотификация «сам себе лекарь» балансировка TM 5 Profit from the Cloud
    • 6. ограничения и особенности доклада Pacman problem Firefox only *nix platform only RC WebDriver TM 6 Profit from the Cloud
    • 7. совет 0 виртуализациядобавьте слой виртуализации и Вы получите:- увеличение уровня доступности приложений, плавное функционирование- снижение стоимости инфраструктуры- эффективное обслуживание серверов- возможность гибкого распределения ресурсов и много-много прочего…посмотрите Virtuozzo Containers parallels.com/products/pvc/ TM 7 Profit from the Cloud
    • 8. совет 1 selenium это сервис github.com/hayorov/grid-tips/tip1создайте отдельного пользователя и группуопределите структуру директорий серверасоздайте и используйте init-скриптыавтостарт после перезагрузки TM 8 Profit from the Cloud
    • 9. совет 2 логированиеОбычное перенаправление логов в файл с logrotateприводит к остановке их записиведите,ротируйте,и храните лог файлы TM 9 Profit from the Cloud
    • 10. совет 2/1 сборка логовНайдите для себя приемлемую технологию по сбору ицентрализованному хранению логовдля чего?- удобство доступа и хранения- быстрый просмотр- возможность определения общих проблемнапример, с помощью Graylog2 TM 10 Profit from the Cloud
    • 11. совет 3 мониторинг Какая должна быть система?- достаточно производительная- легко изменяемая под Ваши нужды- предоставляющая API автоматизируйте все действия по настройке мониторинга TM 11 Profit from the Cloud
    • 12. совет 3/1 за чем следить? github.com/hayorov/grid-tips/tip3Параметров так много, за чем следует наблюдать и пристально следить? такая таблица может быть очень полезна в диагностике проблем и слабых мест кластера TM 12 Profit from the Cloud
    • 13. совет 3/2 особые параметрыУделите особое внимание специфичным параметрам selenium server: - доступность порта сервера для получения запроса - работоспособность xvfb (virtual frame buffer) - количество активных экземпляров браузеров недельный график мониторинга параметров selenium TM 13 Profit from the Cloud
    • 14. совет 3/3 нотификацияуказывайте явные критерии для уведомлений пример триггеров используемых нами блок уведомлений в нашей dashboard TM 14 Profit from the Cloud
    • 15. совет 4 «сам себе лекарь» автоматизируйте решения кричных проблем доступная память лимит числа браузеров наглядная иллюстрация появления «зомби» браузеров TM 15 Profit from the Cloud
    • 16. совет 5 балансировка А что если выйдет из строя hub? node node node node node node hub hub HTTP прокси сервер Почему для этих целей не подойдет nginx? TM 16 Profit from the Cloud
    • 17. ваши вопросы и Thank You! @hayorovэтот файл уже на slideshare.net/hayorov
    • 18. Мы растем, задач много. Нам постоянно нужны..• Разработчики • Программ-менеджеры• Проджект-менеджеры (CSD) • QA job@parallels.com TM 18 Profit from the Cloud
    • 19. Parallels - лидер на международном рынке в своих сегментах• Автоматизация оказания • Виртуализация Mac облачных сервисов • 3 млн. ПК во всем мире• 10 млн. СМБ в 125 странах • 80% рынка в розничных сетях СШАРабота в Parallels - от программирования в ядрах ОС досоздания web интерфейсов и мобильных приложений• Интересные проекты на • Работа бок о бок с грани невозможного легендами ИТ-индустрии• Карьера, опционы • Процесс разработки мирового класса Присоединяйся к лучшим! Job@parallels.com TM 19 Profit from the Cloud