На инфостарте можно найти много публикаций, описывающие преимущества использования тестирования при разработке. На мой взгляд, основная причина почему массово не используется автоматизированное тестирование — отсутствие простого инструмента, которое обеспечивает это тестирование. С позиции разработчика — если я потратил на разработку час времени, не хочется тратить ещё час на создание теста. А если требуемое время сократить до 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.
Если у Вас в процессе выполнения возникнут сложности, обратитесь к видео инструкции:
Хорошая статья, молодец.
Выдели только отдельно, что эта компонента является частью Фреймворка «Тестирование 3.0».
А кнопками конфигуратора тоже можно так счелкать?
Можно.
Но есть некоторые особенности, которые зависят от целевого приложения.
Чем хуже приложение поддерживает api automation ui, тем больше придется управлять мышкой (позиционировать внутри элемента интерфейса).
(3) Как узнать, «насколько хуже» приложение поддерживает api automation ui? Проверен ли ui на совместимость с конфигураторами разных версий ? Или это надо спрашивать про весь фреймворк? Вообще какие ограничения, несовместимости, и т.п.?
На testingtool.ru ходил, за пять минут ни слова про ограничения не нашел, только про возможности…
(4)
1. Зависит от поставщика ПО и определяется опытным путем.
2. В наши задачи не входит тестирование конфигураторов разных версий, т.к. автоматизацию тестирования мы нацеливаем на режим предприятия. (Оптимальный api для 1С это автоматизированное тестирование от 1С для управляемых форм)
3. Как выглядит работа с майкрософт api (в двух словах):
а) есть интерфейс автоматизации тестирования от майкрософта (смотрите википедию там детальнее)
б) если приложение полностью поддерживает его, то мы можем достучаться до каждого элемента интерфейса — получить его свойства (положение, активность, текстовое содержимое и др.), выполнить типовые действия (нажатие кнопки, открытие списка, переключение чекбокса и др.)
в) если же не поддерживает или не полностью, то мы не можем нажать кнопки через этот api или не видим состав элементов вообще.
4. Увидеть состав и описание свойств элемента (проверить «совместимость») можно, к примеру, через специальные инструменты (UISpy)
5. Относительно 1С. Мы проверяли интерфейс управляемых форм. Результат следующий:
а) Состав объектов и свойства доступны практически все, кроме «Поля табличного документа»
б) Действия над кнопками и флажками поддерживаются
в) С активными элементами выпадающих списков и другими элементами (выбрать из списка, раскрыть и др.) необходимо использовать «хук» управление мышкой — позиционирование внутри UI элемента управления и выполнить нажатие. В этом случае приложение через враппер для мышки будет перемещать курсор к элементу и выполнять команду нажатия.
(5)
обычные формы в обычном приложении получается тестировать не получится?
(6)
https://github.com/ivanov660/TestingTool-3)
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 на (
Ну и на том спасибо…
(3)
Не получилось
(8)зачем вырезаете из контекста?
1. Тестировать работоспособность своих приложений должны сами разработчики — в данном случае специалисты 1с. (если они к нам обратятся, то мы сможем помочь в определенной степени)
2. Мы предлагаем БЕСПЛАТНО инструмент и методологию
(9)
1. Посмотрю, попробую сказать в чем проблема может быть.
2. Для записи нажатий мышки используется hook, поэтому если у вас сильно ограничены права, то он может не срабатывать. В этом случае поможет запуск winautomation в административном режиме.
Не пашет(
win10 64 бит.
И ругается еще: «Режим менеджера тестирования не доступен. Большая часть функционала будет не доступна!»
(12)
1. Режим менеджера тестирования -это для api 1С. Надо будет пофиксить это сообщение для других типов api.
2. Запустите с режимом включения лога следующей командой (WinAutomationUI.exe -Port 8080 -StartWebServer -EnableLog) или через меню «Option->Enable log»
После этого должен сформироваться файл с логом в папке (WinAutomationUI *.txt), в который будут выводиться все сообщения отладочные.
Если проблема с установкой hook, то в сообщении лога должно появится «can’t install hook». Это может являться ограничением в правах или блокировкой антивирусом.
3. Сообщите, по результатам отладки.
(13) Как-то то ловит, то не ловит. Вот сейчас поймала, но поймала только это. Может, калькулятор не той системы?
(14)
1) Попробуйте все же включить логирование и посмотреть в сообщениях наличия ошибок или исключений.
2) 10 винды под рукой нет, попробую развернуть на виртуалке и посмотреть что там происходит.
(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: */*
(15) На 1с-ном калькуляторе взлетело)
(15) Сценарий записал, но не запускает. Пишет «Режим менеджера тестирования не доступен. Большая часть функционала не доступна!»
(18)
1. Еще раз сообщение «Режим менеджера тестирования не доступен. Большая часть функционала не доступна!» имеет смысл, только для api автоматизированное тестирование 1С.
2. Что значит не запускает? Должно что-то происходить: выдать сообщение, пройти по флажку, ошибку или еще что-то.
Убедитесь что выполнены следующие условия:
а) Используемый API: Automation UI
б) В списке процессов выбран калькулятор (у меня выглядит так 1cv8v ‘Калькулятор’) (если выбран с индексом 0, то система будет сама искать по наименованию и это может выполняться очень медленно)
в) В проекте выделены флажки все
г) Попробуйте нажать «стоп» прежде.
(19) Не запускает — значит пишет сообщение «Режим менеджера тестирования не доступен. Большая часть функционала не доступна!» и усе.
(16) Судя по логу, запись идет: el_window_p и el_window_main_p это найденный элемент и окно приложения.
При ошибках будет выводится сообщение об ошибке и стек вызовов.
rest.html?&Operation=record_stop&api=Automation%20UI — отвечает за команды передаваемые врапперу из 1С, завершить запись и api Autoamtion UI
Есть еще вариант записи, вне 1С. Если открыть браузер и перейти на вкладку «record», то можно через браузер начать запись и завершить в обход (приложения 1С).
(20) попробуйте нажмите кнопку «стоп» и затем «запуск»
(20)попробуйте нажмите кнопку «стоп» и затем «запуск»
(23) ага, после стопа пошло, правда теперь ругается «Current element = null. Can’t find it.» Окошко калькулятора не закрывал.
(24) Это сообщение говорит о том что он не нашел какой-либо элемент. Причиной может быть: не тот процесс, нет больше того процесса, изменились динамически свойства элемента.
Могу посоветовать выполнить процедуру еще раз с самого начала.
P.S. Думаю, следует в сообщение о проблемах поиска для этого api выдать дополнительную информацию по свойствам поиска.
(25) Спотыкается на первом шаге «НайтиОсновноеОкно «Калькулятор», хотя чего его искать — вот же оно висит)
Попробовал все записать по новой — не записывает ни через 1С, ни через браузер, выдает «[]». Ладно, попозже продолжу, а то работа)
(26) На последок, иногда hook может зависнуть. Помогает перезапуск win*.exe.
(10) Да чо так обижаться-то? Я понял. (?) Не согласны — переформулируйте ответ.
1. Конфигураторы не проверяем, поскольку они очень смутно относятся к задаче тестирования готовых приложений 1С.
2. Приложения на управляемых формах поддерживаются почти полностью (см. ответ (5) про ограничения)
3. Обычные формы должны поддерживаться с типом api: «Automation UI», но их мы не проверяли, поскольку несовременно.
4. Поскольку мы предлагаем БЕСПЛАТНО инструмент и методологию, их несовместимость с конкретными задачами и/или пользователями каждый проверяет сам на себе.
5. Это уже от себя. Вырезал, потому что цитировать полный контекст не умею… Или много места займет.
(28)
1. Предыдущее замечание, на мой взгляд, довольно провокационное.
2. Судя по расшифровке, вы поняли мысль.
Однако, внесу замечание технического характера — универсальных механизмов тестирования UI интерфейса как черного ящика нет. Если взять другие инструменты, к примеру от smart bear Test Complete, то принцип и возможности аналогичные. Поэтому обещаний и гарантий, что решатся все проблемы не даем.
(26)
Возможно Вы переоткрывали калькулятор?
Если происходит проблема, точно поможет закрытие WinAutomationUI/ открытие заново и повторное открытие обработки менеджера тестирования.