SlideShare a Scribd company logo
1 of 26
www.avast.comwww.avast.com
Использование Open Source
инструментов для
автоматизации тестирования
Сергей Никонюк
3 февраля 2013 г.
О докладчике
Сергей Никонюк
QA Engineer в
компании AVAST Software
Прага, Чехия
nikonuk@avast.com
2
Содержание доклада
1. Постановка задачи
2. Jenkins - сервер автоматизации процесса тестирования
3. Sikuli – автоматизация с помощью изображений
4. Robot Framework – инструмент для автоматизации
тестирования ПО
5. Staf – мультиплатформенное решения для соединения
с удаленными машинами
6. Демонстрaция примера
7. Вопросы
3
Постановка задачи
AVAST антивирус
Сборка инсталлятора
(setup.exe)
Сценарии тестов
и вспомогательные файлы
Результаты
Автоматизация
• передача файлов
• выполнения тестов
• оценка результатов
4
РАЗРАБОТЧИКИ
ТЕСТИРОВЩИКИ
build (setup.exe)
сборка
файлы
сценарии тестов
былд
отчет
5
• трансфер файлов
• выполнение тестов
• оценка результатов
Приемочное тестирование
Составляющие фреймворка
Jenkins – сервер автоматизации
Особенности
• open source
• простая инсталляция и конфигурация
• мультиплатформенность (Java)
• планирование периодичности выполнения задач
используя механизм подобный cron
• поддерживает работу с системами контроля версий
(CVS, Subversion, Mercurial, Git, Clearcase)
• визуализация результатов теста
• исполняет shell-скрипты и команды Windows
6
7
Jenkins – результаты теста
Особенности
• open source
• мультиплатформенность (Windows, Mac OS X
и Linux)
• собственная IDE
• написание скриптов в Jython (Python)
• широкие возможности API (запуск аппликаций
и контроль над ними, действия
мыши, клавиш, исключения)
• окружение – Java 6 + Jython 2.5
8
SIKULI (www.sikuli.org)
SIKULI
• + Независимость на платформе (Java)
• + Независимость от тестируемой технологии
• + Высокая надежность
• + Простота создания сценариев
• – Зависимость от разрешения экрана
• – Высокая чувствительность к измненениям GUI
• – Низкая способность распознавания текста
9
Robot Framework
(code.google.com/p/robotframework/)
Особенности
Поддерживаемые библиотеки
• внутренняя (OperatingSystem, Screenshot, Telnet,
Collections, String, Dialogs, Remote, XML)
• вннешние (SeleniumLibrary, watir-robot, Watir,
WatinLibrary, SwingLibrary, EclipseLibrary, AutoItLibrary,
DatabaseLibrary, SSHLibrary, HTTP test library)
• open source
• мультиплатформенность
• поддержка библиотек в Python (Jython,
IronPython) и Java
• standalone JAR дистрибуция с Jython
• поддержка языка C (Python C API)
10
STAF (staf.sourceforge.net)
Особенности
• open source
• мультиплатформенность
• peer-to-peer среда
• поддержка политики безопасности
• внутренне сервисы-команды
(пересылка файлов, управлние
процессами ...)
• поддержка внешних сервисов (Java
jar, C ++ dll)
• возможность управления как
локальной машиной так и удаленной
• конфигурационный файл STAF.cfg
11
STAF клиент STAF клиент
peer-to-peer
STAF – сервисы
12
• Внутренние сервисы
Вызываемые из процесса STAFProc
• Внешние сервисы
Подлючаемые из Java jar или C++ dll файлов
• Пользовательские сервисы
STAF – внутренние сервисы
13
• DIAG Provides diagnostics services Internal ("DIAG")
• DELAY Provides a means to sleep a specified amount of time Internal ("DELAY")
• ECHO Echos back a supplied message Internal ("ECHO")
• FILE SYSTEM Allows you to get and copy files across the network Internal ("FS")
• HANDLE Provides information about existing STAF handles Internal ("HANDLE")
• HELP Provides Help on STAF error codes Internal ("HELP")
• MISC Handles miscellaneous commands such as displaying the version of STAF
• that is currently running Internal ("MISC")
• PING Provides a simple is-alive message Internal ("PING")
• PROCESS Allows you to start, stop, and query processes Internal ("PROCESS")
• QUEUE Provides a network-enabled IPC mechanism for STAF Programs Internal
("QUEUE")
• SEMAPHORE Provides network-enabled named event and mutex semaphores Internal
("SEM")
• SERVICE Allows you to list services available on a machine and to examine the
• Requests that have been submitted on a machineInternal ("SERVICE")
• SHUTDOWN Provides a means to shutdown STAF and register for shutdown
• Notifications Internal ("SHUTDOWN")
• TRACE Provides tracing information for STAF services Internal ("TRACE")
• TRUST Interfaces with STAF's security Internal ("TRUST")
• VARIABLE Provides a method for maintaining configuration and runtime data
• (variables) Internal ("VAR")
STAF – внешние сервисы
14
• CRON Calls into STAF services at a specified time interval External (Java)
• EMAIL Allows you to send email messages External (Java)
• EVENT Provides a publish/subscribe notification system External (Java)
• EVENTMANAGER Allows you to call STAF services when a specified Event
occurs External (Java)
• HTTP Allows you to make HTTP requests which can be grouped together in a
session External (Java)
• LOG Provides a full-featured logging facility External (C++)
• MONITOR Allows a testcase to publish its current running execution status for
others to read External (C++)
• RESOURCE POOL Allows you to manage exclusive access to pools of
elements, e.g. VM UserIDs or Software Licenses External (C++)
• STAX Provides an XML-based execution engine External (Java)
• ZIP Provides a means to zip/unzip/list/delete PKZip/WinZip compatible
archives External (C++)
STAF – политика безопасности
15
• Политика безопасности в STAF определена уровнем
доверия машин machine level и/или пользователей
user level
• Уровень trust level равный 0 – нет доступа
• Уровень trust level равный 1 – только PING и HELP
• Уровень trust level равный 2 – только query/view
• Уровень trust level равный 3 – доступ к протоколам ...
• Уровень trust level равный 4 – копирование файлов ... удаление логов
• Уровень trust level равный 5 – доступ без ограничений
• По умолчанию машинам присваивается default trust
level
• Каждый STAF сервис определен минимальным
необходимым уровнем доверия
STAF – STAF.cfg
16
# Turn on tracing of internal errors and deprecated options
trace enable tracepoints "error deprecated"
# Enable TCP/IP connections
interface ssl library STAFTCP option Secure=Yes option Port=6550
interface tcp library STAFTCP option Secure=No option Port=6500
# Set default local trust
trust machine local://local level 5
trust machine tcp://10.0.2.2 level 5
trust default level 1
# Add default service loader
serviceloader library STAFDSLS
robotframework-2.7.jarsikuli-script.jar
run_free_instup_win_xp.bat
@echo off
set sikuli_jar=C:Program FilesSikuli Xsikuli-script.jar
java -cp "robotframework-2.7.jar;%sikuli_jar%" ^
-Dpython.path="%sikuli_jar%/Lib" ^
org.robotframework.RobotFramework ^
--pythonpath=SetupLib ^
--outputdir=results ^
--xunitfile=unit_out.xml ^
--loglevel=TRACE ^
robot_suitefree_instup_win_xp.txt
%*
17
Пример 1
18
Пример 2 TEST CASE
*** Settings ***
Library av7set.Av7setup
*** Variables ***
${SETUP_FREE_PATH} C:tmpavast_setup
${SETUP_FREE_EXE} avast_free_antivirus_setup.exe
*** Test Cases ***
Free Express Install Windows XP
Minimize All Win
Run App ${SETUP_FREE_PATH}${SETUP_FREE_EXE}
Wait Image screen set_1 0 0 60
Action Object Click screen ins_button 0 0
Action Object Click screen cross 0 0
Action Object Click screen yes_button 0 0
Action Object Click screen finish_button 0 0
free_instup_win_xp.txt19
Пример 3
from sikuli.Sikuli import *
import platform
import datetime
import subprocess
import time
import shutil
#add custom image library
addImagePath("images")
…
av7set.py
20
Пример 4
…
class Av7setup(object):
def runApp(self, appExe):
apprun = str(appExe)
responseCode = subprocess.Popen(apprun)
return responseCode
def minimizeAllWin(self):
type("d", KeyModifier.WIN)
def waitImage(self, reg, imgName, off_x, off_y, tm):
sim = 0.95
patt = Pattern(imgName + ".png").similar(sim).targetOffset(int(off_x),int(off_y))
t = int(tm)
while t > 0:
mm = exists(patt)
if mm != None:
return mm
else:
sleep(5)
t = t – 5
return Pattern(None)
def actionObjectClick(self, reg, objName, off_x, off_y):
m = self.waitImage(reg, objName, off_x, off_y, 20)
click(m)
av7set.py
21
Пример 5
22
Пример 6
«Local»
IP: 127.0.0.1
PORT: 14816
IP: 127.0.0.1
PORT: 6500
C:test
23
DEV_NIK_WIN_XP
staf 127.0.0.1@6500 PROCESS start command "VBoxManage startvm
DEV_NIK_WIN_XP“
staf 127.0.0.1@14816 PING ping
staf local FS copy directory test todirectory tmp tomachine 127.0.0.1@14816
staf 127.0.0.1@14816 PROCESS start command tmprun_free_instup_win_xp.bat
RETURNSTDOUT STDERRTOSTDOUT WAIT
staf 127.0.0.1@14816 FS copy directory tmpresults todirectory test
staf 127.0.0.1@6500 PROCESS start command "VBoxManage controlvm
DEV_NIK_WIN_XP acpipowerbutton”
ping ping
pong
«Virtual»
Пример 7
C:tmp
24
Демонстрация
Основные тезисы доклада
1. Постановка задачи
2. Jenkins – взгляд тестировщика
3. Sikuli – автоматизация с помощью изображений
4. Robot Framework – инструмент для автоматизации
тестирования ПО
5. Staf – мультиплатформенное решения для соединения
с удаленными машинами
6. Демонстрация примера
25
Вопросы и ответы
Спасибо за внимание
26
nikonuk@avast.com

