Руководство по приготовлению бутербродов из Selenium

Post on 26-Jun-2015

3,279 views 5 download

Tags:

description

Моя презентация к докладу “Руководство по приготовлению бутербродов из Selenium” с которой я выступил на Selenium Camp в Киеве 25 февраля 2012 года.

transcript

Руководство по приготовлению бутербродов из

Selenium

Uladzimir KryvenkaФевраль 2012

Обо мне

Инструменты: Selenium, Coded UI Test

Один из основателей:Пишу блог:

В тестировании 5+ лет

Автор портала:

Автоматизацией занимаюсь 2+ года

Это я:

Работаю: Head of QA в Paralect

Опыт:

Сегодня в меню

• Аперитив • Готовим бутерброды• Пробуем на вкус• Итоги• Десерт

Наш продукт

• Используется более чем в 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.

Проблемы

• Слишком долго• Много рутины• Неожиданные ошибки• Сложности при выпуске билдов

Решение

Автоматизация!

Почему Selenium RC?

• Натренировались на Selenium IDE• Умеет делать все, что нужно• Много документации• …• Ну тут вы все знаете

Проблемы в тестах

• Прямолинейно• Непонятно• Мудреные локаторы• Сложно править• Повторное использование кода

Решения

• DSL (Domain-specific language)• Page Object pattern• Page Element pattern

Ингредиенты

• Microsoft Visual Studio• C#• MS Test• Selenium RC

ButerbroD в разрезе

Точка входа

Инициализация…

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(); }

Selenium Document

• Имплементация команд Selenium-а• Создаем обертки для команд• Начинаем формировать свой DSL

Элементы страниц

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()• …

Страницы

Страницы

• Создаем абстракцию страницы• Описываем свойства страницы• Описываем элементы страницы• Описываем проверки страницы

Из чего состоит любой тест

Атомарные действия• Минимальное логическое действие

Шаги в любом ручном тесте

Составные действия

Организовываем действия

Тест-кейсы

Пример тест-кейса

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") }; }

А можно и так

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") }; }

Пару слов о Coded UI Test

Selenium + Coded UI

Логирование

• Каждый уровень 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:

Демо

Плюсы

• Легко• Понятно• Гибко• Расширяемо

Минусы

• Долгий старт• Не всегда гибко• Нужно думать

Результаты

• > 500 авто-тестов• 120 тестовых наборов• > 55% покрытия кода• > 80% покрытия требований• Приёмочное тестирование не требует

вмешательства людей

Приправы по вкусу

• Распараллеливание тестов• Сопровождаемость• Максимум пользы• Надежность• Оптимизация• Покрытие кода

Планы на будущее

• Selenium WebDriver?• Open source

… осталось еще совсем немного

Пообщаемся?

http://bugscatcher.net/

u.kryvenka@gmail.com

u.kryvenka

А теперь ваши