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*.*
  •   etcpaths.ini
  •   etcsquish.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/
 Спасибо!
 «Ваше мнение важно для нас!»@
Мои контакты
 abelyaevsky@gmail.com
 Skype: andrey.belyaevsky
 ICQ: 348-925-702
 Блог АвтоТестировщика
 Vkontakte
 Мой Круг


 Есливам нужны какие-то материалы – не
 стесняйтесь – пишите!
Спасибо!!!
Тестеры,
тестировать –
круто!

Froglogic Squish

  • 1.
    Froglogic Мастер класс Squish (начального уровня) Беляевский Андрей
  • 2.
    Благодарности  Align Technology RDITG Moscow  Start Innovation
  • 3.
    Что такое Squish  http://www.froglogic.com/squish/gui- testing/index.php  Кросс-платформенный инструмент автотестирования GUI  Изначально создан для тестирования Qt приложений  Используется более 1100 компаниями  Команда разработчиков возглавляется бывшими разработчиками Qt
  • 4.
    Поддерживаемы платформы  Windows Mac OS X  Linux  Unix  iOS (iPhone, iPad, iPod)  Meego  embedded Linux
  • 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 при падении приложения • организовать удаленный запуск тестов • в том числе на мобильных устройствах • распределенный запуск тестов
  • 10.
    Как устроен Squish Лучше официальной документации не скажу…
  • 11.
    Как устроен Squish squishserver • запускает приложение • инициирует работу библиотеки squishhook • посредством squishhook опрашивает объекты о состоянии и выполняет команды от squishrunner на них  squishrunner • выполняет тестовый скрипт, коммуницируя через сокеты с squishserver  squishhook • открывает доступ к объектам
  • 12.
    Как определить типкомпилятора 1. Качаем отсюда Strings утилиту от бывших Sysinternals 2. Делаем так
  • 13.
    Как определить типкомпилятора 3. Смотрим полученный файл
  • 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 – файл конфигураций
  • 21.
    Шаг 1:Qt+Windows Структуратеста  Структура нашего простого примера
  • 22.
    Шаг 2:Qt+Windows Результаты Результаты можно получить в виде • xml2.1 • xmljunit • xml2 • xml • xls • html • python squishxml2html.py --dir html –i *.xml А можем писать в БД
  • 23.
    Шаг 3:Qt+Windows EventHandlers  Используются для обработки событий определенного типа (например, появление окон ошибок) • installEventHandler(eventName, handlerFunctionName) • installEventHandler(className, eventName, handlerFunctionName) • installEventHandler(object, eventName, handlerFunctionName)
  • 24.
    Шаг 3:Qt+Windows EventHandlers  События • любое стандартное Qt событие • или из списка o Crash o DialogOpened o MainWindowOpened o MessageBoxOpened o Timeout o ToplevelWidgetOpened
  • 25.
    Шаг 4:Qt+Windows KeywordDD  Считываем их входного файла имена функций для выполнения и их параметры  тест source(findFile("scripts", "driver.py")) def main(): drive("keywords.tsv")
  • 26.
    Шаг 4:Qt+Windows KeywordDD  драйвер 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+Windowsattach 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+Windowsattach 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  Мой Круг  Есливам нужны какие-то материалы – не стесняйтесь – пишите!
  • 33.