Консультация № 186686
08.10.2012, 00:45
123.16 руб.
0 5 0
Уважаемые эксперты! Пожалуйста, оцените идею, недостатки/достоинства, возможно какие-то отдельные пожелания.

"АвтоКликер следующего поколения":

1. Основное отличие от существующих - СОСТАВЛЕНИЕ КАРТЫ КОНТРОЛОВ автоматизируемых приложений c привязкой к конкретной версии приложения и затем Воспроизведение действий (кликов/нажатий клавиш/изменение состояния контролов) по ссылкам на пути в этой карте контролов. Опишу подробнее, что это значит и какие бонусы сулит.
По сравнению с другими автокликерами внешне это нисколько не усложняет запись/воспроизведение. Т.е. пользователь вообще может не задумываться, что такое "карта контролов" и с чем ее едят. А вот новый уровень стабильности/целостный взгляд на происходящее/гибкость будут хорошим дополнением.

Теперь от общих слов к детальному описанию.
У нас есть какое-то приложение, которое надо протестировать или автоматизировать. При записи/воспроизведении скрипта, т.е. набора кликов, перехода между различными окнами приложения, будет происходить НЕвидимое для пользователя сканирование каждого окна и состовляться его карта контролов. В итоге у нас получится что-то такое:

Total Commander
- версия 7.05 (crc сумма приложения - 72649е16)
- Главное окно:
- 2 панели, 8 кнопок, 1 меню, 1 тулбар, 1 статик, 1 поле редактирования, 2 комбо (к каждому контролу сохраняются также его свойства, которые не менялись во время наблюдения за программой + их скриншоты, возможность обозвать привычными именами)
- Окно опций, 1-ая закладка
- 1 древовидный список, 10 чекбоксов, 3 комбобокса
- Окно опций, 2-ая закладка
- 1 древовидный список, 6 чекбоксов, 2 комбобокса
- и т.д.

- Карта путей как попасть из одного окна в любое другое. Допустим, для незарегистрированной версии Total Commander нельзя сразу при запуске в одной действие перейти в окно настроек, надо сначала правильно закрыть окно, предлагающее регистрацию, затем уже переходить в диалог настроек. В других программах пути могут быть длиннее и сложнее. Карта путей между окнами будет представлять собой уменьшенные скриншоты и стрелки между ними. Таким образом, к каждой версии программы будут создаваться карты контролов и карты путей между окнами. Пользователь все это может и не замечать, но у него теперь будет возможность в начале каждого скрипта задать желаемое окно в качестве начального условия и если потом в начале Воспроизведения скрипта запущенное приложение будет в другом состоянии, на другом окне, то Автокликер сможет сам выйти на нужное окно, что обеспечит скрипт большей стабильностью, а от пользователя лишь понадобится согласиться на предлагаемые начальные условия и подтвердить право автокликера самостоятельно находить оптимальный путь между окнами.
- В карте путей какие-то частые маршруты можно будет называть привычными именами, например, "залогинивание"/"вызов настроек" и использовать эти имена в скриптах, не делая заново запись нужного действия или выискивая в предыдущих скриптах в мешанине контролов нужный для копирования участок. Это будет легким путем создания фреймворка, причем с большей обзорностью/целостным представлением картины за счет имеющихся карт контролов и карт путей между окнами.
- Карты контролов и карты путей для разных версий можно будет отправлять в онлайн репозиторий, что будет поощряться продлением пробного периода, и позволит накопить базу фреймворков для разных версий разных приложений. Поиск по этой базе будет сделан оптимально просто: с каким приложением пользователь работает, по crc сумме будет находиться и предлагаться уже готовый фреймворк. А к фреймворку будут также онлайн доступны наиболее часто используемые скрипты, которые будут проходить проверку на воспроизводимость. Т.е. идея своеобразного OpenSource скриптования. Последнее больше подходит для автоматизации. Для тестинга была бы интересна с точки зрения подготовки среды тестирования, установки/настройки популярных приложений, которые задействованы в тестировании не как "подопытные", а как вспомогательные.
- Генерация тесткейсов для тестирования приложения будет происходить в полуавтоматическом режиме. Пользователь задает наиболее приоритетные и важные для тестирования контролы, пути, настройки, остальные пути будут предлагаться для тестирования по остаточному принципу (в зависимости от свободных машиноресурсов). Таким образом покрытие тестами, регрессионное тестирование будет решено с меньше долей ручного труда и с большей долей наглядности, обзорности общей картины.
- Еще дополнительной было бы уместно сделать контроль редкоизменяемых параметров как системы, так и тестируемых приложений. Например, какие-то контролы во время успешных прогонов меняют свои параметры, какие-то не меняют. Те которые при успешных прогонах менялись, будут в будущем игнорироваться, а те которые поменялись только при НЕуспешном прогоне теста, тут уместно довести до сведения тестера, что, например, раньше при успешных прогонах фокус был на корневом элементе древовидного списка, а при зафейленном прогоне, нет. Что, например, раньше при успешных прогонах, никогда не было в системном евентлоге события о внезапной остановке службы, а при пофейленном прогоне такое событие возникло.

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

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

