Сравнение библиотеки тестирования пользовательского интерфейса Swing: FEST, WindowTester Pro и т. Д. - PullRequest
26 голосов
/ 09 мая 2011

Я не пытаюсь повторять такие вопросы, как этот:

Структура модульного тестирования для Swing UI

Что я хотел бы знать, так этоУ кого-нибудь есть хорошие сравнения для различных библиотек тестирования Swing Unit, таких как:

Мы никогда не проводили тестирование GUI, поэтому мы не знакомы с ошибками, которые могут появиться впереди.

Заранее спасибо.

Ответы [ 4 ]

9 голосов
/ 09 июня 2011

У меня был довольно неплохой опыт работы с Abbot и FEST , обе библиотеки с открытым исходным кодом для тестирования Swing UI.

Abbot, похоже, больше не поддерживается;в это было немного трудно войти, потому что рекордер не генерировал сценарии "достаточно хорошо".На самом деле, я использовал рекордер, чтобы «выучить» язык сценариев (теги XML), и, наконец, сам написал сценарии непосредственно с помощью простого текстового редактора.Это сработало довольно хорошо.

FEST использует другой подход, в котором вы должны кодировать (на Java) свои тесты пользовательского интерфейса.Это делает его инструментом, зарезервированным для разработчиков Java, тогда как Abbot может использоваться другими людьми (например, тестерами QA Team).

Основные проблемы с обоими инструментами и, возможно, с любым инструментом тестирования пользовательского интерфейса:

  • , чтобы найти способ уникальной идентификации компонентов без использования их позиции или текстового содержимого (которое может меняться от одной ревизии к другой или затрудняет тестирование одного и того же приложения в другом Locale)
  • до использовать правильное время в сценариях: эти инструменты тестирования могут запускать ваш пользовательский интерфейс намного быстрее, чем пользователь, поэтому ваш пользовательский интерфейс может быть недостаточно быстрым для них (например, можетпотребуется несколько десятков мсек, чтобы открыть диалоговое окно, и даже больше, чтобы заполнить таблицу из базы данных)

Для обеих проблем есть решение.

Для идентификации компонентов я настоятельносоветуем назвать все компоненты Swing (используя Component.setName()) в пользовательском интерфейсе и использовать для этого стратегию именования , которая может гарантировать, что никогда не будет 2 comкомпоненты с одинаковыми именами видны одновременно.В библиотеке guts-gui я даже разработал стратегию, которая автоматически называет компоненты Swing , которые хранятся в виде полей на панелях, это помогает добавлять имена компонентов после кодирования приложения.

Для синхронизации сценариев обе платформы принимают значение тайм-аута в ожидании появления диалога;Вы должны выбрать наилучшее значение, учитывая тот факт, что ваши тесты могут выполняться на разных типах машин с более или менее доступной мощностью.Вы должны использовать тайм-аут, который достаточно велик, чтобы скрипт не сообщал о ложных негативах (например, диалоговое окно, которое появляется через 1 секунду, тогда как скрипт ждет только 500 мс), но также не слишком долго, чтобы при наличии реальногоошибка (например, ожидаемый диалог никогда не появляется).Я предлагаю использовать время ожидания от 2 до 5 секунд, которое должно подходить для большинства платформ тестирования и большинства приложений.

Надеюсь, это поможет.

5 голосов
/ 07 июня 2011

Джемми предоставляет достаточно хорошие возможности для тестирования пользовательского интерфейса.Хотя это не было бы идеальным решением для тестирования JUnit, его можно легко расширить в соответствии с вашими целями.

Я не уверен насчет других инструментов тестирования пользовательского интерфейса, но по сравнению с RFT онопредоставляет вам дескриптор фактического объекта пользовательского интерфейса (RFT возвращает прокси-объект).Это может быть полезно из моего опыта.

Это проект с открытым исходным кодом (лицензируется по CDDL) и активно разрабатывается.

Я думаю, что другие популярные (или раньше ??)был jfcUnit.Хотя я не думаю, что это находится в стадии активной разработки.

3 голосов
/ 06 июня 2011

Есть много факторов, которые необходимо учитывать. Запись / Воспроизведение, Поддержка модульных тестов, Характер изменения кода, Лицензирование, Стоимость, поддержка нескольких платформ, Тестирование с множественным интерфейсом, поддержка тестирования i18n ... как выглядит ваш список?

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

IBM Rational Functional Tester :

Имеет возможность записывать сценарии и воспроизводить их. Он поддерживает пункты проверки. Один из самых больших плюсов - изменение кода не требуется. RFT модифицирует JVM и использует расширения доступности Java для записи и тестирования. Мы используем его в основном для Java (качели / awt с большим количеством 2D и диалоговых операций). Он также работает с браузерами.

RFT предоставляет два механизма для идентификации элементов GUI. Один использует карту объекта. Это очень слабое и имеет проблемы в долгосрочной ремонтопригодности. Использование «find» API более удобно для программистов, но требует изменения кода. Помогает также наличие всех объектов с именами.

Совсем не подходит для модульного тестирования.

Работает с Windows и Linux.

Очень дорогая плавающая лицензия находится в диапазоне 12000USD, фиксированная лицензия будет стоить половину этого. Все узлы (запись тестов и запуск тестов) нуждаются в лицензии. Цены приблизительные и старые, но они дадут представление.

Требуется настоящий сеанс графического интерфейса на окнах. (Это может быть нормально на Linux с VNC)

Джемй : Мы перешли на Джемми для нового тестирования. Поддерживает Windows, Linux. Раньше он был бесплатным, не уверен, каков план Oracle на него. Мы добавили наш тестовый слой поверх jemmy - для утверждений и других механизмов проверки. В этой презентации, посвященной средству тестирования jemmy , более подробно рассказывается о jemmy.

2 голосов
/ 10 сентября 2015

В 2012 году @AlexRuiz, главный разработчик FEST, решил прекратить разработку FEST

База кода FEST позже была разветвлена ​​в AssertJ-Swing .

Пропустите FEST и начните с AssertJ-Swing.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...