Pull to refresh

Comments 27

Что делать, если я нищеброд работаю в компании, подходящей консервативно к покупке софта? В прошлый раз между предложением «давайте попробуем Appium» и каким-то результатом успело пройти три месяца :(
Будет ли версия без поддержки GPU работать после окончания 14-дневного триала?
Для версии без поддержки GPU лицензия не требуется. Вы можете использовать её неограничено по времени совершенно бесплатно. Просто загружайте, устанавливайте и пользуйтесь!
Выглядит очень интересно, сейчас начну тестировать. Мне кажется это именно то, что я хотел
Я немного наивный вопрос задам наверное…
Но если ваша конструкция wait работает через распознавание изображения, то как оно отработает, если поверх окна с виртуалкой будут другие окна? Если виртуалка будет свернута?
как это будет работать на CI сервере, где вообще нет виртуалок и/или GUI?
Происходит разпознавание экрана именно виртуальной машины, а не хоста. Окно с виртуальной машиной может быть вообще не открыто. На хосте вообще может не быть GUI. Изображение экрана виртуалки получается через API гипервизора. Соответственно, Вы можете без проблем запускать такие тесты на CI-сервере.
но в докере получается вашу систему не прогнать? Надо именно виртуальные машины и гипервизор?
Да, нужны виртуалки. С одной стороны это минус — виртуалки более тяжеловесны. С другой стороны — это позволяет:
— выполнять визуальные проверки и тестировать GUI
— в качестве гостевой системы может быть не только Linux, но и Windows/FreeBSD/whatever_you_want
Спасибо, очень интересная идея.
У Вас описано всегда действие с виртуальной машиной (возможно это сделано на тех же механизмах Linux, что и docker, раз нет варианта под win).

Вопрос 01: А что, если я не хочу вирт. машину, а только virtualenv-клон python?

Вопрос 02: В любом случае (c виртуалкой или без), как бы Вы тестировали на вашем testo-lang питон программу в 2 строки:
import tkinter
tkinter._test()

(может понадобиться sudo apt-get install python3-tkinter, но меня интересует в первую очередь тест графич. окна кода питон)

Вопрос 03: как бы Вы тестировали (смогли ли бы вообще?) на вашем testo-lang питон программу в 4 строки:
import turtle
turtle.width(9)
turtle.color("red")
turtle.circle(90)

— тест — проверить, что в окне круг радиусом 90, красного цвета и толщиной линии 9 (ну и на нужном месте)

Вопрос 04 (final): как бы Вы тестировали (смогли ли бы вообще?) на вашем testo-lang питон программу в 2 строки:
for z in range(10):
       print("*" * z)

— проверить, что выводится текстовый треугольник из звезд, нужного кол-ва строк
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. Однако, удивительно много тестов можно автоматизировать и ориентируясь только на текст.
Не увидел OS X версии. Планируется поддерживать и эту OS?
Там беда с гипервизорами. Мы изначально сделали интеграцию с VirtualBox — и это работало на всех трёх платформах (Windows/Linux/OSX). Но VirtualBox показал себя не с лучшей стороны: постоянные зависания, крахи. Пришлось от него отказаться. Кто у нас ещё есть для OSX? Parallels Desktop и VMWare Workstation не предостовляют достаточного API, чтобы можно было с ними интегрироваться. Так что ответ скорее отрицательный, к сожалению…
> Parallels Desktop

Расскажите, что вам не хватило в Parallels SDK?
С помощью него тестировали сам Parallels Desktop, сделали vagrant-parallels и было достаточно методов и функций.

download.parallels.com/desktop/v13/docs/en_US/Parallels%20Virtualization%20SDK%20Programmer's%20Guide.pdf
download.parallels.com/desktop/v13/docs/en_US/Parallels%20Python%20API%20Reference.pdf
Когда я последний раз смотрел (пару лет назад) — не увидел управления мышкой. Видимо, невнимательно изучал документ. Спасибо, что указали на это!

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

Хотя сам синтаксис языка немного напрягает из-за перемешивания различных стилей, где присутствуют форматы make файлов, скриптов bash, синтаксис Python и т.д.
Сложно с ходу въехать, когда пытаешься интуитивно использовать знакомые языковые конструкции, а в результате оказывается, что нужно оформлять немного по другому.
А есть какие-то планы по продвижению анализа изображений с помощью сетей как плагина к популярным тестерским инструментами?
Банальный пример из веба, что стили подъехали. Или например есть какой-то эталон блока и надо понять, что взятый блок на странице такой же (при этом попиксельное сравнение не подходит, т.к текст в блоках может быть разный)
Да, есть планы по оформлению нейросеток в виде отдельной программной библиотеки (с привязками к популярным языкам программирования). Запросы на такую фичу поступают время от времени, так что мы обязательно этим займёмся.
Подскажите, заработает ли в такой конфигурации. У меня есть несколько гипервизеров на proxmox, которые уже управляет виртуальными машинами (win/linux). Есть ли возможность натравить ваш инструмент на них, не ставя сам софт на гипервизор, а использую соседнюю виртуалку?

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

Такой пользовательский вопрос:
Например нам надо нажать на кнопку старт, а их несколько на экране?
Или необходимы тестировать протестировать приложение с таблицей, где много однообразных ячеек?
На случай, если на экране присутствует несколько кнопок с одинаковым названием, в языке предусмотрена возможность указать, на какую из них требуется нажать. Например, команда mouse click "Старт".from_left(0) означает «нажать на первую слева надпись Старт (нумерация начинается с нуля)».

По поводу таблицы — не могу ответить, нужно больше подробностей. Дело в том, что когда вы пишете тест, то совершенно чётко представляете, в каком состоянии находится каждая виртуалка, знаете, что сейчас изображено на экране. Соответственно, вы можете зацепиться, например, за соседнюю ячейку, за какую-то иконку, за название столбца или строки и так далее.
1 Подход понятен, хорошо что есть такие возможности. Только меня смущает синтаксис (я бы назвал его смешанным) и если инструмент предназначался для людей, незнакомых с языками программирования — такие конструкции будут им не совсем понятны. Но опять таки, это тот случай где я могу выразить критику, но не предложить что-то взамен.
2 Можно разбить вопрос на 2 ситуации:
— например у нас есть таблица со списком сотрудников, вверху названия полей (Имя, Фамилия, Должность) и мы должны заполнить ее. Как будет обращение к N-ой ячейке в столбце «Имя» например
— взять ситуацию, когда у таблицы нет названий столбцов и полей. Можно вместо таблицы взять любую игру, типо сапера или крестики-нолики. Как будет идти обращение к ячейке и как ваш движок находит понятие «ячейка»
1) На обсуждение синтаксиса языка и, в частности, на обсуждение этого момента было потрачено много времени. Можно сказать, что это выстраданный, компромисный вариант. Возможно, в будущем мы придём к более изящному синтаксису, но сейчас есть то, что есть.
2) Два варианта:
— Если вы вбиваете таблицу последовательно ячейка за ячейкой — то можно цепляться за уже заполненные ячейки. Например, вы хотите кликнуть на ячейку под ячейкой, заполненной «Иванов Иван». Тогда вы пишите mouse click "Иванов Иван".center().move_down(50). Т.е. на 50 пикселей ниже надписи «Иванов Иван».
— Если вам нужна какая-то логика, которая не предусмотрена в языке, и при этом вы умеете немного программировать — то вы можете реализовать такую логику самостоятельно. Есть возможность для скриншотов запускать Javascript-сниппет с произвольной логикой. Например, mouse click js "{x: Math.random() * 100, y: Math.random() * 200}". Соотвественно, для случая с таблицей можно найти координаты заголовка столбца, координады заголовка строки и вычислить их пересечение. Чтобы каждый раз не пришлось писать такую громоздкую команду — её лучше оформить в виде макроса. Но, честно говоря, на практике такая необходимость встречается очень редко.
Одним словом придется искать якорь (отправную точку) и далее работать по пикселям
В любом случае спасибо, интересный инструмент. Пополню свою «теоретическую» базу инструментов им, может когда-нибудь получится и на практике с ним поработать.
В идеале, конечно, хотелось бы иметь возможность описывать цель на естественном языке, что-то вроде mouse click "вторая ячейка в третьем столбце", и заставить нейросеть ломать голову над тем есть ли такой объект на экране и где он. Но нам до этого ещё очень далеко.
Если на естественном зыке, тогда зачем «mouse click»? ;-)
Sign up to leave a comment.