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

Preview:

Citation preview

Identifier Deutsche Bank

IMPORTANT NOTES WHEN WORKING WITH SCREENSHOW'S

SAVE AS .PPTX ONLY

PRINTING INSTRUCTIONS In order to print correctly, ensure the following print settings are used: —  Color/grayscale: Color (regardless of printing in b/w) —  Scale to fit paper: ON —  Print hidden slides: OFF

WORKING WITH CHARTS: BEST PRACTICE Charts should use MS Graph. Note there are still printing issues when trying to print in greyscale. The best way to work with charts is: —  Copy MS graph objects off the edge of the slide —  Open charts by right-clicking on the MS Graph object and select:

Chart Object > Open —  Make required edits —  Copy the MS Graph object and paste as a picture :

Home > Clipboard > Paste > Paste Special > Picture (Enhanced metafile)

—  Position the chart on the slide and ungroup (Ctrl + Shift + G). This enables printing in greyscale

DISCLAIMER A disclaimer is not usually required for screenshows. However, it may be required depending on the presentation's contents/use. Users should consult Legal/Compliance as required.

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

Assertion Exceptions 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

Возможные фичи

•  Модальные окна •  Отдельный поток слушает открывающиеся новые модальные окна •  Предрегистрируем обработчик модального окна в тесте

•  Мониторинг зависания приложения

Recommended