More Related Content

What's hot

Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиDotNetConf
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияbearoff
 
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Ontico
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Ontico
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиSQALab
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Ontico
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET CoreDotNetConf
 
Service Discovery. More that it seems
Service Discovery. More that it seemsService Discovery. More that it seems
Service Discovery. More that it seemsAleksandr Tarasov
 
12 - Java. Разработка сетевых приложений на Java
12 - Java. Разработка сетевых приложений на Java12 - Java. Разработка сетевых приложений на Java
12 - Java. Разработка сетевых приложений на JavaRoman Brovko
 
10 - Java. Многопоточность в Java: основы
10 - Java. Многопоточность в Java: основы10 - Java. Многопоточность в Java: основы
10 - Java. Многопоточность в Java: основыRoman Brovko
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)Ontico
 
06 - Java. Ввод/вывод, доступ к файловой системе
06 - Java. Ввод/вывод, доступ к файловой системе06 - Java. Ввод/вывод, доступ к файловой системе
06 - Java. Ввод/вывод, доступ к файловой системеRoman Brovko
 
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)Ontico
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)Ontico
 
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Ontico
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOntico
 

What's hot (20)

Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
 
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Service Discovery. More that it seems
Service Discovery. More that it seemsService Discovery. More that it seems
Service Discovery. More that it seems
 
