Автоматизация тестирования десктоп-приложений

Содержание

Слайд 2

Автоматизация тестирования десктоп-приложений

О себе

Раньше

Сейчас

Главный специалист
автоматизированного
тестирования
кредитной системы

Автоматизация тестирования десктоп-приложений О себе Раньше Сейчас Главный специалист автоматизированного тестирования кредитной системы

Слайд 3

Автоматизация тестирования десктоп-приложений

Уровни автоматизации

Автоматизация тестирования десктоп-приложений Уровни автоматизации

Слайд 4

Автоматизация тестирования десктоп-приложений

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

Web-тестирование
Тестирование мобильных приложений
Тестирование десктоп-приложений

Автоматизация тестирования десктоп-приложений UI тестирование Web-тестирование Тестирование мобильных приложений Тестирование десктоп-приложений

Слайд 5

Автоматизация тестирования десктоп-приложений

Web

Автоматизация тестирования десктоп-приложений Web

Слайд 6

Автоматизация тестирования десктоп-приложений

Mobile

Автоматизация тестирования десктоп-приложений Mobile

Слайд 7

Автоматизация тестирования десктоп-приложений

Desktop

Автоматизация тестирования десктоп-приложений Desktop

Слайд 8

Автоматизация тестирования десктоп-приложений

Особенности десктоп-приложений

Должно быть развернуто и установлено
Зависят от операционной системы
Должны быть

Автоматизация тестирования десктоп-приложений Особенности десктоп-приложений Должно быть развернуто и установлено Зависят от
достаточные аппаратные ресурсы компьютера

Слайд 9

Автоматизация тестирования десктоп-приложений

Автоматизация тестирования десктоп-приложений

Слайд 10

Инструменты

Инструменты

Слайд 11

Автоматизация тестирования десктоп-приложений

Поиск элементов

Автоматизация тестирования десктоп-приложений Поиск элементов

Слайд 12

Автоматизация тестирования десктоп-приложений

Платные фреймворки

Автоматизация тестирования десктоп-приложений Платные фреймворки

Слайд 13

Автоматизация тестирования десктоп-приложений

Плюсы

быстрый старт
обучение,хорошая поддержка
широкий спектр платформ

Автоматизация тестирования десктоп-приложений Плюсы быстрый старт обучение,хорошая поддержка широкий спектр платформ

Слайд 14

Автоматизация тестирования десктоп-приложений

Минусы

Стоимость
Невозможность кастомизировать(нет исходного кода)

Автоматизация тестирования десктоп-приложений Минусы Стоимость Невозможность кастомизировать(нет исходного кода)

Слайд 15

Автоматизация тестирования десктоп-приложений

Фреймворки с открытым кодом

Автоматизация тестирования десктоп-приложений Фреймворки с открытым кодом

Слайд 16

Автоматизация тестирования десктоп-приложений

«Нестандартные» фреймворки
SikuliX
Robot framework
UI library
FlaUI
Selenium WebDriver
WinApp+Appium
Winium

Фреймворки

Автоматизация тестирования десктоп-приложений «Нестандартные» фреймворки SikuliX Robot framework UI library FlaUI Selenium WebDriver WinApp+Appium Winium Фреймворки

Слайд 17

Автоматизация тестирования десктоп-приложений

SikuliX

Автоматизация тестирования десктоп-приложений SikuliX

Слайд 18

Автоматизация тестирования десктоп-приложений

click("1534932430966.png")
sleep(1)
type("cmd\n")
sleep(1)
type("notepad\n")
sleep(1)
type("Hello! From SikuliX")

Пример

Автоматизация тестирования десктоп-приложений click("1534932430966.png") sleep(1) type("cmd\n") sleep(1) type("notepad\n") sleep(1) type("Hello! From SikuliX") Пример

Слайд 19

Автоматизация тестирования десктоп-приложений

Robot framework

Автоматизация тестирования десктоп-приложений Robot framework

Слайд 20

Автоматизация тестирования десктоп-приложений

*** Settings ***
| Library | AutoItLibrary
*** Variables ***

Автоматизация тестирования десктоп-приложений *** Settings *** | Library | AutoItLibrary *** Variables

