-
Notifications
You must be signed in to change notification settings - Fork 407
UI Testing
- UI Automation tools ratings
- Awesome Visual Regression Testing
- Awesome Appium
- Awesome AutoIt
- Awesome Selenium
- https://www.ranorex.com/help/latest/interfaces-connectivity/technology-instrumentation/qt-testing/
- https://pedromateo.github.io/tug_qt_unit_testing_fw/
- https://pedromateo.github.io/openhmitester/
- Comparison of GUI testing tools
- Xnee? https://en.wikipedia.org/wiki/Xnee
- QT Webdriver
- https://pywinauto.github.io/
- https://github.com/sibson/vncdotool
Основные подходы к автоматизации UI (см. еще плюсы и минусы в самом низу):
Хардкодим точки кликов, надеемся на удачные попадания.
- [+] Кросс-платформенный, легко реализуемый.
- [+] Легко сделать "record-replay" запись тестов.
- [-] Самый нестабильный к изменению разрешения экрана, темы, шрифтов, размеров окон и т.п.
- [-] Нужны огромные усилия на поддержку, часто проще перегенерить тесты с нуля или тестировать вручную.
- [-] Автоматизирует только действия, для верификации и извлечения данных есть другие методы.
Стоит сказать, что координатный метод может дополнять остальные подходы. Например, для кастомной графики можно кликать по относительным координатам — обычно это достаточно надежно, особенно если учитывать длину/ширину всего элемента (тогда и разное разрешение экрана не помешает).
Другой вариант: выделять для тестов только одну машину со стабильными настройками (не кросс-платформенно, но в каких-то случаях годится).
Инструмент: openhmitester
- [+] Кросс-платформенный
- [+-] Относительно надежный (лучше, чем координатный метод), но всё же требует хитростей.
- [-+] Относительно медленный, т.к. требует ресурсов CPU для алгоритмов распознавания.
- [-] О распознавании текста (OCR), как правило, речи не идёт => нельзя достать текстовые данные. Насколько мне известно, существующие OCR решения не слишком надежны для этого типа задач, и широкого применения не имеют (welcome в комменты, если это уже не так).
Инструменты: Squish, Sikuli, Lackey (Sikuli-совместимый, на чистом Python).
- [+] Самый надежный метод, т.к. позволяет искать по тексту, независимо от того, как он отрисован системой или фреймворком.
- [+] Позволяет извлекать текстовые данные => проще верифицировать результаты тестов.
- [+] Как правило, самый быстрый, т.к. почти не расходует ресурсы CPU.
- [-] Тяжело сделать кросс-платформенный инструмент: абсолютно все open-source библиотеки поддерживают одну-две accessibility технологии. Windows/Linux/MacOS целиком не поддерживает никто, кроме платных типа TestComplete, UFT или Squish. -[-] Не всегда такая технология в принципе доступна. Например, тестирование загрузочного экрана внутри VirtualBox'а — тут без распознавания изображений не обойтись. Но во многих классических случаях все-таки accessibility подход применим. О нем дальше и пойдет речь.
Инструменты: pywinauto, LDTP (Linux Desktop Testing Project), Dogtail. Не совсем Acessibility, но смысл примерно тот же: Autopilot, Testability, Cisco QT Webdriver.
Задача со сквозным тестом немного отличается от тестирования GUI в общем случае тем, что нам прийдется в любом случае тут использовать подход с распознаванием эталонных изображений для выполнения действий на удаленной стороне. Но так как этот метод не самый надежный и легкий в поддержке, то в общем случае для тестирования GUI лучше найти что-то с Accessibility подходом.
- Поддержка QT/GTK (как самых популярных), для п. 1 достаточно поддержки QT
- Поддержка VNC для п. 1 (RDP + VNC -> риск рассинхронизации мыши)
- Поддержка скриптовых языков (Python, Lua как уже использующиеся в наших тестах)
- Минимальная инвазивность
- Надежность
- Возможность создания порта для KOS (opensource?)
Популярный продукт для автоматизации тестирования UI с помощью распознавания эталонных изображений. Утверждается, что поддерживает работу через VNC. Поддержка Python, JavaScript, Ruby, Perl or Tcl. Коммерческий инструмент, но коллеги из KICS обещали поделиться лицензией.
is a Python implementation of Sikuli script.
SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. It uses image recognition powered by OpenCV to identify GUI components. SikuliX comes with basic text recognition (OCR) and can be used to search text in images. Для работы требует Java.
Расширение для QT, которое предоставляет интерфейс WebDriver к приложению. Возможно две опции:
- WebDriver attaches to the running application
- WebDriver creates the application
WebDriver - стандарт для автоматизации тестирования UI, используется для тестирования Web-приложений и UI телефонов, имеет библиотеки под разные языки и легко найти тестировщиков с опытом автоматизации с использованием WebDriver.
Инвазивность: https://github.com/cisco-open-source/qtwebdriver/wiki/User-Input-Forwarding
Стандартная библиотека для юнит-тестирования GTK.
Стандартная библиотека для юнит-тестирования QT https://doc.qt.io/qt-5/qtest-overview.html.
"record and replay"
- qt-atspi https://github.com/KDE/qtatspi
- https://developer.gnome.org/libatspi/2.26/
- https://wiki.linuxfoundation.org/accessibility/atk/at-spi/at-spi_on_d-bus
- https://wiki.gnome.org/Accessibility
- https://wiki.gnome.org/Projects/Mago
- https://wiki.gnome.org/Apps/Accerciser
- https://ldtp.freedesktop.org/ldtp-tutorial.pdf
- https://gitlab.gnome.org/GNOME/at-spi2-atk/
- https://gitlab.gnome.org/GNOME/at-spi2-core/
- https://github.com/gloob/libatspi2-examples
- https://wiki.gnome.org/action/show/Apps/DFeet?action=show&redirect=DFeet
- https://www.freedesktop.org/wiki/Software/dbus/
- https://techbase.kde.org/Development/Tutorials#D-Bus
- https://github.com/infapi00/at-spi2-examples
- https://wiki.linuxfoundation.org/accessibility/d-bus
Интеграция (источник):
Dogtail is a GUI test tool and test automation framework written in Python. It uses Accessibility (A11Y1) technologies to communicate with desktop applications. A Software Assistive Technology Service Provider Interface(AT-SPI)is commonly used with Dogtail to provide accessibility. QT AT-SPI was available in 2012. And with the help of QT AT-SPI, Dogtail 0.8.0 has started supporting QT tests automation. dogtail is a GUI test tool and automation framework written in Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. dogtail scripts are written in Python. AT-SPI, GNOME and GTK+ applications are supported.
Используется Canonical для тестирования Ubuntu. Есть адаптеры для QT и GTK, которые подгружаются при старте приложения и предоставляют доступ объектам QT/GTK. Есть примеры тестов на Python.
- https://launchpad.net/autopilot-gtk/
- https://launchpad.net/autopilot-qt
- https://bazaar.launchpad.net/~ubuntu-testcase/ubuntu-autopilot-tests/trunk/files
Популярный драйвер для тестирования QT-приложений. Но в 2012 когда Trolltech купила Nokia, то они убрали этот адаптер из репозиториев и удалили все упоминания в документации. Исходный код найти еще можно, но особенно никто уже не использует. Есть форк https://github.com/nomovok-opensource/cutedriver-agent_qt/wiki
Copyright © 2014-2024 Sergey Bronnikov. Follow me on Mastodon @sergeyb@honk.bronevichok.ru and Telegram.
Learning
- Glossary
- Books:
- Courses
- Learning Tools
- Bugs And Learned Lessons
- Cheatsheets
Tools / Services / Tests
- Quality Assurance Tools
- Test Runners
- Testing-As-A-Service
- Conformance Test Suites
- Test Infrastructure
- Fault injection
- TTCN-3
- Continuous Integration
- Speedup your CI
- Performance
- Formal Specification
- Toy Projects
- Test Impact Analysis
- Formats
Functional testing
- Automated testing
- By type:
WIP sections
Community
Links