12 - Java. Разработка сетевых приложений на Java
12 - Java. Разработка сетевых приложений на Java12 - Java. Разработка сетевых приложений на Java
12 - Java. Разработка сетевых приложений на Java
 
10 - Java. Многопоточность в Java: основы
10 - Java. Многопоточность в Java: основы10 - Java. Многопоточность в Java: основы
10 - Java. Многопоточность в Java: основы
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
 
06 - Java. Ввод/вывод, доступ к файловой системе
06 - Java. Ввод/вывод, доступ к файловой системе06 - Java. Ввод/вывод, доступ к файловой системе
06 - Java. Ввод/вывод, доступ к файловой системе
 
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)
 
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
 

Viewers also liked

Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...
Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...
Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...SQALab
 
Битва при юзабилити
Битва при юзабилитиБитва при юзабилити
Битва при юзабилитиSQALab
 
Правила роста команды тестирования – мифы и реальность
Правила роста команды тестирования – мифы и реальностьПравила роста команды тестирования – мифы и реальность
Правила роста команды тестирования – мифы и реальностьSQALab
 
Математика для тестировщиков
Математика для тестировщиковМатематика для тестировщиков
Математика для тестировщиковSQALab
 
JIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиковJIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиковSQALab
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисовSQALab
 
Обзор методов юзабилити-тестирования
Обзор методов юзабилити-тестированияОбзор методов юзабилити-тестирования
Обзор методов юзабилити-тестированияSQALab
 
