Как писать автоматические тесты для десктопных приложений?
У меня есть достаточно большое десктопное приложение, которое представляет из себя коллекцию формочек с набором контролов. У меня есть коллекция базовых сценариев, из раздела «нажать на кнопку А, появится окошко Б, в нём ввести 123 и нажать ОК, если после этого не появилось окошко С, значит регресс-тест провалился». Сейчас это делается вручную. А как можно этот процесс автоматизировать? Какими средствами, приложениями, фреймворками? Как сделать так, чтобы не человек кликал, а компьютер сам кликал и в лог писал, если программа повела себя не так, как записано в сценарии?
Тесты можно сделать с помощью скриптов на Autoit. Он поддерживает нажатия на контролы, манипуляции курсором мыши, ввод текста/чисел в поля, отслеживает появления окон, может писать информацию в логи и еще многое чего. Язык в принципе не сложный, если разберетесь — может здорово пригодиться.
Если для виндовса пишите — то на мой взгляд лучшее решение Microsoft UI Automation Framework. Он все может делать. Autoit за ним не особенно поспевает. У него есть .net интерфейс доступа.
Для различиных языков программирования для него есть обертки. Очень много зависит от того, на чем пишите.
Поскольку в профиле обнаружил Python, всё-таки решил предложить попробовать Sikuli.
Данное решение имеет некоторые ограничения, по сравнению с упомянутыми AutoIt и AutoHotKey. В первую очередь это связано с переносимостью скриптов.
Зато есть некоторые встроенные плюшки для тестирования.
Ну и AutoIt и AutoHotKey (что кстати есть отделившаяся ветка первого) — могут помочь Вам сделать, то что Вы хотите, и как уже подметили, в плане Автоматизации чего либо в Windows это очень мощное средство. :) У сообщества AutoIt очень отзывчивый форум http://autoit-script.ru/ там быстро помогут освоится.
Я вот много раз встречаю в инэте совет использовать TestComplete. Но почему? Что в нем хорошего? Из минусов уже вижу: стоит денег и не маленьких. Разве не лучше Python или AutoIt?
Если PyQt, то на Windows теперь с ним может неплохо справляться pywinauto (начиная с ноября 2016), если использовать "uia" backend (о бэкендах подробнее в Getting Started Guide), который упрощает работу с технологией MS UI Automation. Знаю уже несколько человек, так автоматизировавших Qt приложения. Вопросы можно задавать на гитхабе или в Gitter чате есть русскоязычная комната.
Если PyQt на линуксе, то здесь новый бэкенд можно ожидать следующей зимой-весной.