froglogic squish

33
Froglogic Squish Мастер класс (начального уровня) Беляевский Андрей

Upload: sqalab

Post on 29-Nov-2014

1.241 views

Category:

Education


5 download

DESCRIPTION

SQA Days-11. День 1. Секция BАндрей Беляевский

TRANSCRIPT

Page 1: Froglogic Squish

Froglogic

Squish Мастер класс

(начального уровня)

Беляевский Андрей

Page 2: Froglogic Squish

Благодарности

Align Technology RDITG Moscow

Start Innovation

Page 3: Froglogic Squish

Что такое Squish

http://www.froglogic.com/squish/gui-

testing/index.php

Кросс-платформенный инструмент

автотестирования GUI

Изначально создан для тестирования Qt

приложений

Используется более 1100 компаниями

Команда разработчиков возглавляется бывшими

разработчиками Qt

Page 4: Froglogic Squish

Поддерживаемы платформы

Windows

Mac OS X

Linux

Unix

iOS (iPhone, iPad, iPod)

Meego

embedded Linux

Page 5: Froglogic Squish

Варианты 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

Page 6: Froglogic Squish

Языки Squish

Python

• Python 2.x (2.4+)

JavaScript

Tcl

Perl

Ruby

• Добавился недавно

Page 7: Froglogic Squish

Что нам интересно в Squish

Мультиплатформенность

Но демка на Windows 7

Отличная поддержка Qt

включая QML

Python

Можно на нем построить гетерогенную

инфраструктуру автотестов

Легкость в освоении и работе

важно для команд-новичков в автотестировании

Page 8: Froglogic Squish

Как устроен Squish

Согласно, документации для проведения

тестирования нужны две вещи:

• Тестируемое приложение

• Скрипт тестирования

Тестируемое приложение и тестовый скрипт

(запускаемый Squish) – всегда изолированные

процессы

Page 9: Froglogic Squish

Как устроен Squish

Изолированные процессы теста и приложения

позволяют:

• избежать падения Squish при падении приложения

• организовать удаленный запуск тестов

• в том числе на мобильных устройствах

• распределенный запуск тестов

Page 10: Froglogic Squish

Как устроен Squish

Лучше официальной документации не скажу…

Page 11: Froglogic Squish

Как устроен Squish

squishserver

• запускает приложение

• инициирует работу библиотеки squishhook

• посредством squishhook опрашивает объекты о

состоянии и выполняет команды от squishrunner на

них

squishrunner

• выполняет тестовый скрипт, коммуницируя через

сокеты с squishserver

squishhook

• открывает доступ к объектам

Page 12: Froglogic Squish

Как определить тип компилятора

1. Качаем отсюда Strings утилиту от бывших

Sysinternals

2. Делаем так

Page 13: Froglogic Squish

Как определить тип компилятора

3. Смотрим полученный файл

Page 14: Froglogic Squish

Как определить тип компилятора

4. Выбираем соответствующий дистрибутив на

портале Froglogic

Page 15: Froglogic Squish

Установка (базовая)

1. Выбираем дистрибутив

Версии компиляторов собравших Squish и

приложение должны совпадать

Версии Qt, с которыми собраны приложение и

Squish должны совпадать

2. Если шаг 1 не выполнен – собираем Squish из

исходников

Не сложно, но нужно быть аккуратным

3. Проходим 7 простых установочных шагов

точно указать Qt Core, используемый

приложением

4. Видео примера простой установки

Page 16: Froglogic Squish

Установка расширенная

Squish можно установить в виде плагина к Eclipse

Интерпретатор языка программирования также

можно использовать отличный от того, что идет в

сборке Squish

Но в данной демонстрации всего этого не будет

Page 17: Froglogic Squish

Установка для запусков тестов

Для запусков тестов (в batch режиме) нужен

сокращенный набор файлов

• bin\*.*

• lib\*.*

• etc\paths.ini

• etc\squish.ini

• etc\*wrapper_descriptors.xml

Page 18: Froglogic Squish

Шаг 1:Qt+Windows Запись теста

Возьмем Squish и запишем рекордером

простой тест для Qt Creator на Windows

• Что нажимать чтобы записать самый простой

тест

Немного причешим и локально запустим.

Проверим что все работает.

Page 19: Froglogic Squish

Шаг 1:Qt+Windows Структура кейза

init() – выполняет код до запуска приложения

main() – обязательная функция в каждом тест-

кейзе

cleanup() – код, выполняющийся в любом случае

после main() – удобен, если потенциально могут

появиться неперехваченные исключения

Page 20: Froglogic Squish

Шаг 1:Qt+Windows Структура теста

Формат файлов Squish – текстовый

suite_test

shared – общие ресурсы

testdata

scripts

tst_case1

• test.py – код тест-кейза

tst_casen – тут могут быть внутренние ресурсы

• object.map – репозиторий объектов

• suite.conf – файл конфигураций

Page 21: Froglogic Squish

Шаг 1:Qt+Windows Структура теста

Структура нашего простого примера

Page 22: Froglogic Squish

Шаг 2:Qt+Windows Результаты

Результаты можно получить в виде

• xml2.1

• xmljunit

• xml2

• xml

• xls

• html

• python squishxml2html.py --dir html –i *.xml

А можем писать в БД

Page 23: Froglogic Squish

Шаг 3:Qt+Windows Event Handlers

Используются для обработки событий

определенного типа (например, появление окон

ошибок)

• installEventHandler(eventName,

handlerFunctionName)

• installEventHandler(className, eventName,

handlerFunctionName)

• installEventHandler(object, eventName,

handlerFunctionName)

Page 24: Froglogic Squish

Шаг 3:Qt+Windows Event Handlers

События

• любое стандартное Qt событие

• или из списка

o Crash

o DialogOpened

o MainWindowOpened

o MessageBoxOpened

o Timeout

o ToplevelWidgetOpened

Page 25: Froglogic Squish

Шаг 4:Qt+Windows Keyword DD

Считываем их входного файла имена функций

для выполнения и их параметры

тест

source(findFile("scripts", "driver.py"))

def main():

drive("keywords.tsv")

Page 26: Froglogic Squish

Шаг 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)

Page 27: Froglogic Squish

Шаг 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();

}

Page 28: Froglogic Squish

Шаг 5: Qt+Windows attach to run

Можно подключаться к уже работающему

Приложение должно быть зарегистрировано

• squishserver --config addAttachableAUT aut

[host:]port

Используем attachToApplication() вместо

startApplication()

Page 29: Froglogic Squish

По секрету

Ближайшие планы развития

1. Squish для Android

2. Более тесная Squish <-> Squish Coco интеграция

3. Поддержка распознавания объектов по

изображению (для работы с OpenGL,

например)

4. Визуальный язык программирования тестов

5. Поддержка Qt 5

Page 30: Froglogic Squish

Это не «спонсорский доклад», но все же …

Скидка 10%

1. Промокод MCSRU12

2. Запишитесь у меня или заполните опрос в

блоге о мастер классе

3. Скидка действует в течение 60 дней

4. Сайт производителя www.froglogic.com

Page 31: Froglogic Squish

Каждый должен расти над собой

Хотите узнать про Squish+iOS?

Интересна тема Squish on Linux/Mac OS – пишите

– сделаю свободный вебинар!

Буду благодарен за критику в опросе

http://zubactik.blogspot.com/

Спасибо!

«Ваше мнение важно для нас!»@

Page 32: Froglogic Squish

Мои контакты

[email protected]

Skype: andrey.belyaevsky

ICQ: 348-925-702

Блог АвтоТестировщика

Vkontakte

Мой Круг

Если вам нужны какие-то материалы – не

стесняйтесь – пишите!

Page 33: Froglogic Squish

Спасибо!!!

Тестеры,

тестировать –

круто!