SlideShare a Scribd company logo
1 of 13
Download to read offline
Identifier
Deutsche Bank
WPF UI testing in Deutsche Bank
WPFA
Амир Ромашкин,
amir.romashkin@db.com
Автоматизированное тестирование
Короткие релизы
Сложные сценарии становятся легче
CI защищает от багов
Разработка и поддержка тестов
WPFA: внутренний продукт
• Рекомендован для WPF в Дойче Банке
• Доказанная эффективность
•  2.5 года
•  10 проектов
•  Десятки тысяч автотестов
• Активно развивается
ü  WPFA core
Ø  BDD via SpecFlow and ANTLR
.NET UI
Automation
library
QTP
Ranorex
White Coded UI
TestComplete
…
WPFA
Мир вокруг нас
.NET UI Automation: технология
• Microsoft (c)
• Различные технологии и платформы
• MSDN и community
Но мы создали свою!
Test
execution
.NET UI Automation: стандартное выполнение
Application process
Window
StackPanel
Border
TextBox
Label
Window element
Label
element
TextBox
element
Real visual tree
Automation
element tree
Access to visual
elements
.NET UI
Automation
Test runner process
WPFA: почти Snoop
Test method call interception
Injection into application via
ManagedInjector.dll
Elements manipulations via
InputSimulator.dll
AssertionExceptions propagated back
Test runner process Application process
WPFA: простейшая концепция
• Пишем простой юнит-тест.
• Выполняем его на UI потоке процесса приложения.
• При помощи WPF работаем с визуальным деревом.
WPFA: реализация концепции
• PoC: github.com/amirkaromashkin/wpfa
• Перехватим вызов конструктора при помощи Proxy
• Выполним DLL-injection в приложение как Snoop
• Наладим изнутри приложения связь с NUnit
• Будем маршаллировать вызовы методов в приложение
• Внутри процесса мы - хозяева:
•  Dispatcher.PushFrame поможет с ожиданием наступления
событий.
•  InputSimulator будет управлять мышкой и клавиатурой.
WPFA: полный доступ к приложению
"   Тестирование не UI-ых элементов(ViewModel, HTTP
запросы)
"   Создание Mock-ов прямо в тестах (Взаимодействие с
сервером, базой данных)
"   Всегда актуальное визуальное дерево
"   Полная поддержка кастомных контролов
"   Дебаг и диагностика (RoutedEvents, DataContext)
"   Может неузнаваемо изменить приложение
" ApplicationIdle зарезервирован
"   Модальные окна и другие PushFrame – отдельные
“приседания”
Заключение
• Полноценный WPFA нельзя вывести в open-source L
• Концепция реализуется просто
• Решение расширяемо при помощи других фреймворков
• Полный контроль это круто!
Контакты
•  Email: amir.romashkin@db.com
•  PoC on GitHub : github.com/amirkaromashkin/wpfa
Возможные фичи
• Модальные окна
•  Отдельный поток слушает открывающиеся новые модальные окна
•  Предрегистрируем обработчик модального окна в тесте
• Мониторинг зависания приложения

More Related Content

What's hot

QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщикаQA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщикаQAFest
 
Алексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationАлексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationOleg Poludnenko
 
Автоматизация функционального тестирования с использованием платформы MS Visu...
Автоматизация функционального тестирования с использованием платформы MS Visu...Автоматизация функционального тестирования с использованием платформы MS Visu...
Автоматизация функционального тестирования с использованием платформы MS Visu...Александр Шамрай
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовCOMAQA.BY
 
Новый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеНовый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеSQALab
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...COMAQA.BY
 
Free Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingFree Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingAlexandr Zinovyev
 
2014 ALM Summit - ALM and 1C
2014 ALM Summit - ALM and 1C2014 ALM Summit - ALM and 1C
2014 ALM Summit - ALM and 1CAlexey Lustin
 
статические анализаторы кода за и против
статические анализаторы кода  за и противстатические анализаторы кода  за и против
статические анализаторы кода за и противRoman Kalita
 
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...COMAQA.BY
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляCOMAQA.BY
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Ontico
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
 
Алексей Кабанов
Алексей КабановАлексей Кабанов
Алексей КабановSQALab
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsSQALab
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
 
Тестирование слоёного пирога
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирогаSQALab
 
WP как экспериментальная платформа
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформаSQALab
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 

What's hot (20)

QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщикаQA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
 
Алексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationАлексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous Integration
 
Автоматизация функционального тестирования с использованием платформы MS Visu...
Автоматизация функционального тестирования с использованием платформы MS Visu...Автоматизация функционального тестирования с использованием платформы MS Visu...
Автоматизация функционального тестирования с использованием платформы MS Visu...
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Новый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеНовый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проекте
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 
Free Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingFree Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testing
 