Обсуждение

давно
Посетитель
7438
7205
08.10.2012, 10:57
общий
Здравствуйте, Андрей.
Т.е., Вы хотите осуществить что-то типа запись макро (как в Word-е и в других программах)?
С последующим повторением действий. Так что ли?
Вопрос, надо ли? Все может быть. Хотя, лично мне такое не нужно. Для некоторых дел вполне хватает
имеющихся AutoIt и AutoHotKey. Я предпочитаю сам задавать последовательность действий...
Хотите вообще отстранить пользователя от изучения программ?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
08.10.2012, 11:24
общий

вовсе нет, даже с какой-то стороны облегчить труд изучения программы, дать новые способы познания программы, открыть перед пользователем новые грани. Понизить сложность процесса познания программы, разве это не благородная цель?
давно
Старший Модератор
31795
6196
10.10.2012, 12:34
общий
Цитата: 239492
будет происходить НЕвидимое для пользователя сканирование каждого окна и состовляться его карта контролов

Как Вы это себе представляете? Что будет сканироватся? Что будет искатся?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
11.10.2012, 13:22
общий
Сканироваться окна Windows на предмет наличия в них дочерних контролов. Пример приведен для Тотал Коммандора, хотя это пожалуй слишком простой пример. Возьмем сложнее: многооконный интерфейс фотошопа. При первом сканировании будет обнаружено:
ряд тулбаров, палитра цветов, история действий пользователя, меню. Потом какое-то время пользователь поработает и изменит расположение тулбаров, набор вспомогательных иснтрументов, что-то еще.

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

Сейчас это является настоящей бедой для автокликеров, например, написана 1000 тестов для работы с одним интерфейсом, и если меняется пара контролов, то соответственно становится вопрос о переписывании большей части этих тестов, либо в более "правильных" компаниях пишут фреймоворк для выноса в отдельные функции работу с интерфейсом и соответственно в самих тестах используют эти функции. Идея вышеописанного автокликера как бы предлагает более умную замену такому подходу, и универсальный подход в организации аналога фреймворка, а именно карты контролов окон и переходов между окнами.
давно
Старший Модератор
31795
6196
15.10.2012, 16:38
общий
15.10.2012, 16:41
Цитата: 239492
Идея вышеописанного автокликера как бы предлагает более умную замену такому подходу, и универсальный подход в организации аналога фреймворка, а именно карты контролов окон и переходов между окнами.

Насколько я понял, то карта контролов у Вас будет иметь приблизительно такой вид, что-то ввиде ini-файлов для одной программы разных версий или для всех программ и версий - в одном файле.
[code h=100][proga 1.0.01]
[file]
[new]
[open]
[openfile]{10,10,100,100}
[buttonopen]{1,1,20,10}
[buttoncancel]{20,1,20,10}
[fieldname]{1,50,40,10}
[fieldtype]{20,50,40,10}
[fieldfile]{30,1,70,90}
[save]
. . .
[edit]
[cut]
. . .
[view]
. . .
[help]
[index]
. . .
[about]
[end 1.0.01]
[proga 1.1.02]
[file]
[new]
[open]
[openfile]{10,10,100,100}
[buttonopen]{71,50,20.10}
[buttoncancel]{85,50,20,10}
[fieldname]{71,1,40,10}
[fieldtype]{85,1,40,10}
[fieldfile]{1,1,70,90}
[save]
. . .
[edit]
[cut]
. . .
[view]
. . .
[help]
[index]
. . .
[about]
[end 1.1.02][/code]
где:
[openfile]{10,10,100,100} название диалога, смещение относительно начала основного окна и размер окна диалога;
[buttonopen]{1,1,20,10} название кнопки, смещение относительно начала окна диалога и размер кнопки.

Честно говоря, я не знаю, что Вам посоветовать, т.к. не имею понятия, что именно у Вас уже есть. Анализировать код кликера у меня нет желания, просить исходники, тоже не буду т.к.
Цитата: 239492
исходники полностью показывать не хочу - программа платная.


Думаю, что уже реализовано(реализуется), для автоматического сканирования скриншота экрана и распознавания элементов: окон, кнопок, полей и т.д. Всё нужное у Вас есть (вопрос № 185471 - распознавание образов, системные параметры, определяемые в окне Display Properties | Appearance).

Сам алгоритм я думаю такой:
1) поиск верхнего-левого угла окна;
2) распознавание заголовка окна;
3) поиск и распознавание в окне элементов меню программы.
После этого предложить пользователю автоматическую настройку кликера на текущую программу. Меню Help | About позволит кликеру определить текущую версию программы и найти её в базе данных. Если такой версии нет, то просканировав меню и анализируя характерные надписи-элементы можно составить карту контролов именно этой версии программы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа