2008-08-20 4 views
2

Наша компания в настоящее время создает инструмент для автоматизации автоматизации графического интерфейса для компактных рамочных приложений. Сначала мы искали множество инструментов, но никто из них не был прав для нас.GUI Automation testing - вопросы обработки окна

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

В целом инструмент отлично работает, но поскольку мы используем оконные ручки для ввода пользовательского ввода для моделирования, вы не можете делать очень много вещей. Например, нам невозможно получить имя элемента управления (мы просто получаем заголовок).

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

Есть ли другой (более простой) способ для выполнения таких задач (например, очередь сообщений или что-то еще)?

ответ

1

Если средство тестирования автоматизированного GUI обладает знаниями о структуре, в которой приложение написано, оно может использовать эту информацию для создания более совершенных или более сложных скриптов. TestComplete, например, знает о VCL и WinForms от Borland. Если вы тестируете сборку приложений с помощью Windows Presentation Foundation, у нас есть расширенная поддержка для этого build in.

2

Интересная проблема! Я не делал низкоуровневое (думаю, Win32) программирование Windows некоторое время, но вот что я буду делать.

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

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

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

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

(EDIT: Это также потрясающий инструмент QA во время бета-тестирования, например: только ваши пользователи записывают свои действия, и если есть сбой, у вас есть хороший шанс легко воспроизвести проблему, просто воспроизведя сценарий)

Удачи!

Карл

0

я, наконец, нашел решение для обмена данными между тестирующего-приложением и испытания приложений под-: Managed Spy. Это в основном сборка .NET-приложений поверх ManagedSpyLib.

ManagedSpyLib позволяет программный доступ к элементам управления Windows Forms другого процесса. Для этого он использует Window Hooks и файлы сопоставления памяти.

Спасибо всем, кто помог мне добраться до этого решения!

0

Managed Spy не обеспечивает решение для компактных приложений каркаса.

Компания Jamo Solutions (www.jamosolutions.com) отвечает требованиям для тестирования автоматизации на мобильных устройствах, в том числе компактных рамочных приложений .net.

1

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

Вот несколько сообщений о NUnitForms стоит читать

NUnitForms and failed DragDrop registration - problem of MTA vs STA

Compiled application exe GUI testing with NUnitForms