Руководство по приготовлению бутербродов из selenium
DESCRIPTION
Моя презентация к докладу “Руководство по приготовлению бутербродов из Selenium” с которой я выступил на Selenium Camp в Киеве 25 февраля 2012 года.TRANSCRIPT
![Page 1: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/1.jpg)
Руководство по приготовлению бутербродов из
Selenium
Uladzimir KryvenkaФевраль 2012
![Page 2: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/2.jpg)
Обо мне
Инструменты: Selenium, Coded UI Test
Один из основателей:Пишу блог:
В тестировании 5+ лет
Автор портала:
Автоматизацией занимаюсь 2+ года
Это я:
Работаю: Head of QA в Paralect
Опыт:
![Page 3: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/3.jpg)
Сегодня в меню
• Аперитив • Готовим бутерброды• Пробуем на вкус• Итоги• Десерт
![Page 4: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/4.jpg)
Наш продукт
• Используется более чем в 50 странах мира• Наши клиенты: Microsoft, Volvo, Lenovo, FBI, Harvard и многие другие
www.easyprojects.net
Easy Projects .NET is a web-based project management tool, making team collaboration hassle-free and straightforward.
![Page 5: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/5.jpg)
Проблемы
• Слишком долго• Много рутины• Неожиданные ошибки• Сложности при выпуске билдов
![Page 6: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/6.jpg)
Решение
Автоматизация!
![Page 7: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/7.jpg)
Почему Selenium RC?
• Натренировались на Selenium IDE• Умеет делать все, что нужно• Много документации• …• Ну тут вы все знаете
![Page 8: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/8.jpg)
Проблемы в тестах
• Прямолинейно• Непонятно• Мудреные локаторы• Сложно править• Повторное использование кода
![Page 9: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/9.jpg)
Решения
• DSL (Domain-specific language)• Page Object pattern• Page Element pattern
![Page 10: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/10.jpg)
Ингредиенты
• Microsoft Visual Studio• C#• MS Test• Selenium RC
![Page 11: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/11.jpg)
ButerbroD в разрезе
![Page 12: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/12.jpg)
Точка входа
Инициализация…
public StateS(string host, int port, string browser, string url) { KillBrowser(); Processor = new HttpCommandProcessor(host, port, browser, url); Selenium = new DefaultSelenium(Processor); Selenium.Start(); Selenium.WindowMaximize(); Selenium.WindowFocus(); }
![Page 13: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/13.jpg)
Selenium Document
• Имплементация команд Selenium-а• Создаем обертки для команд• Начинаем формировать свой DSL
![Page 14: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/14.jpg)
Элементы страниц
Toggle Button
MenuListAlertFrameComboBoxAttach Table
• Activate()• Check()• Deactivate()• IsChecked()• …
• Activate()• Check()• Deactivate()• IsChecked()• …
Text Field
• TypeText()• IsEditable()• GetValue()• ClearText()• …
• TypeText()• IsEditable()• GetValue()• ClearText()• …
Button
• Click()• ClickAndWait()• DoubleClick()• MouseDown()• …
• Click()• ClickAndWait()• DoubleClick()• MouseDown()• …
![Page 15: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/15.jpg)
Страницы
![Page 16: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/16.jpg)
Страницы
• Создаем абстракцию страницы• Описываем свойства страницы• Описываем элементы страницы• Описываем проверки страницы
![Page 17: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/17.jpg)
Из чего состоит любой тест
![Page 18: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/18.jpg)
Атомарные действия• Минимальное логическое действие
![Page 19: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/19.jpg)
Шаги в любом ручном тесте
![Page 20: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/20.jpg)
Составные действия
![Page 21: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/21.jpg)
Организовываем действия
![Page 22: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/22.jpg)
Тест-кейсы
![Page 23: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/23.jpg)
Пример тест-кейса
public static CreateActivity TestActivity() { return new CreateActivity() { LoginCase = Login.AsAdministrator, CreateStep = new Actions.Composite.Activity.Create() .WithAttach(InputDataConf.AttachSmallFile, "attach for a project") .WithNameAndProject(“TestActivity", “TestProject") .WithStartDateWithShift(0, +1, 0) .WithType("Request") .WithPriority("Urgent") .WithDuration ("55") .WithProgress ("80") .WithEstimatedHours("1.00") .WithMember("Administrator") .WithMember("Den") .WithMember("Project Manager") }; }
![Page 24: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/24.jpg)
А можно и так
public static CreateActivity ActivityForProjectMessageboardTest() { return new CreateActivity() { LoginCase = Login.AsAdministrator, CreateStep = new Actions.Composite.Activity.Create() .WithStartDateWithShift(0, 0, -2) .WithEndDateWithShift(0, +1, 0) .WithProject("ProjectForProjectMessageboardTest")
.WithName("ActivityForProjectMessageboardTest") }; }
![Page 25: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/25.jpg)
Пару слов о Coded UI Test
![Page 26: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/26.jpg)
Selenium + Coded UI
![Page 27: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/27.jpg)
Логирование
• Каждый уровень ButerbroD-a логируется
[C] Login as 'TestUser', ‘password': [A] Filling login credentials: [E] Set 'TestUser' to input field 'TextField [id: login]': [D] Typing 'TestUser' in 'TextField [id: login]'. [E] Set '123456' to input field 'TextField [id: pass]': [D] Typing '123456' in 'TextField [id: pass]'. [P] Check is no error message appear:
![Page 28: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/28.jpg)
Демо
![Page 29: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/29.jpg)
Плюсы
• Легко• Понятно• Гибко• Расширяемо
![Page 30: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/30.jpg)
Минусы
• Долгий старт• Не всегда гибко• Нужно думать
![Page 31: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/31.jpg)
Результаты
• > 500 авто-тестов• 120 тестовых наборов• > 55% покрытия кода• > 80% покрытия требований• Приёмочное тестирование не требует
вмешательства людей
![Page 32: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/32.jpg)
Приправы по вкусу
• Распараллеливание тестов• Сопровождаемость• Максимум пользы• Надежность• Оптимизация• Покрытие кода
![Page 33: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/33.jpg)
Планы на будущее
• Selenium WebDriver?• Open source
![Page 34: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/34.jpg)
… осталось еще совсем немного
![Page 36: Руководство по приготовлению бутербродов из Selenium](https://reader035.vdocuments.mx/reader035/viewer/2022062406/558c94f7d8b42a06258b45eb/html5/thumbnails/36.jpg)
А теперь ваши
-ы