VIQA Web UI Testing Tool

53
V I Q A Virtual Intelligence Quality Assurance

description

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

Transcript of VIQA Web UI Testing Tool

Page 1: VIQA Web UI Testing Tool

V I Q A

Virtual IntelligenceQuality Assurance

Page 2: VIQA Web UI Testing Tool

Обо мне

Роман Иовлев

QA Automation Lead

Page 3: VIQA Web UI Testing Tool

V I Q A

Задача.

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

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

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

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

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

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

Что дальше

Page 4: VIQA Web UI Testing Tool

Virtual Intelligence Quality AssuranceTool

.Net C#

Selenium 2.X

PageObjects

https://github.com/Supreme85/VIQAUITestingTool

Page 5: VIQA Web UI Testing Tool

Задача

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

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

Like User Behavior Tests

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

Page 6: VIQA Web UI Testing Tool

Selenium?

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

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

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

Page 7: VIQA Web UI Testing Tool

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

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

Page 8: VIQA Web UI Testing Tool

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

Yandex QA Tool

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

Button, Checkbox, TextInput

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

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

Page 9: VIQA Web UI Testing Tool

I

Page 10: VIQA Web UI Testing Tool

Кнопка

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

Page 11: VIQA Web UI Testing Tool

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

Page 12: VIQA Web UI Testing Tool

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

Page 13: VIQA Web UI Testing Tool

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

<a href=“…”><span>

<img src=“…”>

Найти

<\span>

</a>

Page 14: VIQA Web UI Testing Tool

Yandex QA Tool

Page 15: VIQA Web UI Testing Tool

Yandex QA Tool

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

Page 16: VIQA Web UI Testing Tool

V I Q A

new Checkbox(“My Checkbox")

{

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

GetLabelFunc = () => MyElementForLabel.Label,

IsSelectedFunc = () =>

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

};

Page 17: VIQA Web UI Testing Tool

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

IsCheckedLabel

ДействияClickCheckUncheckSetValue

Page 18: VIQA Web UI Testing Tool

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

public interface ICheckbox : IClickable, ILabeled, ISetValue

{

void Check();

void Uncheck();

bool IsChecked();

}

Page 19: VIQA Web UI Testing Tool

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

new DropDown("My Dropdown") {

SelectAction = val => {

MySelectMainElement.Click();

MySelectListElement.WithName(val).Click();

}

};

Page 20: VIQA Web UI Testing Tool

II

Page 21: VIQA Web UI Testing Tool

Логирование

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

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

Page 22: VIQA Web UI Testing Tool

Yandex QA Tool

Page 23: VIQA Web UI Testing Tool

Yandex QA Tool

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

Page 24: VIQA Web UI Testing Tool

V I Q A

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

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

VIAction

Page 25: VIQA Web UI Testing Tool

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

new Site().Logger = MyLogger();

interface IWebLogger {

void Event (string msg);

void Error (string msg)

} }

Page 26: VIQA Web UI Testing Tool

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

VIElement.DefaultViAction =

(viElement, text, viAction) => {

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

viAction.Invoke();

}

Page 27: VIQA Web UI Testing Tool

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

Page 28: VIQA Web UI Testing Tool

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

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

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

if (!FirstSensorRadioButton.IsDisplayed)

SensorBlock.Click();

viAction.Invoke();

}

};

Page 29: VIQA Web UI Testing Tool

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

Artificial Intelligence

Virtual Intelligence

Page 30: VIQA Web UI Testing Tool

III

Page 31: VIQA Web UI Testing Tool

Сайт

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

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

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

Секция

Элемент

Page 32: VIQA Web UI Testing Tool

Yandex QA Tool

Page 33: VIQA Web UI Testing Tool

Yandex QA Tool

PageObjects

BlockHtmlElement

Block

Page 34: VIQA Web UI Testing Tool

V I Q A

VISiteVIPage

VIElementVIElement

Page 35: VIQA Web UI Testing Tool

VISite

WebDriver

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

Домен

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

OpenPage/OpenHomePage

Page 36: VIQA Web UI Testing Tool

Тест

site.OpenHomePage();

{var _ = HomePage;

_.TextFieldFrom.Input("1000");

_.TextFieldTo.Input("2000");

_.MyCheckbox.Check();

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

_.SearchButton.Click();

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

Page 37: VIQA Web UI Testing Tool

VI-элемент

Простые:

Button, CheckBox, Link, TextArea,

TextField, Clickable, Text, ClickableText

Сложные:

CheckList, RadioButtons, Dropdown, DataForm

Page 38: VIQA Web UI Testing Tool

Block vs ViElement

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

Page 39: VIQA Web UI Testing Tool

Yandex QA Tool

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

public CheckBox MyCheckbox;

Page 40: VIQA Web UI Testing Tool

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

Page 41: VIQA Web UI Testing Tool

Fill Form

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

ISetValue из данных

Page 42: VIQA Web UI Testing Tool

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

Page 43: VIQA Web UI Testing Tool

Заполнение в 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();

Page 44: VIQA Web UI Testing Tool

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

{

var _ = ProductPage.FilterSection;

_.TextFieldFrom.Input("1000");

_.TextFieldTo.Input("2000");

_.WiFiCheckbox.Check();

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

_.ProcessorTypesChecklist.CheckGroup(

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

}

Page 45: VIQA Web UI Testing Tool

Fill Form

ProductPage.FilterSection.FillForm(MyProduct);

Page 46: VIQA Web UI Testing Tool

Форма

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

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

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

Page 47: VIQA Web UI Testing Tool

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

А также:

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

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

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

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

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

Page 48: VIQA Web UI Testing Tool

Еще плюшки

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

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

KillAllRunWebDrivers

Page 49: VIQA Web UI Testing Tool

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

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

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

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

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

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

Page 50: VIQA Web UI Testing Tool

VIQA Profit

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

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

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

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

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

Page 51: VIQA Web UI Testing Tool

VIQA Profit

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

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

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

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

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

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

Page 52: VIQA Web UI Testing Tool

Планы

Java

Блог

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

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

Page 53: VIQA Web UI Testing Tool

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

Роман Иовлев

Email: [email protected] или

[email protected]

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

http://vk.com/viqatools