2014 ALM Summit - ALM and 1C
2014 ALM Summit - ALM and 1C2014 ALM Summit - ALM and 1C
2014 ALM Summit - ALM and 1C
 
Enter: testing
Enter: testingEnter: testing
Enter: testing
 
статические анализаторы кода за и против
статические анализаторы кода  за и противстатические анализаторы кода  за и против
статические анализаторы кода за и против
 
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуля
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
Алексей Кабанов
Алексей КабановАлексей Кабанов
Алексей Кабанов
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Тестирование слоёного пирога
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирога
 
WP как экспериментальная платформа
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформа
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 

Viewers also liked

Разработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPFРазработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPFCUSTIS
 
Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?GoSharp
 
Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...CUSTIS
 
Три истории микросервисов
Три истории микросервисовТри истории микросервисов
Три истории микросервисовCUSTIS
 
Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?CUSTIS
 
Опыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеОпыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеCUSTIS
 
Барьеры микросервисной архитектуры
Барьеры микросервисной архитектурыБарьеры микросервисной архитектуры
Барьеры микросервисной архитектурыCUSTIS
 

Viewers also liked (7)

Разработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPFРазработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPF
 
Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?
 
Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...
 
Три истории микросервисов
Три истории микросервисовТри истории микросервисов
Три истории микросервисов
 
Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?
 
Опыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеОпыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банке
 
Барьеры микросервисной архитектуры
Барьеры микросервисной архитектурыБарьеры микросервисной архитектуры
Барьеры микросервисной архитектуры
 

Similar to UI тестирование WPF приложений в Дойче Банке

зуева татьяна - опыт автоматизации тестирования в Agile проекте
зуева татьяна -  опыт автоматизации тестирования в Agile проектезуева татьяна -  опыт автоматизации тестирования в Agile проекте
зуева татьяна - опыт автоматизации тестирования в Agile проектеMagneta AI
 
SCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max KolodezniySCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max KolodezniyAlexey Krivitsky
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Как технологии изменили отрасль видеоконференций. Записки одного вендора.
Как технологии изменили отрасль видеоконференций. Записки одного вендора.Как технологии изменили отрасль видеоконференций. Записки одного вендора.
Как технологии изменили отрасль видеоконференций. Записки одного вендора.qcok
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...TrueConf
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIMoscowJS
 
«Winium — это как Selenium, только под Windows» – Глеб Головин, 2ГИС
«Winium — это как Selenium, только под Windows»  – Глеб Головин, 2ГИС«Winium — это как Selenium, только под Windows»  – Глеб Головин, 2ГИС
«Winium — это как Selenium, только под Windows» – Глеб Головин, 2ГИС2ГИС Технологии
 
Готовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации ТестированияГотовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации ТестированияCOMAQA.BY
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложенийОлег Винников
 
TrueConf на Бизнес-Видео-2016
TrueConf на Бизнес-Видео-2016TrueConf на Бизнес-Видео-2016
TrueConf на Бизнес-Видео-2016TrueConf
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикSQALab
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Alexander Babich
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 

Similar to UI тестирование WPF приложений в Дойче Банке (20)

зуева татьяна - опыт автоматизации тестирования в Agile проекте
зуева татьяна -  опыт автоматизации тестирования в Agile проектезуева татьяна -  опыт автоматизации тестирования в Agile проекте
зуева татьяна - опыт автоматизации тестирования в Agile проекте
 
SCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max KolodezniySCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max Kolodezniy
 
White automation
White automationWhite automation
White automation
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Как технологии изменили отрасль видеоконференций. Записки одного вендора.
Как технологии изменили отрасль видеоконференций. Записки одного вендора.Как технологии изменили отрасль видеоконференций. Записки одного вендора.
Как технологии изменили отрасль видеоконференций. Записки одного вендора.
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public API
 
«Winium — это как Selenium, только под Windows» – Глеб Головин, 2ГИС
«Winium — это как Selenium, только под Windows»  – Глеб Головин, 2ГИС«Winium — это как Selenium, только под Windows»  – Глеб Головин, 2ГИС
«Winium — это как Selenium, только под Windows» – Глеб Головин, 2ГИС
 
Готовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации ТестированияГотовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации Тестирования
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
 
TrueConf на Бизнес-Видео-2016
TrueConf на Бизнес-Видео-2016TrueConf на Бизнес-Видео-2016
TrueConf на Бизнес-Видео-2016
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
Wgforge CI/CD
Wgforge CI/CDWgforge CI/CD
Wgforge CI/CD
 

More from GoSharp

TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?GoSharp
 
Живые приложения с Rx
Живые приложения с RxЖивые приложения с Rx
Живые приложения с RxGoSharp
 
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...GoSharp
 
UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?GoSharp
 
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...GoSharp
 
За что не любить EF и чем его заменить
За что не любить EF и чем его заменитьЗа что не любить EF и чем его заменить
За что не любить EF и чем его заменитьGoSharp
 
MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)GoSharp
 
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийПаттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийGoSharp
 
Gosharp Intro
Gosharp IntroGosharp Intro
Gosharp IntroGoSharp
 
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETПроектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETGoSharp
 
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsМониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsGoSharp
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
 
ASP.NET Internals
ASP.NET InternalsASP.NET Internals
ASP.NET InternalsGoSharp
 
Кросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextКросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextGoSharp
 
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNextВнедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNextGoSharp
 
Будущее ASP.NET
Будущее ASP.NETБудущее ASP.NET
Будущее ASP.NETGoSharp
 
Коучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлидаКоучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлидаGoSharp
 
Взаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиВзаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиGoSharp
 
DevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектовDevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектовGoSharp
 
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компанииДоски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компанииGoSharp
 

More from GoSharp (20)

TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?
 
Живые приложения с Rx
Живые приложения с RxЖивые приложения с Rx
Живые приложения с Rx
 
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
 
UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?
 
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
 
За что не любить EF и чем его заменить
За что не любить EF и чем его заменитьЗа что не любить EF и чем его заменить
За что не любить EF и чем его заменить
 
MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)
 
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийПаттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложений
 
Gosharp Intro
Gosharp IntroGosharp Intro
Gosharp Intro
 
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETПроектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
 
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsМониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application Insights
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
ASP.NET Internals
ASP.NET InternalsASP.NET Internals
ASP.NET Internals
 
Кросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextКросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNext
 
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNextВнедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
 
Будущее ASP.NET
Будущее ASP.NETБудущее ASP.NET
Будущее ASP.NET
 
Коучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлидаКоучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлида
 
Взаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиВзаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработки
 
DevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектовDevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектов
 
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компанииДоски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компании
 

Recently uploaded (9)

MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 

UI тестирование WPF приложений в Дойче Банке

  • 1. Identifier Deutsche Bank WPF UI testing in Deutsche Bank WPFA Амир Ромашкин, amir.romashkin@db.com
  • 2. Автоматизированное тестирование Короткие релизы Сложные сценарии становятся легче CI защищает от багов Разработка и поддержка тестов
  • 3. WPFA: внутренний продукт • Рекомендован для WPF в Дойче Банке • Доказанная эффективность •  2.5 года •  10 проектов •  Десятки тысяч автотестов • Активно развивается ü  WPFA core Ø  BDD via SpecFlow and ANTLR
  • 4. .NET UI Automation library QTP Ranorex White Coded UI TestComplete … WPFA Мир вокруг нас
  • 5. .NET UI Automation: технология • Microsoft (c) • Различные технологии и платформы • MSDN и community Но мы создали свою!
  • 6. Test execution .NET UI Automation: стандартное выполнение Application process Window StackPanel Border TextBox Label Window element Label element TextBox element Real visual tree Automation element tree Access to visual elements .NET UI Automation Test runner process
  • 7. WPFA: почти Snoop Test method call interception Injection into application via ManagedInjector.dll Elements manipulations via InputSimulator.dll AssertionExceptions propagated back Test runner process Application process
  • 8. WPFA: простейшая концепция • Пишем простой юнит-тест. • Выполняем его на UI потоке процесса приложения. • При помощи WPF работаем с визуальным деревом.
  • 9. WPFA: реализация концепции • PoC: github.com/amirkaromashkin/wpfa • Перехватим вызов конструктора при помощи Proxy • Выполним DLL-injection в приложение как Snoop • Наладим изнутри приложения связь с NUnit • Будем маршаллировать вызовы методов в приложение • Внутри процесса мы - хозяева: •  Dispatcher.PushFrame поможет с ожиданием наступления событий. •  InputSimulator будет управлять мышкой и клавиатурой.
  • 10. WPFA: полный доступ к приложению "   Тестирование не UI-ых элементов(ViewModel, HTTP запросы) "   Создание Mock-ов прямо в тестах (Взаимодействие с сервером, базой данных) "   Всегда актуальное визуальное дерево "   Полная поддержка кастомных контролов "   Дебаг и диагностика (RoutedEvents, DataContext) "   Может неузнаваемо изменить приложение " ApplicationIdle зарезервирован "   Модальные окна и другие PushFrame – отдельные “приседания”
  • 11. Заключение • Полноценный WPFA нельзя вывести в open-source L • Концепция реализуется просто • Решение расширяемо при помощи других фреймворков • Полный контроль это круто! Контакты •  Email: amir.romashkin@db.com •  PoC on GitHub : github.com/amirkaromashkin/wpfa
  • 12.
  • 13. Возможные фичи • Модальные окна •  Отдельный поток слушает открывающиеся новые модальные окна •  Предрегистрируем обработчик модального окна в тесте • Мониторинг зависания приложения