Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Telerik RadControls в WPF приложении


(stas.hordiyenko) #1

Привет!

Дано: WPF приложение, в котором помимо стандартных контролов, еще к "счастью" используются нестандартные - RadControls от Telerik.

Задача: Автоматизировать данное приложение посредством любого инструментария на рынке.

Решение

В ходе инвестигейшина выяснилось, что в большинстве используемых контролов в приложении, не реализована поддержка AutomationPeer. Telerik не имплементировал данный механизм, поэтому автоматизация посредством CodedUI отпала. Контролы не распознаются, и соответственно методы и пропертя не экспоузятся для действий и верификаций.

Дальше пал взгляд на два других инструмента: Test Studio от тех самых Telerik, и студии от Ranorex. Второй еще не использовался в бою, а вот с первым идет работа. Telerik"и грозятся, что их инструмент сможет справиться со всеми их контролами. Убеждают, что у них есть классы-обертки для работы с их контролами, с которыми сейчас и работаю. Чем обеспокоен я? Я не сторонник инструментов Record&Playback. К тому же, платить за 60% функционала, который я не буду использовать при автоматизации - не хочется. Я хочу найти обычную библиотеку с доступным API, и писать код вручную.

Вопрос к Вам: Сталкивались ли вы с подобной ситуацией, и если да, то какой инструмент вы использовали для подобной адачи?

Мой инвестигейшин продолжается. Если интересно, могу периодически писать, как идет дело.

Спасибо.

 


(apetrovskiy) #2

Сталкивались с инфраджистиковским гридом (за три штуки продают плагин для QTP или Rational, Coded UI тоже видит с последним фиче-паком). Ну что делать, селект в гриде делали через MS UI Automation (бег перебором строк и проверкой значений) + клики через Win32 по подходящим строках, с Ctrl.

 

Что можно посоветовать:

1) скачать и поставить Feature Pack2 к Coded UI (dll'ка где-то на codeplex.com, забыл название - омжно поискать, обычно в членах микрософтовских проектов есть мембер Microsoft). С этим паком видит заметно больше (у меня в отделе Coded UI не используется, просто проверяли, как работает)

2) UIA Verify 2.0 http://uiautomationverify.codeplex.com/releases/view/63022 покажет вам, что видит UIACOMWrapper (http://uiacomwrapper.codeplex.com/ ). Версия 1.0 работает на стандартной MS UI Automation.

3) http://uiautomation.codeplex.com/ соединяет в себе стандартную MS UI Automation и работу через Win32. Мы пользуемся этим. Можно не пользовать record/playback, но рекомендуется посматривать на контролы через UIAutomationSpy, он и код покажет для контрола (как сможет). Платить точно ничего не надо.

4) ну и куча всего ещё: голая MS UI Automation (версия для C++ самая "сильная"), white, какой-то из wati*, кажется watin.


(Mykhailo Poliarush) #3

ну не объязательно использовать саму Test Studio от Telerik.

можно просто взять их фреймворк, бесплатный, и программировать на C# 

http://www.telerik.com/automated-testing-tools/free-testing-framework.aspx

знакомые полльзовались этим фреймворком и были полностью удовлетворенны их разработкой, тем более, что это их контролы


(OlgaV) #4

и для их родных контролов есть

 


(apetrovskiy) #5

У нас народ даже пользовал их фреймворк для тестирования обычных WPF-приложений, вместо Coded UI - понравилось больше.  Вопрос, кстати, был "Вопрос к Вам: Сталкивались ли вы с подобной ситуацией, и если да, то какой инструмент вы использовали для подобной адачи?" Поэтому и рассматривать такую халяву, как "производитель предоставляет фреймворк" даже как-то странно. :)

Т.е., ответом могло бы быть: "а мы тестируем инфраджистикс без QTP и Rational так", "а мы тестируем девэкспресс без тесткомплита так". :) Например, в нашем случае это труднопробиваемый менеджмент, для которого необходимость тестирования приложения ещё не является обоснованием для покупки тула (ежемесячная прибыль от продукта всего лишь в сто-тысячу раз превышает затраты на такой тул), обоснование должно быть более обосновательным...


(Mykhailo Poliarush) #6

обоснования нету, потому что я не автоматизировал такие контролы

есть только информация от других людей, потому делюсь тем что есть :)


(stas.hordiyenko) #7

Большое спасибо Всем за ответы. Есть очень хорошие идеи. Мой инвестигейшин продолжается. Отпишусь позже, когда будут какие-либо существенные результаты.

У меня была идея инджектить на тестируемую форму два поля с кнопкой, хостить IronPython движок, и в автоматизированном тесте пейстить какое-либо выражение в первое текстовое поле, нажимать кнопку, его процессит движок Питона, и результат выводит во втором текстовом поле. Извращение еще то, но что-то в этом есть.

Вторая идея, это унаследоваться от RadControls, и реализовать OnAutomationPeer. Прокидывать прокси объект с необходимыми пропертями и методами и использовать из автотестов. Но изобретать велосип вместо фокуса на автоматизации не есть хорошо.


(apetrovskiy) #8

А вот есть же способ: http://testapi.codeplex.com/releases/view/60572 в архиве: Documentation -> Concepts -> Concepts -- Application Control. Позволяет запускать как out-of-process, так и in-process. WPF-приложения можно запускать как в отдельном треде (доступ через рефлексию), так и на том же самом треде, как и тестовый код (доступ через точечную нотацию). Кстати, один из авторов этого фреймворка является тест-менеджером WPF.