Codedui Или Ranorex? Автоматизация Функционального Тестирования .Net-Приложений

Автор статьи - Татьяна Курносова, но она отправилась покорять горы Кыргызстана.

Поэтому для меня было честью опубликовать этот пост. В компании 2ГИС, помимо известного Рабочий стол , мобильный И В сети -приложения, разрабатываются многие внутренние продукты предприятия.

Эти продукты скрыты от глаз пользователей, однако именно с их помощью проводится колоссальная работа по обеспечению всей инфраструктуры 2ГИС картографическими и справочными данными.

Обработка этих данных трудоемка и требует безошибочных расчетов, поэтому перед «наймом» вся продукция тщательно тестируется.

В этой статье я расскажу, как мы выбирали инструменты, как анализировали их технические возможности, чтобы они вписались в нашу инфраструктуру, и на чем мы остановились.



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

В свое время перед нами стояла задача выбрать пакет, подходящий для тестирования пользовательского интерфейса используемых продуктов.

Мы охватываем все, что можно автоматизировать с помощью автоматизированных тестов, и графический интерфейс не является исключением.

Для этого, как известно, существуют инструменты, позволяющие моделировать действия пользователя.

Учитывая тот факт, что тестируемые продукты реализованы на .

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

Из большого выбора инструментов, представленных на рынке, мы остановились на двух.

Первый — CodedUI, входящий в состав Microsoft Visual Studio, которым мы активно пользуемся.

Второй — Ranorex, так как совместим с Visual Studio, имеет удобный интерфейс и положительные отзывы тестировщиков.

Кодированный пользовательский интерфейс — это одно из решений, входящих в состав Microsoft Visual Studio Premium/Ultimate, предоставляющее доступ к библиотекам для разработки тестов.

Инструменты автоматизации Ranorex — полноценная среда разработки, а также набор инструментов и библиотек для написания тестов.

Далее нам предстояло сделать выбор в пользу одного из этих продуктов.



Критерии сравнения

Мы сформулировали основные критерии, по которым сравнивали пакеты: Поддержка динамически генерируемых графических элементов управления.

Настраиваемая система поиска управления Простая поддержка тестирования на основе данных Возможность разработки собственных модулей (фреймворков) и использования их при разработке тестов на C#.

Поддержка запуска тестов на сервере непрерывной интеграции (TeamCity) Формирование информативных отчетов по результатам запуска тестов Возможность интеграции тестов с тест-кейсами системы управления тестированием (TMS).

Легко освоить и использовать тестировщиками.



Тестовый макет

Для сравнения возможностей было разработано тестовое приложение с графическим интерфейсом на базе Windows Presentation Foundation (WPF).

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



Сравнение товаров по критериям



1. Поддержка динамически генерируемых элементов управления.

Кодированный пользовательский интерфейс CodedUI предоставляет объект класса UIMap, который обеспечивает доступ ко всем элементам пользовательского интерфейса приложения.

Вы можете динамически получить любой элемент интерфейса, зная его имя, или пройдя через цепочку вложенных элементов, например: «Первое текстовое поле на первой вкладке»

  
   

this.UIViewmodeltitleWindow.UIItemTabList.Tabs[0].

GetChildren()[1].

GetChildren()[1]

Однако такая запись может быть сгенерирована только непосредственно в тестовом коде.

Ранорекс В Ranorex аналогом UIMap является GUI Object Repository. Для доступа к элементам используется язык XPath, поэтому выбрать элемент можно, сгенерировав соответствующий запрос с помощью встроенного рекордера.

«Первое текстовое поле на первой вкладке»

/form[1]/tabpagelist[1]/tabpage[1]/element[@classname='CardEditView']/text[4]

Кодированный пользовательский интерфейс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ранорекс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

По этому критерию Ranorex выглядит предпочтительнее, так как имеет более простую (легкую в освоении) систему работы с элементами управления.



2. Гибкая и настраиваемая система управления поиском.

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

Ранорекс В Ranorex XPath выражения называются RanoreXPath. Если элемент не имеет уникального имени, то вы можете получить к нему доступ одним действием, зная для него выражение XPath (см.

предыдущий пункт).

Кодированный пользовательский интерфейс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ранорекс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Дополнительные баллы Ranorex за поддержку XPath по умолчанию.



3. Простая поддержка тестирования на основе данных.

Тестирование, управляемое данными, — это подход к автоматизации тестирования, основанный на использовании наборов тестовых данных, расположенных в отдельном месте хранения от исходного кода теста.

Кодированный пользовательский интерфейс При разработке тестов CodedUI используется платформа MSTest для организации самой структуры теста и запуска теста, который содержит функциональные возможности для создания тестов, управляемых данными.

Любой тест можно связать с наборами данных из файла CSV, XML или базы данных.

Ранорекс Ranorex также имеет возможность разрабатывать тесты, управляемые данными, но исключает формат XML для данных.

Видимо, разработчики Ranorex посчитали это довольно сложным для тестера.

Кодированный пользовательский интерфейс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ранорекс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

По этому критерию преимущество имеет CodedUI, поскольку формат XML очень распространен в наших продуктах, и тестировщику во многих случаях с ним удобнее работать.



4. Возможность разработки фреймворков для тестирования

Опыт автоматизации тестирования показывает, что в любом тестовом проекте рано или поздно выявляется некий базовый функционал, позволяющий сократить тестовый код. Эта функциональность затем превращается в небольшую тестовую среду.

На этом этапе уже можно строить тесты из различных методов этого фреймворка.

В дальнейшем мы собираемся использовать выбранный нами инструмент в рамках такой структуры.

Фреймворк инкапсулирует работу с CodedUI или Ranorex, необходимую для доступа к элементам управления пользовательского интерфейса, и предоставляет набор методов, которые можно связать с действиями пользователя, например, «Открыть карту», «Заполнить форму».

Любой UI-тест состоит из набора вызовов таких методов и проверки корректности обработки данных тестируемого приложения.

Цель этого критерия — понять, насколько удобно разрабатывать тестовую среду, выбрав тот или иной инструмент. Кодированный пользовательский интерфейс При использовании тесты CodedUI разрабатываются в Visual Studio на C#.

Тесты можно расширять, уточнять, рефакторить до бесконечности традиционным способом, при этом можно привлекать разработчиков.

Ранорекс Ranorex предоставляет собственную IDE — Ranorex Studio, которая основана на SharpDevelop и поэтому имеет интерфейс и принцип работы, очень похожий на Visual Studio. Ranorex имеет удобный инспектор элементов и возможность создавать тесты практически одним щелчком мыши.

Кроме того, возможна разработка дополнительных программных модулей, которые затем будут использоваться для создания более сложных сценариев тестирования.

Однако если модуль разрабатывает не тестировщик, а программист или специалист по автоматизации (как в нашем случае), ему удобнее использовать Visual Studio, так как там более подходящая система отладки ReSharper и т.п.

Кодированный пользовательский интерфейс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ранорекс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Разработка фреймворка — это, в общем-то, не задача тестировщика, поэтому нужен инструмент, более подходящий для разработки.

В целом Ranorex Studio по этому показателю уступает CodedUI.

5. Поддержка запуска тестов на CI-сервере.

Тестируемые приложения развертываются на сервере непрерывной интеграции (сервере сборки), которым является TeamCity. Согласно командным соглашениям, все тесты фиксируются в репозитории тестируемого продукта.

Это позволяет нам совместно использовать код и одновременно обновлять и собирать приложение, а также тестировать код на сервере сборки.

Для тестов GUI должна остаться та же схема работы.

Кодированный пользовательский интерфейс TeamCity позволяет легко подключать тесты, разработанные с использованием фреймворков MSTest и NUnit. Ранорекс Ranorex, в свою очередь, может компилировать тестовые комплекты в исполняемый файл, который затем можно просто запустить как отдельную задачу сборки TeamCity. Кодированный пользовательский интерфейс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ранорекс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

По этому критерию инструменты одинаково удобны в использовании.



6. Формирование информативных отчетов по результатам прогона

Кодированный пользовательский интерфейс MSTest печатает результаты в формате TRX. Это XML-документ, но его довольно сложно прочитать невооруженным глазом, да и не нужно, поскольку TeamCity предоставляет тот же отчет в формате CSV после запуска тестов.

Ранорекс IDE Ranorex предоставляет отличные отчеты с иллюстрациями и пояснениями.

Однако для этого необходимо запустить тесты из самой Ranorex Studio. Скомпилированные тесты после запуска возвращают XML-отчет Ranorex, который затем можно преобразовать в xUnit. Кодированный пользовательский интерфейс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ранорекс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Оба случая не дают окончательного желаемого типа отчета об испытаниях.

Однако мы уже внедрили утилиту, которая может создавать тестовые прогоны в нашей системе управления тестированием (TMS) и импортировать результаты завершенных автоматических тестов.

При этом исходный формат отчета может быть как xUnit, так и CSV. В TMS отчет выглядит понятным, понятным для человека и демонстрирует общую картину тестирования на данный момент.

7. Возможность интеграции тестов с тест-кейсами TMS.

Помимо импорта результатов тестирования в систему управления тестированием, мы также импортируем сами тестовые примеры.

Как это произошло: При разработке автоматизированного теста тестировщик записывает пошаговое описание прямо в код тестового класса, используя специальные атрибуты.

Также с помощью атрибутов указывает, к какому набору и разделу принадлежит данное дело.