автоматизация тестирования веб приложений павел липский
автоматизация тестирования веб приложений   павел липскийавтоматизация тестирования веб приложений   павел липский
автоматизация тестирования веб приложений павел липскийMedia Gorod
 
Работаем с огоньком!
Работаем с огоньком!Работаем с огоньком!
Работаем с огоньком!SQALab
 
Велосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификаций
Велосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификацийВелосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификаций
Велосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификацийSQALab
 
Риски. Философия и практические рекомендации
Риски. Философия и практические рекомендацииРиски. Философия и практические рекомендации
Риски. Философия и практические рекомендацииSQALab
 
Способы повышения эффективности в работе тестировщика
Способы повышения эффективности в работе тестировщикаСпособы повышения эффективности в работе тестировщика
Способы повышения эффективности в работе тестировщикаSQALab
 
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalksSelenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalksLohika_Odessa_TechTalks
 
Тестирование без требований
Тестирование без требованийТестирование без требований
Тестирование без требованийArtem Shapoval
 
Нескучное тестирование с pytest
Нескучное тестирование с pytestНескучное тестирование с pytest
Нескучное тестирование с pytestRoman Imankulov
 
Роли, в которые играют тестировщики
Роли, в которые играют тестировщикиРоли, в которые играют тестировщики
Роли, в которые играют тестировщикиSQALab
 
Мини-школа тестировщиков, ориентированных на Web
Мини-школа тестировщиков, ориентированных на WebМини-школа тестировщиков, ориентированных на Web
Мини-школа тестировщиков, ориентированных на WebSQALab
 
От ручного тестирования к автоматическому: опыт внедрения в крупном проекте
От ручного тестирования к автоматическому: опыт внедрения в крупном проектеОт ручного тестирования к автоматическому: опыт внедрения в крупном проекте
От ручного тестирования к автоматическому: опыт внедрения в крупном проектеSQALab
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...HappyDev
 
Оптимизация процесса тестирования локализаций
Оптимизация процесса тестирования локализацийОптимизация процесса тестирования локализаций
Оптимизация процесса тестирования локализацийSQALab
 

Viewers also liked (20)

Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...
Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...
Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...
 
Битва при юзабилити
Битва при юзабилитиБитва при юзабилити
Битва при юзабилити
 
Правила роста команды тестирования – мифы и реальность
Правила роста команды тестирования – мифы и реальностьПравила роста команды тестирования – мифы и реальность
Правила роста команды тестирования – мифы и реальность
 
Математика для тестировщиков
Математика для тестировщиковМатематика для тестировщиков
Математика для тестировщиков
 
JIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиковJIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиков
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисов
 
Обзор методов юзабилити-тестирования
Обзор методов юзабилити-тестированияОбзор методов юзабилити-тестирования
Обзор методов юзабилити-тестирования
 
автоматизация тестирования веб приложений павел липский
автоматизация тестирования веб приложений   павел липскийавтоматизация тестирования веб приложений   павел липский
автоматизация тестирования веб приложений павел липский
 
Работаем с огоньком!
Работаем с огоньком!Работаем с огоньком!
Работаем с огоньком!
 
Велосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификаций
Велосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификацийВелосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификаций
Велосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификаций
 
Риски. Философия и практические рекомендации
Риски. Философия и практические рекомендацииРиски. Философия и практические рекомендации
Риски. Философия и практические рекомендации
 
Способы повышения эффективности в работе тестировщика
Способы повышения эффективности в работе тестировщикаСпособы повышения эффективности в работе тестировщика
Способы повышения эффективности в работе тестировщика
 
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalksSelenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
 
Тестирование без требований
Тестирование без требованийТестирование без требований
Тестирование без требований
 
Нескучное тестирование с pytest
Нескучное тестирование с pytestНескучное тестирование с pytest
Нескучное тестирование с pytest
 
Роли, в которые играют тестировщики
Роли, в которые играют тестировщикиРоли, в которые играют тестировщики
Роли, в которые играют тестировщики
 
Мини-школа тестировщиков, ориентированных на Web
Мини-школа тестировщиков, ориентированных на WebМини-школа тестировщиков, ориентированных на Web
Мини-школа тестировщиков, ориентированных на Web
 
От ручного тестирования к автоматическому: опыт внедрения в крупном проекте
От ручного тестирования к автоматическому: опыт внедрения в крупном проектеОт ручного тестирования к автоматическому: опыт внедрения в крупном проекте
От ручного тестирования к автоматическому: опыт внедрения в крупном проекте
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
 
Оптимизация процесса тестирования локализаций
Оптимизация процесса тестирования локализацийОптимизация процесса тестирования локализаций
Оптимизация процесса тестирования локализаций
 

Similar to Использование Open Source инструментов для автоматизации тестирования

Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеKaspersky
 
Полезное покрытие кода
Полезное покрытие кодаПолезное покрытие кода
Полезное покрытие кодаSQALab
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...SQALab
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев кировqasib
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеAlex Tumanoff
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...DevDay
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Слои тестового фрамеворка. Что? Где? Когда?
Слои тестового фрамеворка. Что? Где? Когда?Слои тестового фрамеворка. Что? Где? Когда?
Слои тестового фрамеворка. Что? Где? Когда?COMAQA.BY
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusCisco Russia
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 

Similar to Использование Open Source инструментов для автоматизации тестирования (20)

Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
 
Полезное покрытие кода
Полезное покрытие кодаПолезное покрытие кода
Полезное покрытие кода
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев киров
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопе
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Слои тестового фрамеворка. Что? Где? Когда?
Слои тестового фрамеворка. Что? Где? Когда?Слои тестового фрамеворка. Что? Где? Когда?
Слои тестового фрамеворка. Что? Где? Когда?
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 

More from SQALab

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

More from 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 или как тест-менеджеру перекроить внут...
 

Использование Open Source инструментов для автоматизации тестирования

  • 1. www.avast.comwww.avast.com Использование Open Source инструментов для автоматизации тестирования Сергей Никонюк 3 февраля 2013 г.
  • 2. О докладчике Сергей Никонюк QA Engineer в компании AVAST Software Прага, Чехия nikonuk@avast.com 2
  • 3. Содержание доклада 1. Постановка задачи 2. Jenkins - сервер автоматизации процесса тестирования 3. Sikuli – автоматизация с помощью изображений 4. Robot Framework – инструмент для автоматизации тестирования ПО 5. Staf – мультиплатформенное решения для соединения с удаленными машинами 6. Демонстрaция примера 7. Вопросы 3
  • 4. Постановка задачи AVAST антивирус Сборка инсталлятора (setup.exe) Сценарии тестов и вспомогательные файлы Результаты Автоматизация • передача файлов • выполнения тестов • оценка результатов 4
  • 5. РАЗРАБОТЧИКИ ТЕСТИРОВЩИКИ build (setup.exe) сборка файлы сценарии тестов былд отчет 5 • трансфер файлов • выполнение тестов • оценка результатов Приемочное тестирование Составляющие фреймворка
  • 6. Jenkins – сервер автоматизации Особенности • open source • простая инсталляция и конфигурация • мультиплатформенность (Java) • планирование периодичности выполнения задач используя механизм подобный cron • поддерживает работу с системами контроля версий (CVS, Subversion, Mercurial, Git, Clearcase) • визуализация результатов теста • исполняет shell-скрипты и команды Windows 6
  • 8. Особенности • open source • мультиплатформенность (Windows, Mac OS X и Linux) • собственная IDE • написание скриптов в Jython (Python) • широкие возможности API (запуск аппликаций и контроль над ними, действия мыши, клавиш, исключения) • окружение – Java 6 + Jython 2.5 8 SIKULI (www.sikuli.org)
  • 9. SIKULI • + Независимость на платформе (Java) • + Независимость от тестируемой технологии • + Высокая надежность • + Простота создания сценариев • – Зависимость от разрешения экрана • – Высокая чувствительность к измненениям GUI • – Низкая способность распознавания текста 9
  • 10. Robot Framework (code.google.com/p/robotframework/) Особенности Поддерживаемые библиотеки • внутренняя (OperatingSystem, Screenshot, Telnet, Collections, String, Dialogs, Remote, XML) • вннешние (SeleniumLibrary, watir-robot, Watir, WatinLibrary, SwingLibrary, EclipseLibrary, AutoItLibrary, DatabaseLibrary, SSHLibrary, HTTP test library) • open source • мультиплатформенность • поддержка библиотек в Python (Jython, IronPython) и Java • standalone JAR дистрибуция с Jython • поддержка языка C (Python C API) 10
  • 11. STAF (staf.sourceforge.net) Особенности • open source • мультиплатформенность • peer-to-peer среда • поддержка политики безопасности • внутренне сервисы-команды (пересылка файлов, управлние процессами ...) • поддержка внешних сервисов (Java jar, C ++ dll) • возможность управления как локальной машиной так и удаленной • конфигурационный файл STAF.cfg 11 STAF клиент STAF клиент peer-to-peer
  • 12. STAF – сервисы 12 • Внутренние сервисы Вызываемые из процесса STAFProc • Внешние сервисы Подлючаемые из Java jar или C++ dll файлов • Пользовательские сервисы
  • 13. STAF – внутренние сервисы 13 • DIAG Provides diagnostics services Internal ("DIAG") • DELAY Provides a means to sleep a specified amount of time Internal ("DELAY") • ECHO Echos back a supplied message Internal ("ECHO") • FILE SYSTEM Allows you to get and copy files across the network Internal ("FS") • HANDLE Provides information about existing STAF handles Internal ("HANDLE") • HELP Provides Help on STAF error codes Internal ("HELP") • MISC Handles miscellaneous commands such as displaying the version of STAF • that is currently running Internal ("MISC") • PING Provides a simple is-alive message Internal ("PING") • PROCESS Allows you to start, stop, and query processes Internal ("PROCESS") • QUEUE Provides a network-enabled IPC mechanism for STAF Programs Internal ("QUEUE") • SEMAPHORE Provides network-enabled named event and mutex semaphores Internal ("SEM") • SERVICE Allows you to list services available on a machine and to examine the • Requests that have been submitted on a machineInternal ("SERVICE") • SHUTDOWN Provides a means to shutdown STAF and register for shutdown • Notifications Internal ("SHUTDOWN") • TRACE Provides tracing information for STAF services Internal ("TRACE") • TRUST Interfaces with STAF's security Internal ("TRUST") • VARIABLE Provides a method for maintaining configuration and runtime data • (variables) Internal ("VAR")
  • 14. STAF – внешние сервисы 14 • CRON Calls into STAF services at a specified time interval External (Java) • EMAIL Allows you to send email messages External (Java) • EVENT Provides a publish/subscribe notification system External (Java) • EVENTMANAGER Allows you to call STAF services when a specified Event occurs External (Java) • HTTP Allows you to make HTTP requests which can be grouped together in a session External (Java) • LOG Provides a full-featured logging facility External (C++) • MONITOR Allows a testcase to publish its current running execution status for others to read External (C++) • RESOURCE POOL Allows you to manage exclusive access to pools of elements, e.g. VM UserIDs or Software Licenses External (C++) • STAX Provides an XML-based execution engine External (Java) • ZIP Provides a means to zip/unzip/list/delete PKZip/WinZip compatible archives External (C++)
  • 15. STAF – политика безопасности 15 • Политика безопасности в STAF определена уровнем доверия машин machine level и/или пользователей user level • Уровень trust level равный 0 – нет доступа • Уровень trust level равный 1 – только PING и HELP • Уровень trust level равный 2 – только query/view • Уровень trust level равный 3 – доступ к протоколам ... • Уровень trust level равный 4 – копирование файлов ... удаление логов • Уровень trust level равный 5 – доступ без ограничений • По умолчанию машинам присваивается default trust level • Каждый STAF сервис определен минимальным необходимым уровнем доверия
  • 16. STAF – STAF.cfg 16 # Turn on tracing of internal errors and deprecated options trace enable tracepoints "error deprecated" # Enable TCP/IP connections interface ssl library STAFTCP option Secure=Yes option Port=6550 interface tcp library STAFTCP option Secure=No option Port=6500 # Set default local trust trust machine local://local level 5 trust machine tcp://10.0.2.2 level 5 trust default level 1 # Add default service loader serviceloader library STAFDSLS
  • 17. robotframework-2.7.jarsikuli-script.jar run_free_instup_win_xp.bat @echo off set sikuli_jar=C:Program FilesSikuli Xsikuli-script.jar java -cp "robotframework-2.7.jar;%sikuli_jar%" ^ -Dpython.path="%sikuli_jar%/Lib" ^ org.robotframework.RobotFramework ^ --pythonpath=SetupLib ^ --outputdir=results ^ --xunitfile=unit_out.xml ^ --loglevel=TRACE ^ robot_suitefree_instup_win_xp.txt %* 17 Пример 1
  • 19. *** Settings *** Library av7set.Av7setup *** Variables *** ${SETUP_FREE_PATH} C:tmpavast_setup ${SETUP_FREE_EXE} avast_free_antivirus_setup.exe *** Test Cases *** Free Express Install Windows XP Minimize All Win Run App ${SETUP_FREE_PATH}${SETUP_FREE_EXE} Wait Image screen set_1 0 0 60 Action Object Click screen ins_button 0 0 Action Object Click screen cross 0 0 Action Object Click screen yes_button 0 0 Action Object Click screen finish_button 0 0 free_instup_win_xp.txt19 Пример 3
  • 20. from sikuli.Sikuli import * import platform import datetime import subprocess import time import shutil #add custom image library addImagePath("images") … av7set.py 20 Пример 4
  • 21. … class Av7setup(object): def runApp(self, appExe): apprun = str(appExe) responseCode = subprocess.Popen(apprun) return responseCode def minimizeAllWin(self): type("d", KeyModifier.WIN) def waitImage(self, reg, imgName, off_x, off_y, tm): sim = 0.95 patt = Pattern(imgName + ".png").similar(sim).targetOffset(int(off_x),int(off_y)) t = int(tm) while t > 0: mm = exists(patt) if mm != None: return mm else: sleep(5) t = t – 5 return Pattern(None) def actionObjectClick(self, reg, objName, off_x, off_y): m = self.waitImage(reg, objName, off_x, off_y, 20) click(m) av7set.py 21 Пример 5
  • 23. «Local» IP: 127.0.0.1 PORT: 14816 IP: 127.0.0.1 PORT: 6500 C:test 23 DEV_NIK_WIN_XP staf 127.0.0.1@6500 PROCESS start command "VBoxManage startvm DEV_NIK_WIN_XP“ staf 127.0.0.1@14816 PING ping staf local FS copy directory test todirectory tmp tomachine 127.0.0.1@14816 staf 127.0.0.1@14816 PROCESS start command tmprun_free_instup_win_xp.bat RETURNSTDOUT STDERRTOSTDOUT WAIT staf 127.0.0.1@14816 FS copy directory tmpresults todirectory test staf 127.0.0.1@6500 PROCESS start command "VBoxManage controlvm DEV_NIK_WIN_XP acpipowerbutton” ping ping pong «Virtual» Пример 7 C:tmp
  • 25. Основные тезисы доклада 1. Постановка задачи 2. Jenkins – взгляд тестировщика 3. Sikuli – автоматизация с помощью изображений 4. Robot Framework – инструмент для автоматизации тестирования ПО 5. Staf – мультиплатформенное решения для соединения с удаленными машинами 6. Демонстрация примера 25
  • 26. Вопросы и ответы Спасибо за внимание 26 nikonuk@avast.com