3. Что такое Squish
http://www.froglogic.com/squish/gui-
testing/index.php
Кросс-платформенный инструмент
автотестирования GUI
Изначально создан для тестирования Qt
приложений
Используется более 1100 компаниями
Команда разработчиков возглавляется бывшими
разработчиками Qt
5. Варианты Squish
Qt : Включая QML, Qt Quick
Java : Swing/AWT/SWT/RCP, JNLP, GEF
Web : IE (6.x - 9.x), FF (1.x - 4.x), Safari, Chrome,
Opera
Windows : .NET/.NET WPF/MFC/Sybase/Exontrol/Plex
Mac : Cocoa, Carbon
iPhone : both device and simulator, CocoaTouch
Tcl/Tk
4js : Four J’s Genero GUI
6. Языки Squish
Python
• Python 2.x (2.4+)
JavaScript
Tcl
Perl
Ruby
• Добавился недавно
7. Что нам интересно в Squish
Мультиплатформенность
Но демка на Windows 7
Отличная поддержка Qt
включая QML
Python
Можно на нем построить гетерогенную
инфраструктуру автотестов
Легкость в освоении и работе
важно для команд-новичков в автотестировании
8. Как устроен Squish
Согласно, документации для проведения
тестирования нужны две вещи:
• Тестируемое приложение
• Скрипт тестирования
Тестируемое приложение и тестовый скрипт
(запускаемый Squish) – всегда изолированные
процессы
9. Как устроен Squish
Изолированные процессы теста и приложения
позволяют:
• избежать падения Squish при падении приложения
• организовать удаленный запуск тестов
• в том числе на мобильных устройствах
• распределенный запуск тестов
11. Как устроен Squish
squishserver
• запускает приложение
• инициирует работу библиотеки squishhook
• посредством squishhook опрашивает объекты о
состоянии и выполняет команды от squishrunner на
них
squishrunner
• выполняет тестовый скрипт, коммуницируя через
сокеты с squishserver
squishhook
• открывает доступ к объектам
12. Как определить тип компилятора
1. Качаем отсюда Strings утилиту от бывших
Sysinternals
2. Делаем так
14. Как определить тип компилятора
4. Выбираем соответствующий дистрибутив на
портале Froglogic
15. Установка (базовая)
1. Выбираем дистрибутив
Версии компиляторов собравших Squish и
приложение должны совпадать
Версии Qt, с которыми собраны приложение и
Squish должны совпадать
2. Если шаг 1 не выполнен – собираем Squish из
исходников
Не сложно, но нужно быть аккуратным
3. Проходим 7 простых установочных шагов
точно указать Qt Core, используемый
приложением
4. Видео примера простой установки
16. Установка расширенная
Squishможно установить в виде плагина к Eclipse
Интерпретатор языка программирования также
можно использовать отличный от того, что идет в
сборке Squish
Но в данной демонстрации всего этого не будет
17. Установка для запусков тестов
Для
запусков тестов (в batch режиме) нужен
сокращенный набор файлов
• bin*.*
• lib*.*
• etcpaths.ini
• etcsquish.ini
• etc*wrapper_descriptors.xml
18. Шаг 1:Qt+Windows Запись теста
Возьмем Squish и запишем рекордером
простой тест для Qt Creator на Windows
• Что нажимать чтобы записать самый простой
тест
Немного причешим и локально запустим.
Проверим что все работает.
19. Шаг 1:Qt+Windows Структура кейза
init()
– выполняет код до запуска приложения
main() – обязательная функция в каждом тест-
кейзе
cleanup() – код, выполняющийся в любом случае
после main() – удобен, если потенциально могут
появиться неперехваченные исключения
20. Шаг 1:Qt+Windows Структура теста
Формат файлов Squish – текстовый
suite_test
shared – общие ресурсы
testdata
scripts
tst_case1
• test.py – код тест-кейза
…
tst_casen – тут могут быть внутренние ресурсы
• object.map – репозиторий объектов
• suite.conf – файл конфигураций
22. Шаг 2:Qt+Windows Результаты
Результаты можно получить в виде
• xml2.1
• xmljunit
• xml2
• xml
• xls
• html
• python squishxml2html.py --dir html –i *.xml
А можем писать в БД
23. Шаг 3:Qt+Windows Event Handlers
Используются
для обработки событий
определенного типа (например, появление окон
ошибок)
• installEventHandler(eventName,
handlerFunctionName)
• installEventHandler(className, eventName,
handlerFunctionName)
• installEventHandler(object, eventName,
handlerFunctionName)
24. Шаг 3:Qt+Windows Event Handlers
События
• любое стандартное Qt событие
• или из списка
o Crash
o DialogOpened
o MainWindowOpened
o MessageBoxOpened
o Timeout
o ToplevelWidgetOpened
25. Шаг 4:Qt+Windows Keyword DD
Считываем их входного файла имена функций
для выполнения и их параметры
тест
source(findFile("scripts", "driver.py"))
def main():
drive("keywords.tsv")
26. Шаг 4:Qt+Windows Keyword DD
драйвер
source(findFile("scripts", "actions.py"))
def drive(datafile):
for row, record in
enumerate(testData.dataset(datafile)):
command = testData.field(record, "Keyword") + "("
comma = ""
for i in range(1, 5):
arg = testData.field(record, "Argument %d" % i)
if arg:
command += "%s%r" % (comma, arg)
comma = ", "
else:
break
command += ")"
eval(command)
27. Шаг 5: Qt+Windows attach to run
Можноподключаться к уже работающему
приложению с помощью attachToApplication()
Используем built-in-hook в коде приложения
#include <QApplication>
#include "qtbuiltinhook.h"
int main(int argc, char **argv) {
QApplication app(argc, argv);
Squish::allowAttaching(11233);
//...
return app.exec();
}
28. Шаг 5: Qt+Windows attach to run
Можноподключаться к уже работающему
Приложение должно быть зарегистрировано
• squishserver --config addAttachableAUT aut
[host:]port
Используем attachToApplication() вместо
startApplication()
29. По секрету
Ближайшие планы развития
1. Squish для Android
2. Более тесная Squish <-> Squish Coco интеграция
3. Поддержка распознавания объектов по
изображению (для работы с OpenGL,
например)
4. Визуальный язык программирования тестов
5. Поддержка Qt 5
30. Это не «спонсорский доклад», но все же …
Скидка 10%
1. Промокод MCSRU12
2. Запишитесь у меня или заполните опрос в
блоге о мастер классе
3. Скидка действует в течение 60 дней
4. Сайт производителя www.froglogic.com
31. Каждый должен расти над собой
Хотите узнать про Squish+iOS?
Интересна тема Squish on Linux/Mac OS – пишите
– сделаю свободный вебинар!
Буду благодарен за критику в опросе
http://zubactik.blogspot.com/
Спасибо!
«Ваше мнение важно для нас!»@
32. Мои контакты
abelyaevsky@gmail.com
Skype: andrey.belyaevsky
ICQ: 348-925-702
Блог АвтоТестировщика
Vkontakte
Мой Круг
Есливам нужны какие-то материалы – не
стесняйтесь – пишите!