Затем с помощью специальной утилиты импортирует все случаи тестового проекта в соответствующий проект TMS. Импорт можно выполнить вручную или как часть задачи сборки TeamCity. Входными данными для этой утилиты является DLL-файл тестового проекта.

Мы хотели бы использовать эту возможность при разработке GUI-тестов.

Это означает, что вам нужна возможность подключать свои библиотеки и редактировать тесты.

Кодированный пользовательский интерфейс Visual Studio позволяет просматривать и редактировать тестовый код CodedUI, даже если он был записан с помощью встроенного средства записи.

Это дает возможность задать необходимые атрибуты для синхронизации с TMS. А тестовый проект по умолчанию компилируется в библиотеку DLL, которую затем можно использовать для импорта кейсов.

Ранорекс В Ranorex Studio тестовый проект компилируется в exe-файл.

То есть при текущей реализации нашей утилиты нет возможности использовать ее как источник тест-кейсов.

Кодированный пользовательский интерфейс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ранорекс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Таким образом, используя CodedUI, нам будет проще привязать нашу систему интеграции к новым тестам.



8. Простота обучения и использования тестировщиками.

Кодированный пользовательский интерфейс 1. После создания нескольких примеров на нашем тестовом приложении сразу возникли проблемы, когда встроенный рекордер записывал действия, связанные с сознанием динамических элементов управления.

При повторном запуске теста имя элемента управления изменилось, и тест завершился неудачно.

Чтобы избежать этого и сделать тесты более универсальными, нам пришлось редактировать код теста вручную.

2. Разрабатывать тесты с использованием CodedUI можно только в среде Visual Studio. Но VS — очень сложный и громоздкий инструмент для НЕпрограммиста.

Ранорекс Ranorex специально разработан как среда тестирования.

Это упрощает создание, запуск и просмотр результатов тестов.

Кроме того, после того, как мы разработали несколько примеров для тестового приложения, проблем с поиском динамических элементов ни разу не возникло.

Ranorex также успешно работал с приложениями .

NET WinForms, для которых нам не удалось запустить CodedUI. Кодированный пользовательский интерфейс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ранорекс

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Ranorex имеет более удобный для тестировщика интерфейс и систему работы с элементами.



Заключение

В заключение приведу сводную таблицу, основанную на описанных выше критериях:

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

возможность реализована

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

возможность не реализована

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

функция реализована и проста в использовании
Критерий Кодированный пользовательский интерфейс Ранорекс Поддержка динамически генерируемых элементов управления.



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Настраиваемая система поиска управления

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Простая поддержка тестирования на основе данных

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Возможность разработки собственных модулей.



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Поддержка запуска тестов в TeamCity

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Формирование информативных отчетов по результатам запуска тестов

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Возможность интеграции тестов с тест-кейсами TMS.

CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

Легко освоить и использовать тестировщиками.



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений



CodedUI или Ranorex? Автоматизация функционального тестирования .
</p><p>
NET-приложений

По выбранным нами критериям сравнения Ranorex получил более высокую оценку, главным образом, за счет своего удобства.

В процессе анализа мы привлекали тестировщиков к разработке небольших тестовых сценариев, и им было гораздо удобнее и понятнее работать с Ranorex. Если вы тестировщик и вам необходимо протестировать Windows-приложение с нуля и вы выбираете между покупкой лицензии на использование Visual Studio с поддержкой CodedUI или Ranorex, то выбор Ranorex будет более логичным.

Что касается наших проектов.

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

Например, приложение имеет интерфейс, который обрабатывает данные базы данных через API, сервисы интеграции синхронизируют данные с другими продуктами, а хранимые процедуры на уровне базы данных запускаются по расписанию и вычисляют значения некоторых полей.

И для каждой такой части разрабатывается свой набор тестов в виде отдельного приложения (тестовый проект = тестовый фреймворк, адаптированный под нужды тестирования продукта + множество тестов, объединенных в тестовые наборы).

Все тестовые проекты являются частью решения всего тестируемого продукта.

Нам нужно было добавить в эту структуру тестирование GUI. Поскольку Ranorex и CodedUI не сильно отличались по своим критическим параметрам, мы задумались о перспективах разработки тестов.

В конечном итоге выбор стоял между инструментом, в котором тестировщики отдельно от продукта и разработчиков будут писать GUI-тесты, и временем, потраченным на разработку всего необходимого (фреймворка, документации) для быстрой и удобной разработки тестов с помощью CodedUI. Поскольку во втором случае такую систему можно сделать более универсальной, мы выбрали CodedUI. Да, это означает больше часов разработки, но при этом у нас было какое-то универсальное решение для автоматизации функционального тестирования GUI всех Enterprise-продуктов компании.

Теги: #программирование #тестирование #C++ #тестирование ИТ-систем #.

NET #Visual Studio #2GIS #CodedUI #Ranorex

Вместе с данным постом часто просматривают: