Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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

Использование 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