Инструмент автоматизации тестирования для Android-приложения

Инструмент Android-обезьяны великолепен!
С помощью одной строки скрипта он запускает ваше приложение и выполняет тесты автоматизации:

adb shell monkey -p my.greate.package + -c android.intent.category.LAUNCHER -s 123 --pct-touch 99 --throttle 20 -v 1000

Вы можете настроить его так, чтобы он делал много вещей, в приведенном выше примере я запускаю приложение по имени пакета, ограничиваю обезьяну только событиями касания. Он будет выполнять 1000 событий касания с интервалом 20 миллисекунд между ними.


Однако этого средства мне недостаточно. Мне нужно что-то без предопределенных или записанных тестов, которые я могу просто запустить. Но обезьяна не видит компоненты экрана, она щелкает по экрану случайным образом, и иногда есть кнопки, которые она никогда не находит.

Я видел этот сайт с множеством альтернатив, но ни один из них не является мгновенным запуском без предварительной настройки.

Помогите мне, как мне сделать мою обезьяну умнее или найти лучшую альтернативу?

Итак, вы хотите запустить его без каких-либо (предустановленных или записанных) тестов? Как он будет проверен в таких обстоятельствах и какой отчет вы надеетесь увидеть?
У меня есть другие инструменты для отчетов, мне просто нужно, чтобы я мог перемещаться по приложению, не зная об этом.
Я не понимаю. Вы хотите использовать приложение, не зная, как оно работает? Если приложение имеет какое-либо внутреннее состояние, вы не можете этого сделать.
@IraBaxter Я хочу максимизировать свой успех. Очевидно, есть приложения, в которых я хочу иметь возможность перемещаться.
Это очень похоже на модульные тесты функции со случайными аргументами. Первые несколько могут быть достаточно разными, чтобы вызвать разное поведение, но в целом входные данные делятся на множество классов эквивалентности, и большинство случайных значений аргументов не создают нового поведения. Как вы думаете, почему это работает?
@IraBaxter МОЯ цель - перемещаться по приложениям, как здесь связаны функции? В любом случае, если вы хотите обсудить это, откройте чат
Случайные вводы в функции аналогичны случайным вводам на экране. И первое давно известно сообществу тестировщиков как неэффективное. Просто не похоже, что поиск случайного ввода будет эффективным. Нет необходимости в чате.

Ответы (2)

Вы можете использовать Sikuli X для автоматизации всего, что вы видите на экране вашего ПК, включая использование распознавания изображений для поиска определенных кнопок, на которые нужно нажимать, независимо от фактического положения на экране. Это, конечно, может включать в себя все, что происходит в среде эмуляции или повторяется на экране ПК с реального устройства.

Вы можете щелкнуть, дважды щелкнуть, проверить результаты, ввести текст в поля и т. д., включая запуск программ.

Это скрипт-способный в python или java script.

Это выглядит интересно. В моем случае мне нужно протестировать множество приложений, которых я раньше не видел. Как вы думаете, это будет полезно для меня? Потому что я не уверен, какой скрипт я могу туда поставить, кроме как ограничить область взаимодействия своим экраном эмулятора. Может ли Sikuli X распознавать кнопки или фигуры?
Sikuli распознает все, что происходит на экране, и его можно быстро и легко «обучить» — он удивительно прост в использовании.
Ок, попробую, спс

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

Это требует, чтобы я сам закодировал логику обнаружения пользовательского интерфейса, а затем каким-то образом имитировал событие в соответствии с моими результатами обнаружения. Поэтому, несмотря на некоторую простоту XPath, для этой задачи я предпочитаю opnecl. Но в конечном итоге я предпочитаю использовать что-то, что уже делает это...