Автоматизация тестирования с помощью WinAutomationUI

Рассматривается использование инструмента WinAutomationUI для создания автоматизированных сценарных тестов на примере 1 + 1 = 2.

На инфостарте можно найти много публикаций, описывающие преимущества использования тестирования при разработке. На мой взгляд, основная причина почему массово не используется автоматизированное тестирование — отсутствие простого инструмента, которое обеспечивает это тестирование. С позиции разработчика — если я потратил на разработку час времени, не хочется тратить ещё час на создание теста. А если требуемое время сократить до 5 минут? Гораздо интересней.

Цель публикации познакомить с утилитой WinAutomationUI, более подробное описание можно найти на http://testingtool.ru.

Вам потребуется 5 минут времени. Всё.Так что, если картинка из заголовка не про Вас, пожалуйста, потратьте эти 5 минут.

Скачиваем два файла:

Архив с утилитой
Внешнюю обработку МенеджерСценарногоТеста

Распакуйте архив:

Открываем каталог ExternalAutomationUI и запускаем файл WinAutomationUI.exe

У вас откроется окно приложения, нажимаем Server->Start.

Если всё прошло хорошо, после старта у вас появится подменю Open localhost.

Нажав на которое, откроется окно браузера.

 

Подготовка окончена. Вытрем пот со лба.

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

2. Открываем любую конфигурацию (управляемые формы) в режиме предприятия и открываем обработку Менеджер сценарного теста. Нажимаем используемое API Automation UI, кнопку "Обновить список доступных приложений"и ставим флажок рядом с calc:

 

Далее 1) нажимаем на красную кнопочку

2) переходим в калькулятор

На калькуляторе нажимаем мышкой: «сброс», 1+1=2 и в завершении кликаем на панель с цифрами

3) Нажимаем завершить запись

4) Нажимаем преобразовать

Откроется вторая вкладка.

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

Проставим флажки по кнопке "1" на картинке.

Встанем на поле "Найти объект "2""

В командах API найдем "Сравнить данные", установим курсор мыши на эту команду и нажмем кнопку Добавить (3). Справа укажем представление 3 и выберем условие сравнение "Равно".

Нажмем кнопки 4 и кнопкой 5 запустим тест. Если всё сделано корректно, у вас откроется калькулятор, выполнится пример 1 + 1 = 2. И появится предупреждение, что ожидаемое значение 3 <>2.

Если у Вас в процессе выполнения возникнут сложности, обратитесь к видео инструкции:

30 Comments

  1. ivanov660

    Хорошая статья, молодец.

    Выдели только отдельно, что эта компонента является частью Фреймворка «Тестирование 3.0».

    Reply
  2. Alien_job

    А кнопками конфигуратора тоже можно так счелкать?

    Reply
  3. ivanov660

    Можно.

    Но есть некоторые особенности, которые зависят от целевого приложения.

    Чем хуже приложение поддерживает api automation ui, тем больше придется управлять мышкой (позиционировать внутри элемента интерфейса).

    Reply
  4. gaglo

    (3) Как узнать, «насколько хуже» приложение поддерживает api automation ui? Проверен ли ui на совместимость с конфигураторами разных версий ? Или это надо спрашивать про весь фреймворк? Вообще какие ограничения, несовместимости, и т.п.?

    На testingtool.ru ходил, за пять минут ни слова про ограничения не нашел, только про возможности…

    Reply
  5. ivanov660

    (4)

    1. Зависит от поставщика ПО и определяется опытным путем.

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

    3. Как выглядит работа с майкрософт api (в двух словах):

    а) есть интерфейс автоматизации тестирования от майкрософта (смотрите википедию там детальнее)

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

    в) если же не поддерживает или не полностью, то мы не можем нажать кнопки через этот api или не видим состав элементов вообще.

    4. Увидеть состав и описание свойств элемента (проверить «совместимость») можно, к примеру, через специальные инструменты (UISpy)

    5. Относительно 1С. Мы проверяли интерфейс управляемых форм. Результат следующий:

    а) Состав объектов и свойства доступны практически все, кроме «Поля табличного документа»

    б) Действия над кнопками и флажками поддерживаются

    в) С активными элементами выпадающих списков и другими элементами (выбрать из списка, раскрыть и др.) необходимо использовать «хук» управление мышкой — позиционирование внутри UI элемента управления и выполнить нажатие. В этом случае приложение через враппер для мышки будет перемещать курсор к элементу и выполнять команду нажатия.

    Reply
  6. Makushimo

    (5)

    Оптимальный api для 1С это автоматизированное тестирование от 1С для управляемых форм

    обычные формы в обычном приложении получается тестировать не получится?

    Reply
  7. ivanov660

    (6)

    1. получится тестировать обычные формы, используйте тип api: «Automation UI», как в примере.

    2. под оптимальным api от 1с я имел ввиду следующее: отработан (уже 3 года используем), создавать сценарии сейчас проще, удобнее, поддержка доступна всего функционала.

    3. сейчас мы поддерживаем три api:

    1c автоматизированное тестирование — для управляемых форм от 1С

    Automation UI — для любых десктопных приложений под Windows.

    Selenium — для тестирования приложений в браузерах (chrome, ie, ff, opera) под windows.

    4. функционал под два новых api сейчас отрабатывается и улучшается.

    5. если будут вопросы или проблемы пишите в issues на (https://github.com/ivanov660/TestingTool-3)

    Reply
  8. gaglo
    В наши задачи не входит тестирование

    Ну и на том спасибо…

    Reply
  9. Alien_job

    (3)

    Можно

    Не получилось

    Reply
  10. ivanov660

    (8)зачем вырезаете из контекста?

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

    2. Мы предлагаем БЕСПЛАТНО инструмент и методологию

    Reply
  11. ivanov660

    (9)

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

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

    Reply
  12. antz

    Не пашет(

    win10 64 бит.

    И ругается еще: «Режим менеджера тестирования не доступен. Большая часть функционала будет не доступна!»

    Reply
  13. ivanov660

    (12)

    1. Режим менеджера тестирования -это для api 1С. Надо будет пофиксить это сообщение для других типов api.

    2. Запустите с режимом включения лога следующей командой (WinAutomationUI.exe -Port 8080 -StartWebServer -EnableLog) или через меню «Option->Enable log»

    После этого должен сформироваться файл с логом в папке (WinAutomationUI *.txt), в который будут выводиться все сообщения отладочные.

    Если проблема с установкой hook, то в сообщении лога должно появится «can’t install hook». Это может являться ограничением в правах или блокировкой антивирусом.

    3. Сообщите, по результатам отладки.

    Reply
  14. antz

    (13) Как-то то ловит, то не ловит. Вот сейчас поймала, но поймала только это. Может, калькулятор не той системы?

    Reply
  15. ivanov660

    (14)

    1) Попробуйте все же включить логирование и посмотреть в сообщениях наличия ошибок или исключений.

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

    Reply
  16. antz

    (15) А, лог забыл приложить. Там примерно такое:

    20.12.2018 12:56:24: LogEvent: FilePath: C:UsersAntonDownloadsExternalAutomationUIWinAutomationUI.exe/www/rest.html

    20.12.2018 12:56:26: LogEvent: Калькулятор ApplicationFrameTitleBarWindow Window

    20.12.2018 12:56:26: LogEvent: el_window_p Калькулятор ApplicationFrameTitleBarWindow Window

    20.12.2018 12:56:26: LogEvent: el_window_main_p Калькулятор ApplicationFrameWindow Window

    20.12.2018 12:56:34: LogEvent: new Client

    20.12.2018 12:56:34: LogEvent: GET /rest.html?&Operation=record_stop&api=Automation%20UI HTTP/1.1

    Host: localhost:8080

    User-Agent: 1C+Enterprise/8.3

    Accept: */*

    Reply
  17. antz

    (15) На 1с-ном калькуляторе взлетело)

    Reply
  18. antz

    (15) Сценарий записал, но не запускает. Пишет «Режим менеджера тестирования не доступен. Большая часть функционала не доступна!»

    Reply
  19. ivanov660

    (18)

    1. Еще раз сообщение «Режим менеджера тестирования не доступен. Большая часть функционала не доступна!» имеет смысл, только для api автоматизированное тестирование 1С.

    2. Что значит не запускает? Должно что-то происходить: выдать сообщение, пройти по флажку, ошибку или еще что-то.

    Убедитесь что выполнены следующие условия:

    а) Используемый API: Automation UI

    б) В списке процессов выбран калькулятор (у меня выглядит так 1cv8v ‘Калькулятор’) (если выбран с индексом 0, то система будет сама искать по наименованию и это может выполняться очень медленно)

    в) В проекте выделены флажки все

    г) Попробуйте нажать «стоп» прежде.

    Reply
  20. antz

    (19) Не запускает — значит пишет сообщение «Режим менеджера тестирования не доступен. Большая часть функционала не доступна!» и усе.

    Reply
  21. ivanov660

    (16) Судя по логу, запись идет: el_window_p и el_window_main_p это найденный элемент и окно приложения.

    При ошибках будет выводится сообщение об ошибке и стек вызовов.

    rest.html?&Operation=record_stop&api=Automation%20UI — отвечает за команды передаваемые врапперу из 1С, завершить запись и api Autoamtion UI

    Есть еще вариант записи, вне 1С. Если открыть браузер и перейти на вкладку «record», то можно через браузер начать запись и завершить в обход (приложения 1С).

    Reply
  22. ivanov660

    (20) попробуйте нажмите кнопку «стоп» и затем «запуск»

    Reply
  23. ivanov660

    (20)попробуйте нажмите кнопку «стоп» и затем «запуск»

    Reply
  24. antz

    (23) ага, после стопа пошло, правда теперь ругается «Current element = null. Can’t find it.» Окошко калькулятора не закрывал.

    Reply
  25. ivanov660

    (24) Это сообщение говорит о том что он не нашел какой-либо элемент. Причиной может быть: не тот процесс, нет больше того процесса, изменились динамически свойства элемента.

    Могу посоветовать выполнить процедуру еще раз с самого начала.

    P.S. Думаю, следует в сообщение о проблемах поиска для этого api выдать дополнительную информацию по свойствам поиска.

    Reply
  26. antz

    (25) Спотыкается на первом шаге «НайтиОсновноеОкно «Калькулятор», хотя чего его искать — вот же оно висит)

    Попробовал все записать по новой — не записывает ни через 1С, ни через браузер, выдает «[]». Ладно, попозже продолжу, а то работа)

    Reply
  27. ivanov660

    (26) На последок, иногда hook может зависнуть. Помогает перезапуск win*.exe.

    Reply
  28. gaglo

    (10) Да чо так обижаться-то? Я понял. (?) Не согласны — переформулируйте ответ.

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

    2. Приложения на управляемых формах поддерживаются почти полностью (см. ответ (5) про ограничения)

    3. Обычные формы должны поддерживаться с типом api: «Automation UI», но их мы не проверяли, поскольку несовременно.

    4. Поскольку мы предлагаем БЕСПЛАТНО инструмент и методологию, их несовместимость с конкретными задачами и/или пользователями каждый проверяет сам на себе.

    5. Это уже от себя. Вырезал, потому что цитировать полный контекст не умею… Или много места займет.

    Reply
  29. ivanov660

    (28)

    1. Предыдущее замечание, на мой взгляд, довольно провокационное.

    2. Судя по расшифровке, вы поняли мысль.

    Однако, внесу замечание технического характера — универсальных механизмов тестирования UI интерфейса как черного ящика нет. Если взять другие инструменты, к примеру от smart bear Test Complete, то принцип и возможности аналогичные. Поэтому обещаний и гарантий, что решатся все проблемы не даем.

    Reply
  30. AlexKo

    (26)

    все записать по новой — не записывает ни через 1С, ни через браузер, выдает «[]». Ладно, попозже продолжу, а то работа)

    Возможно Вы переоткрывали калькулятор?

    Если происходит проблема, точно поможет закрытие WinAutomationUI/ открытие заново и повторное открытие обработки менеджера тестирования.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *