Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Автоматизация десктопных приложений под Mac OS

os-x
Теги: #<Tag:0x00007f7b635f5448>

(Влад) #1

Всем привет. :blush:
Есть вопрос на засыпку (когда-то, в далеком 2011 году, он тут уже звучал):

  1. Автоматизация под Mac OS: как? что лучше использовать (всякие сикули и пропрочая картинко-кликалки не интересуют :blush:)? поделитесь опытом, если не трудно, не жалко и такой имеется. :blush:
  2. Кто-то уже использовал фичи в XCode для тестирования UI десктопного приложения?

Зачем это нужно: портируется десктопный qt-проект с винды на Mac OS. В винде все четко работает с помощью MS UI Automation, поэтому хотелось бы сделать что-то похожее и под Mac OS, и, возможно, в будущем на линуксе.

Заранее спасибо за советы.


(Stan) #2

а зачем для qt проекта нужно еще что-то кроме самого qt? тесты отлично пишутся на нем же


(Artur Korobeynyk) #3

Посмотрите на https://en.wikipedia.org/wiki/Linux_Desktop_Testing_Project
Из всех названных вами ОС он поддерживает все, плюс есть поддержка QT с версии 4.
Просмотрел их код на гитхабе, и вродебы они используют сигналы для доступа к элементам, так что кнопки нажимаются не по распознаванию образов (как в Сикули) а через ядро, что радует.


(Влад) #4

вчера взял на вооружение ATOMac :blush:


(karkadil) #5

Рекомендую Squish. Он, конечно, глючноват, но в целом хорош


(karkadil) #6

Полноценные GUI-тесты чисто на Qt не напишешь


(Влад) #7

дорого, однако, нынче на пока что меленькую компанию покупать Squish))


(Stan) #8

Да что вы говорите? У меня несколько сотен полноценных GUI тестов на QT. Как раз полноценных вы только на них и напишите, ибо доступ ко всем внутренностям вы кроме как изнутри самого QT практически никак не получите.

А что такое по вашему Squish?:slight_smile: Как он работает?:slight_smile:


(Влад) #9

что Вы подразумеваете под словом “внутренности”? :blush:


(Stan) #10

Я подразумеваю под доступом к внутренним функциям. Если проект больше окна с двумя кнопками, то как вы подготавливаете окружение? Как вы мокаете данные? Конечно все это можно сделать с 30 костылями, но если есть доступ к паблик функциям самого приложения, то зачем крутить велосипеды?


(Влад) #11

а если blackbox?


(Stan) #12

При тестировании с++ приложений black box может быть применимо только в случае, если у вас нет достаточных ресурсов для того чтобы нанять кого-то больше чем просто кликателя кнопочек, да и даже в таком случае дешевле будет настроить любой monkey testing tool. Как вы будете в блэк боксе разбираться почему оно падает? Как вы вообще нормально адекватно блэк боксом протестируете реальное приложение, в котором, повторюсь, есть больше пары экранов и трех кнопок?

Простейший пример, который можно приводить бесконечно - в приложении есть логин. На кнопке навешан сигнал вызова функции, сигнал сломали, функция работает, но дальше ничего не проходит или если у вас проблема с внешним логин сервисом? Что выяснит black box? Что все 100% тестов упали. Не работает ли 100% функционала приложения? Неизвестно. Почему? Потому что в ините вашего каждого теста мануальные шаги на вход в приложение. Что сделает тест, который сумеет залогиниться востальных тестах через вызов внутренней функции или через ее мок? Ответ - протестировать все внутри, отрапортовав о том что падает логин + результат всех внутренних тестов.
Какая будет стабильность ваших тестов, когда их будет несколько сотен? Никакой, вы только и будете заниматься тем, что чинить их и перезапускать каждый раз.

Black box вообще никак себя не оправдывает в реальных проектах с автотестами. Посмотрите еще старинное видео @asolntsev, где он рассказывает про мок сторонних сервисов, идея простая и гениальная, но к сожалению практически никогда не воплощаемая в реальность.


(sveat0slav) #13

На руби есть https://github.com/AXElements/AXElements (не картинко-кликалка) :smile:
Или можно попробовать нативный Automator, синтаксис очень прост.


(asolntsev) #14

Не такое уж оно и старинное, меньше года вообще-то :smile:
http://2015.codefest.ru/lecture/990


(Volodymyr) #15

А такую встроенную тулзу как applescript не пробовал?
У нее очень много возможностей бегать по UI элементам приложения. Эта тулза интегрирована в систему, из нее можно вызывать шеловские команды. А разобраться с доступом к UI элементам приложения поможет такая тулза как UI Browser.


(Stan) #16

Я почему-то думал что несколько лет назад ее смотрел :slight_smile: