Selenium RC для QAинженеров: возможности, трудности и нюансы в использованииЯнАлексеенкоGGA Software Services
СодержаниеВозможностиНаш подход к тестированиюНедостаткиПроблема синхронизацииПроблемы кросс-браузерного тестированияЧто нужно знать?Работа с файлами XSS инъекции Flash/Flex приложения Silverlight приложенияДемонстрации
ПоддержкаOSWindows SolarisAppleLinux
ПоддержкаOSSelenium 2.0 дает возможность тестироватьМобильные версии сайтов,используя WebDriver
ДемонстрацияПример работы с мобильнымиустройствамиУстановить Android SDK на ПКУстановить Android WebDriver нателефонПодключить телефон к USB в debug режимеВыполнить следующие командыcd/android_sdk/tools/adb devicesВернёт <serialID>adb-s <serialId> forward tcp:8080 tcp:8080http://code.google.com/p/selenium/wiki/AndroidDriver
Поддерживаемые БраузерыInternet Explorer 6+Safari 3+Fire Fox 2+Google Chrome 3+Opera 8+
Популярность браузеров
Популярность браузеров
Время Тестирования
Языки ПрограммированияПрограммируй наА так же создавай свои языки, используя API
Тестирование & SeleniumФункциональность Web-приложенийРабота JavaScriptJavaScript ошибкиСтиль страниц (вёрстка)ОрфографияБезопасность приложенияXSS уязвимостиSQL инъекциии д.р. Flash, Silverlight… Performance
Результаты тестированияИмена выполняемых операций, а также имена бизнес-функцийВремя выполнения операцийФункциональные ошибки JavaScriptошибкиПроверка валидности HTML(http://validator.w3.org/) Screenshots & Locatorshots
Результаты тестированияHtml форматtxt форматlogУдалённый доступ к результатам с визуальным оформлениемУпрощённый формат для сканера логовУстановка Errorcode при завершении теста с ошибкой
Результаты тестирования
Результаты тестирования
Наш выбор+SVN: разработкатестов в командеКомпилируетЗапускаетХранит историюHudson
Структура Фреймворкаконфигурация тестасценарийтестированияRunnerотчетыредакторсценариевкод тестоввспомогательныйфункционалЛокаторы объектов
ОрганизациятестовПараметрытестаФункциональность приложениясценарий тестированияТестированиекод тестовЛокаторы объектов
Проект на этапе разработки
Готовый проект
ДемонстрацияWeb-application:Компоненты интерфейса:библиотека MooTools HTML 5CKEditor FlashВидео ролик:http://screencast.com/t/KlhRzHxzn
Недостатки SeleniumНативные окна браузераИсключение: метод keyPressNative Digest & NTLM Authentication Scheme forHTTPНеобходимо настроить браузер Flash/Flex, SilverlightСинхронизация
Digest & NTLM Authentication Internet Explorer (regedit):Создать ключ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLEСоздатьDWORDзначенияiexplore.exe & explorer.exeиустановить их значения0.FireFox (about:config):Установить network.http.phishy-userpass-length = 255Добавить тестируемые домены вnetwork.automatic-ntlm-auth.trusted-urishttp://stackoverflow.com/questions/3021602
СинхронизацияJava: Sleep для потокаSelenium: waitForPageToLoadДостаточно? Нет, т.к. На странице есть JavaScriptПути решения: Ждать конкретные объекты на странице Это не универсальный методФлаги, вставляемые на страницуразработчикамиУниверсальный подход
СинхронизацияЗагрузка/Выгрузка объекта по Xpath, CSS, IDЗагрузка/Выгрузка текста целиком/частичноЗагрузка/Выгрузка объекта/текста после RefreshЗагрузка объектов по их численностиОжидание изменений в JavaScriptОжидание новых окон
Проблемы кросс-браузерного тестирования Самопроизвольное закрытие теста– Разбивай тесты на небольшие кусочки Медленная работа с Xpath– Используй CSS & JavaScript Рассинхронизация работымежду Xpath & CSS– Используй JavaScript Не поддерживает HTML 5 в полной мере
Проблемы кросс-браузерного тестированияHTTP authentication (ver. 4)– Воспользуйся асинхронной работой SeleniumwaitForPageToLoad(ver. 5): Result of expression‘this.getCurrentWindow’[undefined] is not a functionРаботает только в режиме *safariproxy(ver. 5)
Проблемы кросс-браузерного тестированияHTTP authenticationВозможны проблемы с сертификатамиwaitForPageToLoad:Object[object HTMLIFrameElement] has no method 'getCurrentWindow‘
Проблемы кросс-браузерного тестированияПри обычном обновлении FireFoxс версии 3.5 до 3.6и использовании профиля для запуска тестов возникает проблемас сертификатом: services.addons.mozilla.org:443– Необходимо устанавливать новую версию FireFox, полностью удалив старую, вместе с имеющимеся профилями.
Работа с IFrameДля активации элемента используйи/или Пример:
Что нужно знатьНет доступа к нативным формамКакие компоненты используются(будут использоваться) в Web приложенииТрудности при работе с IFrame Digest & NTLM AuthenticationНестабильная работа IEМедленная работа IE c XPathАсинхронное выполнение операций
Работа с файламиUpload:keyPressNative JavaScriptFlash + JS + keyPressNativeDownload:Selenium +wgetwget -q –header “Cookie:$cookie” –P $path $urlFireFox ProfilekeyPressNative
Проблемы кросс-браузерного тестированияVS
Демонстрация Web-application:Загрузчик файлов использует:FlashДля скачивания используем:WgetВидео ролики:Safari: http://screencast.com/t/DGBoC41fGoogle Chrome: http://screencast.com/t/pvQjDkNuScqO
XSS injectionПример уязвимости:… Selenium:Verify JS variable‘inject’ usinghttp://ha.ckers.org/xss.html
Демонстрация Web-application: SeleniumIDE для наглядности
Flash/Flex applicationОткрыть доступ к необходимым функциям,используяExternalInterfaceВоспользоваться JavaScript для вызова соответствующих функций Flash Native keyboard events Native mouse events	Интеграция стороннихсредств тестирования
Демонстрация Web-application:	http://linux.ria.ua/JsFlash/simple.html	http://www.uni-dubna.ru/~sidorov/workz/flash/operate2.html SeleniumIDE для наглядности
Silverlight applicationОткрыть доступ к необходимым функцияматрибут[ScriptableType]для страницеатрибут[ScriptableMember]для функцииВоспользоваться JavaScript для вызова соответствующих функций Silverlight Native keyboard events Native mouse events	Интеграция сторонних средств тестирования
Демонстрация Web-application: Демонстрационное приложение – Сумма чисел SeleniumIDE для наглядности
Спасибо за вниманиеВопросыЯнАлексеенкоGGA Software ServicesСанкт-Петербургalexeenko@ggasoftware.com

(Seleniumcamp) Selenium RC for QA Engineer

Editor's Notes

  • #6 Демонстрация работы Selenium на мобильном устройстве (длительность 5 – 10 минут).Для этой демонстрации необходим WiFi + камера, для просмотра аудиторией телефона с проектора.
  • #22 Демонстрация включит в себя рассказ о framework, оргнизации тестов, отчетахЗапуск тестов реального проектаДлительность порядка 20 – 30 минут.
  • #35 Продолжительность демонстрации 5 – 10 минут.
  • #37 Продолжительность демонстрации 5 – 10 мин.
  • #39 Продолжительность демонстрации 5 мин.
  • #41 Продолжительность демонстрации 5 мин.