Как стать автором
Обновить
24
0

Пользователь

Отправить сообщение
Не берусь сравнивать ИИ и генератор карт оригинальных героев и VCMI — я не настолько много пользовался VCMI чтобы дать корректную оценку.

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

Но что-то мне подсказывает, что стандартные алгоритмы для этого подойдут гораздо лучше.
Это если феечки уже опытные и боевые. А эти феечки в первый раз попали на поле боя. И то, только с условием что они будут стоять в сторонке, пока Гена будет расшвыривать скелетов заклинаниями. Конечно они растерялись, а кто бы не растерялся?
Напишите, пожалуйста, в личку или в support@testo-lang.ru, попробуем разобраться.
В идеале, конечно, хотелось бы иметь возможность описывать цель на естественном языке, что-то вроде mouse click "вторая ячейка в третьем столбце", и заставить нейросеть ломать голову над тем есть ли такой объект на экране и где он. Но нам до этого ещё очень далеко.
1) На обсуждение синтаксиса языка и, в частности, на обсуждение этого момента было потрачено много времени. Можно сказать, что это выстраданный, компромисный вариант. Возможно, в будущем мы придём к более изящному синтаксису, но сейчас есть то, что есть.
2) Два варианта:
— Если вы вбиваете таблицу последовательно ячейка за ячейкой — то можно цепляться за уже заполненные ячейки. Например, вы хотите кликнуть на ячейку под ячейкой, заполненной «Иванов Иван». Тогда вы пишите mouse click "Иванов Иван".center().move_down(50). Т.е. на 50 пикселей ниже надписи «Иванов Иван».
— Если вам нужна какая-то логика, которая не предусмотрена в языке, и при этом вы умеете немного программировать — то вы можете реализовать такую логику самостоятельно. Есть возможность для скриншотов запускать Javascript-сниппет с произвольной логикой. Например, mouse click js "{x: Math.random() * 100, y: Math.random() * 200}". Соотвественно, для случая с таблицей можно найти координаты заголовка столбца, координады заголовка строки и вычислить их пересечение. Чтобы каждый раз не пришлось писать такую громоздкую команду — её лучше оформить в виде макроса. Но, честно говоря, на практике такая необходимость встречается очень редко.
На случай, если на экране присутствует несколько кнопок с одинаковым названием, в языке предусмотрена возможность указать, на какую из них требуется нажать. Например, команда mouse click "Старт".from_left(0) означает «нажать на первую слева надпись Старт (нумерация начинается с нуля)».

По поводу таблицы — не могу ответить, нужно больше подробностей. Дело в том, что когда вы пишете тест, то совершенно чётко представляете, в каком состоянии находится каждая виртуалка, знаете, что сейчас изображено на экране. Соответственно, вы можете зацепиться, например, за соседнюю ячейку, за какую-то иконку, за название столбца или строки и так далее.
Для большей конкретики давайте возьмём в качестве примера классическое веб-приложение «todo-list», которое хранит список задач в БД. Подойдёт?
Я бы мог составить статью, в которой описывается процесс разработки такого веб-приложения в стиле TDD. То есть сначала пишутся системные тесты, а потом — реализация. Вам было бы интересно почитать такую статью?
Можете привести пример системы, которую Вы разрабатывали, но не знали, как покрыть её системными тестами? Может быть на этом примере я смогу убедить Вас, что системные тесты — это не так сложно, как кажется.

Детект объектов на экране работает с помощью нейросетей. Нейросети нечуствительны к разрешению экрана и им всё равно где именно объект на экране. Главное чтобы он на экране был

Да, Testo может работать в условиях вложенной виртуализации. В этом случае можете создать виртуалку на proxmox, накатить туда Testo, и уже оттуда запускать тестовые сценарии. Testo будет создавать вложенную виртуалку, а Вам останется только соединить эту вложенную виртуалку с вашим стендом Linux/Windows и в тестовых сценариях подключаться к стенду по RDP или по SSH. Получается Вы пишете тестовые сценарии, в которых виртуалка подключается по RDP к Вашему стенду и что-то с ним делает. Если будут какие-то вопросы — обращайтесь, проконсультируем

Когда я последний раз смотрел (пару лет назад) — не увидел управления мышкой. Видимо, невнимательно изучал документ. Спасибо, что указали на это!

Значит, будем делать версию для OSX. Но, в любом случае, это будет после версии для Windows.
Поделитесь опытом! Каким инструментом пользовались? С ним получись бы лучше/хуже?

Почему мы решились на создание своего языка — описано в предыдущей статье. Если кратко, то одна из причин — мы хотели получить что-то похожее на make/cmake. То есть инструмент должен сам отслеживать, какие тесты актуальны, какие надо заново прогнать, в каком порядке и так далее. Это довольно сложно оформить в виде библиотечки. Наверное, поэтому системы сборки — это обычно конфиг файлы или специализированные языки. У нас конечно не система сборки, но принцип работы примерно такой же.

Знаю, что код скриншотами — это грех, гореть мне в аду. Да только ведь хабр не знает этого языка. Вопрос знатокам — можно ли научить хабр новым фокусам? То есть добавить подсветку своего языка?
Да, есть планы по оформлению нейросеток в виде отдельной программной библиотеки (с привязками к популярным языкам программирования). Запросы на такую фичу поступают время от времени, так что мы обязательно этим займёмся.
Там беда с гипервизорами. Мы изначально сделали интеграцию с VirtualBox — и это работало на всех трёх платформах (Windows/Linux/OSX). Но VirtualBox показал себя не с лучшей стороны: постоянные зависания, крахи. Пришлось от него отказаться. Кто у нас ещё есть для OSX? Parallels Desktop и VMWare Workstation не предостовляют достаточного API, чтобы можно было с ними интегрироваться. Так что ответ скорее отрицательный, к сожалению…
Да, нужны виртуалки. С одной стороны это минус — виртуалки более тяжеловесны. С другой стороны — это позволяет:
— выполнять визуальные проверки и тестировать GUI
— в качестве гостевой системы может быть не только Linux, но и Windows/FreeBSD/whatever_you_want
Docker управляет контейнерами, мы же работаем с виртуалками, так что механизмы разные (мы взаимодействуем с гипервизором через libvirt). Версия для Windows на подходе, появится в одном из следующих релизов. Там будет использоваться гипервизор HyperV через механизм WMI.

По вопросам:

Вопрос 01: К сожалению, нет. Мы работаем только с виртуалками.

Вопрос 02: Установить зависимости можно по-разному
— можно сымитировать действия человека (открыть консоль, напечатать там команду sudo apt-get install python3-tkinter, нажать Enter и так далее).
— если на виртуалке установлены дополнения, то можно просто выполнить команду напрямую через exec bash.
Визуальную проверку я бы использовал такую: wait "This is Tcl/Tk version 8.6".

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

Вопрос 04: Скорее всего, я бы воспользовался возможностью нечёткого сопоставления с образцом, которая появится в следующем релизе. Её действительно сильно не хватает для полноценной автоматизации GUI. Однако, удивительно много тестов можно автоматизировать и ориентируясь только на текст.
Происходит разпознавание экрана именно виртуальной машины, а не хоста. Окно с виртуальной машиной может быть вообще не открыто. На хосте вообще может не быть GUI. Изображение экрана виртуалки получается через API гипервизора. Соответственно, Вы можете без проблем запускать такие тесты на CI-сервере.
Для версии без поддержки GPU лицензия не требуется. Вы можете использовать её неограничено по времени совершенно бесплатно. Просто загружайте, устанавливайте и пользуйтесь!
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность