viqa web ui testing tool
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: [email protected] или
GitHub https://github.com/Supreme85/VIQAUITestingTool
http://vk.com/viqatools