V I Q A
Virtual Intelligence
Quality Assurance
Обо мне
Роман Иовлев
QAAutomation Lead
V I Q A
Задача.
Почему не хватило Selenium
UI обертка - Yandex QA Tools достоинства
Проблемы Yandex QA Tool и их решения в...
Virtual Intelligence Quality Assurance
Tool
.Net C#
Selenium 2.X
PageObjects
https://github.com/Supreme85/VIQAUITestingTool
Задача
Тестирование Web UI
Интеграционное тестирование
Like User Behavior Tests
Легко поддерживаемые, логирование и пр.
Selenium?
Довольно низкоуровневый язык
Есть только абстрактный WebElement
Нет таких понятий как сайт, страницы, блоки,
htm...
Зачастую тесты выглядят примерно так
driver.FindElement(By.XPath(“somelocator1")).SendKeys("1000");
driver.FindElement(By....
Надстройка над Selenium
Yandex QA Tool
Работает с понятными элементами:
Button, Checkbox, TextInput
Использует PageObjects...
Кнопка
<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 = () => MyElementForLabe...
Интерфейсы (Checkbox)
Атрибуты
IsChecked
Label
Действия
Click
Check
Uncheck
SetValue
V I Q A Интерфейсы
public interface ICheckbox : IClickable, ILabeled, ISetValue
{
void Check();
void Uncheck();
bool IsChe...
Переопределение действия
из нескольких шагов
new DropDown("My Dropdown") {
SelectAction = val => {
MySelectMainElement.Cli...
Логирование
Хочется логировать все действия, которые
делают элементы
Хочется управлять этим логированием
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...
VIAction для одного элемента
VIAction для одного элемента
new RadioButtons(“Сенсорный экран”,
“#sensorScreen”) {
VIAction = (viElement, text, viAction)...
О Названии или AI vs VI
Artificial Intelligence
Virtual Intelligence
Сайт
Сайт
Страница1
Страница2
Секция1
Секция2
Элемент
Секция
Элемент
Yandex QA Tool
Yandex QA Tool
PageObjects
Block
HtmlElement
Block
V I Q A
VISite
VIPage
VIElement
VIElement
VISite
WebDriver
Общие настройки (Логирование, Таймауты)
Домен
Каскадная инициализация Страниц
OpenPage/OpenHomePage
Тест
site.OpenHomePage();
{
var _ = HomePage;
_.TextFieldFrom.Input("1000");
_.TextFieldTo.Input("2000");
_.MyCheckbox.Che...
VI-элемент
Простые:
Button, CheckBox, Link, TextArea,
TextField, Clickable, Text, ClickableText
Сложные:
CheckList, RadioB...
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(...
Fill Form
Быстрое Массовое заполнение элементов
ISetValue из данных
Множество Элементов
Заполнение в Selenium
driver.FindElement(Locators.FromTextField).SendKeys("1000");
driver.FindElement(Locators.ToTextField...
Заполнение в VIQA
{
var _ = ProductPage.FilterSection;
_.TextFieldFrom.Input("1000");
_.TextFieldTo.Input("2000");
_.WiFiC...
Fill Form
ProductPage.FilterSection.FillForm(MyProduct);
Форма
Работа с формой описывается отдельно
Форма заполняется из бизнес сущности/ей
Одна строчка в коде
VI-элементы: More
А также:
Стабильный поиск элемента
Встроенная Проверка уникальности элемента
Стабильное нажатие элементо...
Еще плюшки
Драйвер стартует при первом вызове Open
Браузер открывается на весь экран
KillAllRunWebDrivers
Написание тестов
Создаем Сайт. Настраиваем его
Создаем страницы/Секции VIElement-ов
Описываем-обучаем элементы для каждой ...
VIQA Profit
Обучаемые Веб Элементы
Использование Интерфейсов
Простота использования
Шаблоны PageObjects, каскадная
инициал...
VIQA Profit
Встроенные логирование и алертинг
Широкие возможность настройки
Фреймворка (свой логгер, настройки
webDriver, ...
Планы
Java
Блог
Английское Комьюнити
Ряд других проектов по тестированию
Попробуйте сами 
Роман Иовлев
Email: viqablog@gmail.com или
romanyister@gmail.com
GitHub
https://github.com/Supreme85/VIQ...
VIQA Web UI Testing Tool
VIQA Web UI Testing Tool
VIQA Web UI Testing Tool
Upcoming SlideShare
Loading in …5
×

VIQA Web UI Testing Tool

414 views

Published on

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

Вика желает вам интересной и приятной работы.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
414
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

VIQA Web UI Testing Tool

  1. 1. V I Q A Virtual Intelligence Quality Assurance
  2. 2. Обо мне Роман Иовлев QAAutomation Lead
  3. 3. V I Q A Задача. Почему не хватило Selenium UI обертка - Yandex QA Tools достоинства Проблемы Yandex QA Tool и их решения в VIQA Описание концепции Virtual Intelligence Плюшки VIQA и расширение PageObjects Видео примеры Что дальше
  4. 4. Virtual Intelligence Quality Assurance Tool .Net C# Selenium 2.X PageObjects https://github.com/Supreme85/VIQAUITestingTool
  5. 5. Задача Тестирование Web UI Интеграционное тестирование Like User Behavior Tests Легко поддерживаемые, логирование и пр.
  6. 6. Selenium? Довольно низкоуровневый язык Есть только абстрактный WebElement Нет таких понятий как сайт, страницы, блоки, html элементы
  7. 7. Зачастую тесты выглядят примерно так 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();
  8. 8. Надстройка над Selenium Yandex QA Tool Работает с понятными элементами: Button, Checkbox, TextInput Использует PageObjects и Blocks Хороший инструмент для тестирования UI, но...
  9. 9. Кнопка <input type=“button” value=“Найти”>
  10. 10. Кнопки бывают разные
  11. 11. Кнопки бывают разные
  12. 12. Кнопки бывают разные <a href=“…”> <span> <img src=“…”> Найти <span> </a>
  13. 13. Yandex QA Tool
  14. 14. Yandex QA Tool Написать свой класс отнаследовавшись от TypifiedElement
  15. 15. V I Q A new Checkbox(“My Checkbox") { ClickAction = () => MyElementForClick.Click(), GetLabelFunc = () => MyElementForLabel.Label, IsSelectedFunc = () => MyElementForClick.GetAttribute("checked") == "1", };
  16. 16. Интерфейсы (Checkbox) Атрибуты IsChecked Label Действия Click Check Uncheck SetValue
  17. 17. V I Q A Интерфейсы public interface ICheckbox : IClickable, ILabeled, ISetValue { void Check(); void Uncheck(); bool IsChecked(); }
  18. 18. Переопределение действия из нескольких шагов new DropDown("My Dropdown") { SelectAction = val => { MySelectMainElement.Click(); MySelectListElement.WithName(val).Click(); } };
  19. 19. Логирование Хочется логировать все действия, которые делают элементы Хочется управлять этим логированием
  20. 20. Yandex QA Tool
  21. 21. Yandex QA Tool Пишите свои классы
  22. 22. V I Q A Встроеный логер Кастомный логер IWebLogger VIAction
  23. 23. Настройка Логера new Site().Logger = MyLogger(); interface IWebLogger { void Event (string msg); void Error (string msg) } }
  24. 24. VIAction для всех элементов VIElement.DefaultViAction = (viElement, text, viAction) => { viElement.Logger.Event(“Do action: ” + text); viAction.Invoke(); }
  25. 25. VIAction для одного элемента
  26. 26. VIAction для одного элемента new RadioButtons(“Сенсорный экран”, “#sensorScreen”) { VIAction = (viElement, text, viAction) => { if (!FirstSensorRadioButton.IsDisplayed) SensorBlock.Click(); viAction.Invoke(); } };
  27. 27. О Названии или AI vs VI Artificial Intelligence Virtual Intelligence
  28. 28. Сайт Сайт Страница1 Страница2 Секция1 Секция2 Элемент Секция Элемент
  29. 29. Yandex QA Tool
  30. 30. Yandex QA Tool PageObjects Block HtmlElement Block
  31. 31. V I Q A VISite VIPage VIElement VIElement
  32. 32. VISite WebDriver Общие настройки (Логирование, Таймауты) Домен Каскадная инициализация Страниц OpenPage/OpenHomePage
  33. 33. Тест site.OpenHomePage(); { var _ = HomePage; _.TextFieldFrom.Input("1000"); _.TextFieldTo.Input("2000"); _.MyCheckbox.Check(); _.MyRadioButtons.Select("да"); _.SearchButton.Click(); } Assert.IsNotNull(SearchPage.ExpectedElement.WaitWebElement());
  34. 34. VI-элемент Простые: Button, CheckBox, Link, TextArea, TextField, Clickable, Text, ClickableText Сложные: CheckList, RadioButtons, Dropdown, DataForm
  35. 35. Block vs ViElement Форма для логина аналогична чекбоксу
  36. 36. Yandex QA Tool [FindsBy(How = How. ClassName, Using = “my-checkbox")] public CheckBox MyCheckbox;
  37. 37. 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"));
  38. 38. Fill Form Быстрое Массовое заполнение элементов ISetValue из данных
  39. 39. Множество Элементов
  40. 40. Заполнение в 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();
  41. 41. Заполнение в VIQA { var _ = ProductPage.FilterSection; _.TextFieldFrom.Input("1000"); _.TextFieldTo.Input("2000"); _.WiFiCheckbox.Check(); _.SensorScreenRadioButtons.Select("да"); _.ProcessorTypesChecklist.CheckGroup( new[]{"Apple A5", "Apple A6", "Apple A7"}); }
  42. 42. Fill Form ProductPage.FilterSection.FillForm(MyProduct);
  43. 43. Форма Работа с формой описывается отдельно Форма заполняется из бизнес сущности/ей Одна строчка в коде
  44. 44. VI-элементы: More А также: Стабильный поиск элемента Встроенная Проверка уникальности элемента Стабильное нажатие элементов Переопределение действий для любых VIElements Логирование всех действий и результатов по умолчанию
  45. 45. Еще плюшки Драйвер стартует при первом вызове Open Браузер открывается на весь экран KillAllRunWebDrivers
  46. 46. Написание тестов Создаем Сайт. Настраиваем его Создаем страницы/Секции VIElement-ов Описываем-обучаем элементы для каждой страницы Описываем Действия со страницами Составляем тесты
  47. 47. VIQA Profit Обучаемые Веб Элементы Использование Интерфейсов Простота использования Шаблоны PageObjects, каскадная инициализация элементов
  48. 48. VIQA Profit Встроенные логирование и алертинг Широкие возможность настройки Фреймворка (свой логгер, настройки webDriver, таймауты и прочее) Множество небольших но приятных мелочей
  49. 49. Планы Java Блог Английское Комьюнити Ряд других проектов по тестированию
  50. 50. Попробуйте сами  Роман Иовлев Email: viqablog@gmail.com или romanyister@gmail.com GitHub https://github.com/Supreme85/VIQAUITestingTool http://vk.com/viqatools

×