| ${notepad++} |C:\\ProgramFiles\\Notepad++\\notepad++.exe
*** Test Cases ***
| Example |
| Run | ${notepad++}

Пример

Слайд 21

Автоматизация тестирования десктоп-приложений

Flaui

Автоматизация тестирования десктоп-приложений Flaui

Слайд 22

Автоматизация тестирования десктоп-приложений

using FlaUI.UIA3;
var app = FlaUI.Core.Application.Launch(“notepad.exe");
using (var automation =

Автоматизация тестирования десктоп-приложений using FlaUI.UIA3; var app = FlaUI.Core.Application.Launch(“notepad.exe"); using (var automation
new UIA3Automation()) {
var window = app.GetMainWindow(automation);
var button1 = window.FindFirstDescendant(cf => cf.ByText(“Save"))?.AsButton();
button1?.Invoke();
}

Пример

Слайд 23

Автоматизация тестирования десктоп-приложений

WinAppDriver

Автоматизация тестирования десктоп-приложений WinAppDriver

Слайд 24

Автоматизация тестирования десктоп-приложений

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app","Microsoft.WindowsNotepad");
NotepadSession = new WindowsDriver(new URL("http://localhost:8080"), capabilities);

Пример

Автоматизация тестирования десктоп-приложений DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("app","Microsoft.WindowsNotepad"); NotepadSession = new WindowsDriver(new URL("http://localhost:8080"), capabilities); Пример

Слайд 25

Автоматизация тестирования десктоп-приложений

Автоматизация тестирования десктоп-приложений

Слайд 26

Автоматизация тестирования десктоп-приложений

String apppath = "C:\\Windows\\System32\\notepad.exe";
String winiumdriverpath = "src\\Winium.Desktop.Driver.exe";
new DesktopOptions().setApplicationPath(apppath);
File drivePath =

Автоматизация тестирования десктоп-приложений String apppath = "C:\\Windows\\System32\\notepad.exe"; String winiumdriverpath = "src\\Winium.Desktop.Driver.exe"; new
new File(winiumdriverpath);
WiniumDriverService service = new WiniumDriverService. Builder(). usingDriverExecutable(drivePath) .usingPort(8080).buildDesktopService();
service.start();
WiniumDriver driver = new WiniumDriver(service, options);

Пример

Слайд 27

Автоматизация тестирования десктоп-приложений

Сравнение

Автоматизация тестирования десктоп-приложений Сравнение

Слайд 28

Автоматизация тестирования десктоп-приложений

Сравнение

Автоматизация тестирования десктоп-приложений Сравнение

Слайд 29

Автоматизация тестирования десктоп-приложений

Трудности с FlaUI

Высокий порог входа в проект – реализация сильно

Автоматизация тестирования десктоп-приложений Трудности с FlaUI Высокий порог входа в проект –
отличается от автотестов для веб-приложений, нужно понимание как работает драйвер

Слайд 30

Автоматизация тестирования десктоп-приложений

API Webdriver

Автоматизация тестирования десктоп-приложений API Webdriver

Слайд 31

Автоматизация тестирования десктоп-приложений

Итог

Автоматизация тестирования десктоп-приложений Итог

Слайд 32

Автоматизация тестирования десктоп-приложений

Проблемы с кастомным драйвером

Нет реализации некоторых команд

Автоматизация тестирования десктоп-приложений Проблемы с кастомным драйвером Нет реализации некоторых команд

Слайд 33

Автоматизация тестирования десктоп-приложений

Решение

Доработка существующих команд
Реализация новых команд

Автоматизация тестирования десктоп-приложений Решение Доработка существующих команд Реализация новых команд

Слайд 34

Автоматизация тестирования десктоп-приложений

Доработка

Необходимо добавить или изменить реализацию команды
Пример – добавить кастомный поиск

Автоматизация тестирования десктоп-приложений Доработка Необходимо добавить или изменить реализацию команды Пример –
элемента по определенному локатору

Слайд 35

Автоматизация тестирования десктоп-приложений

Решение

Находим FindElementExecutor
Получаем стратегию поиска
var searchStrategy = ExecutedCommand.Parameters["using"].ToString();
Реализуем логику
if (searchStrategy.Equals(“name")){
//твоя реализация
}

Автоматизация тестирования десктоп-приложений Решение Находим FindElementExecutor Получаем стратегию поиска var searchStrategy =

Слайд 36

Автоматизация тестирования десктоп-приложений

Добавить новую команду

Реализация команды – добавить в CommandExecutors
Включить в команды

Автоматизация тестирования десктоп-приложений Добавить новую команду Реализация команды – добавить в CommandExecutors
драйвера
Добавление команды в список команд
Добавление команды в словарь – связываем реализацию и API Webdriver

Слайд 37

Автоматизация тестирования десктоп-приложений

Реализация команды

internal class GetElementRectExecutor : CommandExecutorBase
{
protected override string

Автоматизация тестирования десктоп-приложений Реализация команды internal class GetElementRectExecutor : CommandExecutorBase { protected
DoImpl()
{
var registeredKey = this.ExecutedCommand.Parameters["ID"].ToString();
var element=this.Automator.ElementsRegistry.GetRegisteredElement(registeredKey);
DriverManager.GetActiveWindow();
var boundingRect = element.FlaUIElement.Properties.BoundingRectangle.Value;
var response = new Dictionary
{
{ "x", boundingRect.Left},
{ "y", boundingRect.Top},
{ "width", boundingRect.Width },
{ "height", boundingRect.Height }
};
return this.JsonResponse(ResponseStatus.Success, response);
}
}

Слайд 38

Автоматизация тестирования десктоп-приложений

Включить в драйвер
FlaUIDesktopDriver.csproj



Автоматизация тестирования десктоп-приложений Включить в драйвер FlaUIDesktopDriver.csproj

Слайд 39

Автоматизация тестирования десктоп-приложений

Добавление в список
DriverCommand.cs
public static readonly string GetElementRect = "getElementRect";

Автоматизация тестирования десктоп-приложений Добавление в список DriverCommand.cs public static readonly string GetElementRect = "getElementRect";

Слайд 40

Автоматизация тестирования десктоп-приложений

Добавление в словарь

UriDispatchTables.cs
private readonly Dictionary commandDictionary = new Dictionary

Автоматизация тестирования десктоп-приложений Добавление в словарь UriDispatchTables.cs private readonly Dictionary commandDictionary =
CommandInfo>();
public UriDispatchTables(Uri prefix)
{
this.InitializeSeleniumCommandDictionary();
}
private void InitializeSeleniumCommandDictionary()
{
this.commandDictionary.Add(DriverCommand.GetElementRect, new CommandInfo("GET","/session/{sessionId}/element/{id}/rect"));
}

Слайд 41

Автоматизация тестирования десктоп-приложений

Итоги

Поиск элементов
UISpy, Inspect, «свой» инструмент
Фреймворки
Нестандартные (SikuliX, Robot Framework)
UI Library (Flaui)
Selenium

Автоматизация тестирования десктоп-приложений Итоги Поиск элементов UISpy, Inspect, «свой» инструмент Фреймворки Нестандартные
WebDriver (Winium, WinApp)

Слайд 42

Автоматизация тестирования десктоп-приложений

Окупаемость

Окупаемость разработки автотестов
Всего 94 кейса
Трудоемкость:
ручного тестирования – 24,82Md/регресс
разработки автотестов –

Автоматизация тестирования десктоп-приложений Окупаемость Окупаемость разработки автотестов Всего 94 кейса Трудоемкость: ручного
358Md
358/24,82 = 14,4 регресса = 7,2 месяца
Поддержка(актуализация+фиксы)
1 неделя в месяц
Внедрение и доработка драйвера
Внедрение – 3 месяца
Доработка – 27 задач*3Md=81Md

Слайд 43

Автоматизация тестирования десктоп-приложений

Информация

Ссылки:
Спецификация WebDriver API - https://www.w3.org/TR/webdriver/
2. Документация UI-Automation - https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-fundamentals

@kyuzalovako

Karina
Kiuzalova

Автоматизация тестирования десктоп-приложений Информация Ссылки: Спецификация WebDriver API - https://www.w3.org/TR/webdriver/ 2. Документация
Имя файла: Автоматизация-тестирования-десктоп-приложений.pptx
Количество просмотров: 27
Количество скачиваний: 0