SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
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
 Мой Круг


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

Mais conteúdo relacionado

Mais procurados

AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
JSC “Arcadia Inc”
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Yandex
 
Резюме Стасенко А.П
Резюме Стасенко А.ПРезюме Стасенко А.П
Резюме Стасенко А.П
Alexander Stasenko
 

Mais procurados (20)

Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
WPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testingWPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testing
 
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникПодводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
 
C#5 What's new?
C#5 What's new?C#5 What's new?
C#5 What's new?
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
DevOps для Legacy-продуктов
DevOps для Legacy-продуктовDevOps для Legacy-продуктов
DevOps для Legacy-продуктов
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегий
 
Automated tests ci
Automated tests ci Automated tests ci
Automated tests ci
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуля
 
Как автоматизировать рутинные задачи или учимся разговаривать на змеином языке
Как автоматизировать рутинные задачи или учимся разговаривать на змеином языкеКак автоматизировать рутинные задачи или учимся разговаривать на змеином языке
Как автоматизировать рутинные задачи или учимся разговаривать на змеином языке
 
Резюме Стасенко А.П
Резюме Стасенко А.ПРезюме Стасенко А.П
Резюме Стасенко А.П
 

Destaque

Аналитик и Тестировщик в одном лице – путь к качеству
Аналитик и Тестировщик в одном лице – путь к качествуАналитик и Тестировщик в одном лице – путь к качеству
Аналитик и Тестировщик в одном лице – путь к качеству
SQALab
 
Шаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникацииШаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникации
SQALab
 

Destaque (15)

froglogic Squish (Qt edition)
froglogic Squish (Qt edition)froglogic Squish (Qt edition)
froglogic Squish (Qt edition)
 
qmake入門
qmake入門qmake入門
qmake入門
 
Инструменты и подходы к сессионному тестированию
Инструменты и подходы к сессионному тестированиюИнструменты и подходы к сессионному тестированию
Инструменты и подходы к сессионному тестированию
 
Светлана Федянина - Роль тестировщика в Lean
Светлана Федянина - Роль тестировщика в LeanСветлана Федянина - Роль тестировщика в Lean
Светлана Федянина - Роль тестировщика в Lean
 
Я занимаюсь Fitnesse`ом каждый день
Я занимаюсь Fitnesse`ом каждый деньЯ занимаюсь Fitnesse`ом каждый день
Я занимаюсь Fitnesse`ом каждый день
 
Послание аналитиков тестировщикам
Послание аналитиков тестировщикамПослание аналитиков тестировщикам
Послание аналитиков тестировщикам
 
Parasoft SOAtest
Parasoft SOAtestParasoft SOAtest
Parasoft SOAtest
 
Feature Injection: работаем с требованиями
Feature Injection: работаем с требованиямиFeature Injection: работаем с требованиями
Feature Injection: работаем с требованиями
 
Роли, в которые играют тестировщики
Роли, в которые играют тестировщикиРоли, в которые играют тестировщики
Роли, в которые играют тестировщики
 
Развитие в тестировании: включаем реактивный двигатель!
Развитие в тестировании: включаем реактивный двигатель!Развитие в тестировании: включаем реактивный двигатель!
Развитие в тестировании: включаем реактивный двигатель!
 
User Interface Тестирование – все ли так просто?
User Interface Тестирование – все ли так просто?User Interface Тестирование – все ли так просто?
User Interface Тестирование – все ли так просто?
 
Тестирование спецификаций
Тестирование спецификацийТестирование спецификаций
Тестирование спецификаций
 
Аналитик и Тестировщик в одном лице – путь к качеству
Аналитик и Тестировщик в одном лице – путь к качествуАналитик и Тестировщик в одном лице – путь к качеству
Аналитик и Тестировщик в одном лице – путь к качеству
 
Impact Analysis в тестировании
Impact Analysis в тестированииImpact Analysis в тестировании
Impact Analysis в тестировании
 
Шаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникацииШаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникации
 

Semelhante a Froglogic Squish

iPhone Unit Testing (Google tool Box)
iPhone Unit Testing (Google tool Box)iPhone Unit Testing (Google tool Box)
iPhone Unit Testing (Google tool Box)
Yandex
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
UA Mobile
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
InTRUEdeR
 
Система управления автоматическими тестами на примере использования Visual St...
Система управления автоматическими тестами на примере использования Visual St...Система управления автоматическими тестами на примере использования Visual St...
Система управления автоматическими тестами на примере использования Visual St...
SQALab
 

Semelhante a Froglogic Squish (20)

Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммы
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
iPhone Unit Testing (Google tool Box)
iPhone Unit Testing (Google tool Box)iPhone Unit Testing (Google tool Box)
iPhone Unit Testing (Google tool Box)
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестирования
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
 
PowerShell
PowerShellPowerShell
PowerShell
 
UI+unit testing in iOS
UI+unit testing in iOSUI+unit testing in iOS
UI+unit testing in iOS
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Система управления автоматическими тестами на примере использования Visual St...
Система управления автоматическими тестами на примере использования Visual St...Система управления автоматическими тестами на примере использования Visual St...
Система управления автоматическими тестами на примере использования Visual St...
 

Mais de SQALab

Mais de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

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 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  Мой Круг  Есливам нужны какие-то материалы – не стесняйтесь – пишите!