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

13
Identifier Deutsche Bank WPF UI testing in Deutsche Bank WPFA Амир Ромашкин, [email protected]

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

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

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

Амир Ромашкин, [email protected]

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

Автоматизированное тестирование

Короткие релизы

Сложные сценарии становятся легче

CI защищает от багов

Разработка и поддержка тестов

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

WPFA: внутренний продукт

•  Рекомендован для WPF в Дойче Банке •  Доказанная эффективность

•  2.5 года •  10 проектов •  Десятки тысяч автотестов

•  Активно развивается ü  WPFA core Ø  BDD via SpecFlow and ANTLR

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

.NET UI Automation

library QTP

Ranorex

White Coded UI

TestComplete

WPFA

Мир вокруг нас

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

.NET UI Automation: технология

•  Microsoft (c)

•  Различные технологии и платформы •  MSDN и community

Но мы создали свою!

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

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

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

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

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

WPFA: простейшая концепция

•  Пишем простой юнит-тест. •  Выполняем его на UI потоке процесса приложения. •  При помощи WPF работаем с визуальным деревом.

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

WPFA: реализация концепции

•  PoC: github.com/amirkaromashkin/wpfa

•  Перехватим вызов конструктора при помощи Proxy •  Выполним DLL-injection в приложение как Snoop •  Наладим изнутри приложения связь с NUnit •  Будем маршаллировать вызовы методов в приложение •  Внутри процесса мы - хозяева:

•  Dispatcher.PushFrame поможет с ожиданием наступления событий.

•  InputSimulator будет управлять мышкой и клавиатурой.

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

WPFA: полный доступ к приложению

"   Тестирование не UI-ых элементов(ViewModel, HTTP запросы)

"   Создание Mock-ов прямо в тестах (Взаимодействие с сервером, базой данных)

"   Всегда актуальное визуальное дерево "   Полная поддержка кастомных контролов "   Дебаг и диагностика (RoutedEvents, DataContext) "   Может неузнаваемо изменить приложение " ApplicationIdle зарезервирован "   Модальные окна и другие PushFrame – отдельные

“приседания”

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

Заключение

•  Полноценный WPFA нельзя вывести в open-source L •  Концепция реализуется просто •  Решение расширяемо при помощи других фреймворков •  Полный контроль это круто!

Контакты •  Email: [email protected] •  PoC on GitHub : github.com/amirkaromashkin/wpfa

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

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

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

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