froglogic squish
DESCRIPTION
SQA Days-11. День 1. Секция BАндрей БеляевскийTRANSCRIPT
Froglogic
Squish Мастер класс
(начального уровня)
Беляевский Андрей
Благодарности
Align Technology RDITG Moscow
Start Innovation
Что такое Squish
http://www.froglogic.com/squish/gui-
testing/index.php
Кросс-платформенный инструмент
автотестирования GUI
Изначально создан для тестирования Qt
приложений
Используется более 1100 компаниями
Команда разработчиков возглавляется бывшими
разработчиками Qt
Поддерживаемы платформы
Windows
Mac OS X
Linux
Unix
iOS (iPhone, iPad, iPod)
Meego
embedded Linux
Варианты 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
Языки Squish
Python
• Python 2.x (2.4+)
JavaScript
Tcl
Perl
Ruby
• Добавился недавно
Что нам интересно в Squish
Мультиплатформенность
Но демка на Windows 7
Отличная поддержка Qt
включая QML
Python
Можно на нем построить гетерогенную
инфраструктуру автотестов
Легкость в освоении и работе
важно для команд-новичков в автотестировании
Как устроен Squish
Согласно, документации для проведения
тестирования нужны две вещи:
• Тестируемое приложение
• Скрипт тестирования
Тестируемое приложение и тестовый скрипт
(запускаемый Squish) – всегда изолированные
процессы
Как устроен Squish
Изолированные процессы теста и приложения
позволяют:
• избежать падения Squish при падении приложения
• организовать удаленный запуск тестов
• в том числе на мобильных устройствах
• распределенный запуск тестов
Как устроен Squish
Лучше официальной документации не скажу…
Как устроен Squish
squishserver
• запускает приложение
• инициирует работу библиотеки squishhook
• посредством squishhook опрашивает объекты о
состоянии и выполняет команды от squishrunner на
них
squishrunner
• выполняет тестовый скрипт, коммуницируя через
сокеты с squishserver
squishhook
• открывает доступ к объектам
Как определить тип компилятора
1. Качаем отсюда Strings утилиту от бывших
Sysinternals
2. Делаем так
Как определить тип компилятора
3. Смотрим полученный файл
Как определить тип компилятора
4. Выбираем соответствующий дистрибутив на
портале Froglogic
Установка (базовая)
1. Выбираем дистрибутив
Версии компиляторов собравших Squish и
приложение должны совпадать
Версии Qt, с которыми собраны приложение и
Squish должны совпадать
2. Если шаг 1 не выполнен – собираем Squish из
исходников
Не сложно, но нужно быть аккуратным
3. Проходим 7 простых установочных шагов
точно указать Qt Core, используемый
приложением
4. Видео примера простой установки
Установка расширенная
Squish можно установить в виде плагина к Eclipse
Интерпретатор языка программирования также
можно использовать отличный от того, что идет в
сборке Squish
Но в данной демонстрации всего этого не будет
Установка для запусков тестов
Для запусков тестов (в batch режиме) нужен
сокращенный набор файлов
• bin\*.*
• lib\*.*
• etc\paths.ini
• etc\squish.ini
• etc\*wrapper_descriptors.xml
Шаг 1:Qt+Windows Запись теста
Возьмем Squish и запишем рекордером
простой тест для Qt Creator на Windows
• Что нажимать чтобы записать самый простой
тест
Немного причешим и локально запустим.
Проверим что все работает.
Шаг 1:Qt+Windows Структура кейза
init() – выполняет код до запуска приложения
main() – обязательная функция в каждом тест-
кейзе
cleanup() – код, выполняющийся в любом случае
после main() – удобен, если потенциально могут
появиться неперехваченные исключения
Шаг 1:Qt+Windows Структура теста
Формат файлов Squish – текстовый
suite_test
shared – общие ресурсы
testdata
scripts
tst_case1
• test.py – код тест-кейза
…
tst_casen – тут могут быть внутренние ресурсы
• object.map – репозиторий объектов
• suite.conf – файл конфигураций
Шаг 1:Qt+Windows Структура теста
Структура нашего простого примера
Шаг 2:Qt+Windows Результаты
Результаты можно получить в виде
• xml2.1
• xmljunit
• xml2
• xml
• xls
• html
• python squishxml2html.py --dir html –i *.xml
А можем писать в БД
Шаг 3:Qt+Windows Event Handlers
Используются для обработки событий
определенного типа (например, появление окон
ошибок)
• installEventHandler(eventName,
handlerFunctionName)
• installEventHandler(className, eventName,
handlerFunctionName)
• installEventHandler(object, eventName,
handlerFunctionName)
Шаг 3:Qt+Windows Event Handlers
События
• любое стандартное Qt событие
• или из списка
o Crash
o DialogOpened
o MainWindowOpened
o MessageBoxOpened
o Timeout
o ToplevelWidgetOpened
Шаг 4:Qt+Windows Keyword DD
Считываем их входного файла имена функций
для выполнения и их параметры
тест
source(findFile("scripts", "driver.py"))
def main():
drive("keywords.tsv")
Шаг 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)
Шаг 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();
}
Шаг 5: Qt+Windows attach to run
Можно подключаться к уже работающему
Приложение должно быть зарегистрировано
• squishserver --config addAttachableAUT aut
[host:]port
Используем attachToApplication() вместо
startApplication()
По секрету
Ближайшие планы развития
1. Squish для Android
2. Более тесная Squish <-> Squish Coco интеграция
3. Поддержка распознавания объектов по
изображению (для работы с OpenGL,
например)
4. Визуальный язык программирования тестов
5. Поддержка Qt 5
Это не «спонсорский доклад», но все же …
Скидка 10%
1. Промокод MCSRU12
2. Запишитесь у меня или заполните опрос в
блоге о мастер классе
3. Скидка действует в течение 60 дней
4. Сайт производителя www.froglogic.com
Каждый должен расти над собой
Хотите узнать про Squish+iOS?
Интересна тема Squish on Linux/Mac OS – пишите
– сделаю свободный вебинар!
Буду благодарен за критику в опросе
http://zubactik.blogspot.com/
Спасибо!
«Ваше мнение важно для нас!»@
Мои контакты
Skype: andrey.belyaevsky
ICQ: 348-925-702
Блог АвтоТестировщика
Vkontakte
Мой Круг
Если вам нужны какие-то материалы – не
стесняйтесь – пишите!
Спасибо!!!
Тестеры,
тестировать –
круто!