viqa web ui testing tool

Post on 29-Nov-2014

280 Views

Category:

Presentations & Public Speaking

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

VIQA Инструмент для тестирования Web UI. Вика старается сделать для вас процесс тестирование удобным и понятным, позаботится о логировании всех ваших действий и будет рада узнать что-нибудь новенькое, если вы захотите ее обучить. Инструмент VIQA использует популярный шаблон PageObjects расширяя его до таких понятий как сайт и страница. Все используемые элементы интуитивно понятны, не требуют от вас лишних действий для работы с ними и обладают широкими возможностями для настройки работы с ними. Каждое действие элемента можно подстроить под свое приложение, либо настроить общую работу элементов. Вика желает вам интересной и приятной работы.

TRANSCRIPT

V I Q A

Virtual IntelligenceQuality Assurance

Обо мне

Роман Иовлев

QA Automation Lead

V I Q A

Задача.

Почему не хватило Selenium

UI обертка - Yandex QA Tools достоинства

Проблемы Yandex QA Tool и их решения в VIQA

Описание концепции Virtual Intelligence

Плюшки VIQA и расширение PageObjects

Видео примеры

Что дальше

Virtual Intelligence Quality AssuranceTool

.Net C#

Selenium 2.X

PageObjects

https://github.com/Supreme85/VIQAUITestingTool

Задача

Тестирование Web UI

Интеграционное тестирование

Like User Behavior Tests

Легко поддерживаемые, логирование и пр.

Selenium?

Довольно низкоуровневый язык

Есть только абстрактный WebElement

Нет таких понятий как сайт, страницы, блоки, html элементы

Зачастую тесты выглядят примерно так

driver.FindElement(By.XPath(“somelocator1")).SendKeys("1000");

driver.FindElement(By.XPath(“somelocator2")).SendKeys("20000");

driver.FindElement(By.XPath(“somelocator3")).Click();

driver.FindElement(By.XPath(“somelocator4")).Click();

driver.FindElement(By.XPath(“somelocator5").Click();

driver.FindElement(By.XPath(“somelocator6")).Click();

driver.FindElement(By.XPath(“somelocator7")).Click();

driver.FindElement(By.XPath(“somelocator8")).Click();

driver.FindElement(By.XPath(“somelocator9")).Click();

driver.FindElement(By.XPath(“somelocator10")).Click();

Надстройка над Selenium

Yandex QA Tool

Работает с понятными элементами:

Button, Checkbox, TextInput

Использует PageObjects и Blocks

Хороший инструмент для тестирования UI, но...

I

Кнопка

<input type=“button” value=“Найти”>

Кнопки бывают разные

Кнопки бывают разные

Кнопки бывают разные

<a href=“…”><span>

<img src=“…”>

Найти

<\span>

</a>

Yandex QA Tool

Yandex QA Tool

Написать свой класс отнаследовавшись от TypifiedElement

V I Q A

new Checkbox(“My Checkbox")

{

ClickAction = () => MyElementForClick.Click(),

GetLabelFunc = () => MyElementForLabel.Label,

IsSelectedFunc = () =>

MyElementForClick.GetAttribute("checked") == "1",

};

Интерфейсы (Checkbox)Атрибуты

IsCheckedLabel

ДействияClickCheckUncheckSetValue

V I Q A Интерфейсы

public interface ICheckbox : IClickable, ILabeled, ISetValue

{

void Check();

void Uncheck();

bool IsChecked();

}

Переопределение действия из нескольких шагов

new DropDown("My Dropdown") {

SelectAction = val => {

MySelectMainElement.Click();

MySelectListElement.WithName(val).Click();

}

};

II

Логирование

Хочется логировать все действия, которые делают элементы

Хочется управлять этим логированием

Yandex QA Tool

Yandex QA Tool

Пишите свои классы

V I Q A

Встроеный логер

Кастомный логер IWebLogger

VIAction

Настройка Логера

new Site().Logger = MyLogger();

interface IWebLogger {

void Event (string msg);

void Error (string msg)

} }

VIAction для всех элементов

VIElement.DefaultViAction =

(viElement, text, viAction) => {

viElement.Logger.Event(“Do action: ” + text);

viAction.Invoke();

}

VIAction для одного элемента

VIAction для одного элемента

new RadioButtons(“Сенсорный экран”, “#sensorScreen”) {

VIAction = (viElement, text, viAction) => {

if (!FirstSensorRadioButton.IsDisplayed)

SensorBlock.Click();

viAction.Invoke();

}

};

О Названии или AI vs VI

Artificial Intelligence

Virtual Intelligence

III

Сайт

СайтСтраница1

Страница2Секция1

Секция2Элемент

Секция

Элемент

Yandex QA Tool

Yandex QA Tool

PageObjects

BlockHtmlElement

Block

V I Q A

VISiteVIPage

VIElementVIElement

VISite

WebDriver

Общие настройки (Логирование, Таймауты)

Домен

Каскадная инициализация Страниц

OpenPage/OpenHomePage

Тест

site.OpenHomePage();

{var _ = HomePage;

_.TextFieldFrom.Input("1000");

_.TextFieldTo.Input("2000");

_.MyCheckbox.Check();

_.MyRadioButtons.Select("да");

_.SearchButton.Click();

}Assert.IsNotNull(SearchPage.ExpectedElement.WaitWebElement());

VI-элемент

Простые:

Button, CheckBox, Link, TextArea,

TextField, Clickable, Text, ClickableText

Сложные:

CheckList, RadioButtons, Dropdown, DataForm

Block vs ViElement

Форма для логина аналогична чекбоксу

Yandex QA Tool

[FindsBy(How = How. ClassName, Using = “my-checkbox")]

public CheckBox MyCheckbox;

V I Q A

[Name(Name = "Wi-fi"), Locate(ByXPath = "//*[@class=‘my-checkbox']")]

public ICheckbox MyCheckbox1 = new Checkbox();

[Name(Name = "Wi-fi"), Locate(ByClassName = “my-checkbox")]

public Checkbox MyCheckbox2;

public ICheckbox MyCheckbox3

= new Checkbox("Wi-fi", "#my-checkbox");

public Checkbox MyCheckbox4

= new Checkbox("Wi-fi", By.CssSelector("#my-checkbox"));

Fill Form

Быстрое Массовое заполнение элементов

ISetValue из данных

Множество Элементов

Заполнение в Selenium

driver.FindElement(Locators.FromTextField).SendKeys("1000");

driver.FindElement(Locators.ToTextField).SendKeys("20000");

driver.FindElement(Locators.WifiExpand).Click();

driver.FindElement(Locators.WifiCheckbox).Click();

driver.FindElement(Locators.SensorScrnExpand).Click();

driver.FindElement(Locators.SensorScrnRadio(“да”)).Click();

driver.FindElement(Locators.ProcessorExpand).Click();

driver.FindElement(Locators.ProcessorCheckbox(“AppleA4”)).Click();

driver.FindElement(Locators.ProcessorCheckbox(“AppleA5”)).Click();

driver.FindElement(Locators.ProcessorCheckbox(“AppleA7”)).Click();

Заполнение в VIQA

{

var _ = ProductPage.FilterSection;

_.TextFieldFrom.Input("1000");

_.TextFieldTo.Input("2000");

_.WiFiCheckbox.Check();

_.SensorScreenRadioButtons.Select("да");

_.ProcessorTypesChecklist.CheckGroup(

new[]{"Apple A5", "Apple A6", "Apple A7"});

}

Fill Form

ProductPage.FilterSection.FillForm(MyProduct);

Форма

Работа с формой описывается отдельно

Форма заполняется из бизнес сущности/ей

Одна строчка в коде

VI-элементы: More

А также:

Стабильный поиск элемента

Встроенная Проверка уникальности элемента

Стабильное нажатие элементов

Переопределение действий для любых VIElements

Логирование всех действий и результатов по умолчанию

Еще плюшки

Драйвер стартует при первом вызове Open

Браузер открывается на весь экран

KillAllRunWebDrivers

Написание тестов

Создаем Сайт. Настраиваем его

Создаем страницы/Секции VIElement-ов

Описываем-обучаем элементы для каждой страницы

Описываем Действия со страницами

Составляем тесты

VIQA Profit

Обучаемые Веб Элементы

Использование Интерфейсов

Простота использования

Шаблоны PageObjects, каскадная

инициализация элементов

VIQA Profit

Встроенные логирование и алертинг

Широкие возможность настройки

Фреймворка (свой логгер, настройки

webDriver, таймауты и прочее)

Множество небольших но

приятных мелочей

Планы

Java

Блог

Английское Комьюнити

Ряд других проектов по тестированию

Попробуйте сами

Роман Иовлев

Email: viqablog@gmail.com или

romanyister@gmail.com

GitHub https://github.com/Supreme85/VIQAUITestingTool

http://vk.com/viqatools

top related