Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,657 views

Published on

Доклад Сергея Никонюка, SQA Days-13, 26-27 апреля 2013, www.sqadays.com

Published in: Education
  • Login to see the comments

  • Be the first to like this

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

  1. 1. www.avast.comwww.avast.comИспользование Open Sourceинструментов дляавтоматизации тестированияСергей Никонюк3 февраля 2013 г.
  2. 2. О докладчикеСергей НиконюкQA Engineer вкомпании AVAST SoftwareПрага, Чехияnikonuk@avast.com2
  3. 3. Содержание доклада1. Постановка задачи2. Jenkins - сервер автоматизации процесса тестирования3. Sikuli – автоматизация с помощью изображений4. Robot Framework – инструмент для автоматизациитестирования ПО5. Staf – мультиплатформенное решения для соединенияс удаленными машинами6. Демонстрaция примера7. Вопросы3
  4. 4. Постановка задачиAVAST антивирусСборка инсталлятора(setup.exe)Сценарии тестови вспомогательные файлыРезультатыАвтоматизация• передача файлов• выполнения тестов• оценка результатов4
  5. 5. РАЗРАБОТЧИКИТЕСТИРОВЩИКИbuild (setup.exe)сборкафайлысценарии тестовбылдотчет5• трансфер файлов• выполнение тестов• оценка результатовПриемочное тестированиеСоставляющие фреймворка
  6. 6. Jenkins – сервер автоматизацииОсобенности• open source• простая инсталляция и конфигурация• мультиплатформенность (Java)• планирование периодичности выполнения задачиспользуя механизм подобный cron• поддерживает работу с системами контроля версий(CVS, Subversion, Mercurial, Git, Clearcase)• визуализация результатов теста• исполняет shell-скрипты и команды Windows6
  7. 7. 7Jenkins – результаты теста
  8. 8. Особенности• open source• мультиплатформенность (Windows, Mac OS Xи Linux)• собственная IDE• написание скриптов в Jython (Python)• широкие возможности API (запуск аппликацийи контроль над ними, действиямыши, клавиш, исключения)• окружение – Java 6 + Jython 2.58SIKULI (www.sikuli.org)
  9. 9. SIKULI• + Независимость на платформе (Java)• + Независимость от тестируемой технологии• + Высокая надежность• + Простота создания сценариев• – Зависимость от разрешения экрана• – Высокая чувствительность к измненениям GUI• – Низкая способность распознавания текста9
  10. 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. 11. STAF (staf.sourceforge.net)Особенности• open source• мультиплатформенность• peer-to-peer среда• поддержка политики безопасности• внутренне сервисы-команды(пересылка файлов, управлниепроцессами ...)• поддержка внешних сервисов (Javajar, C ++ dll)• возможность управления каклокальной машиной так и удаленной• конфигурационный файл STAF.cfg11STAF клиент STAF клиентpeer-to-peer
  12. 12. STAF – сервисы12• Внутренние сервисыВызываемые из процесса STAFProc• Внешние сервисыПодлючаемые из Java jar или C++ dll файлов• Пользовательские сервисы
  13. 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 STAFs security Internal ("TRUST")• VARIABLE Provides a method for maintaining configuration and runtime data• (variables) Internal ("VAR")
  14. 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 Eventoccurs External (Java)• HTTP Allows you to make HTTP requests which can be grouped together in asession External (Java)• LOG Provides a full-featured logging facility External (C++)• MONITOR Allows a testcase to publish its current running execution status forothers to read External (C++)• RESOURCE POOL Allows you to manage exclusive access to pools ofelements, 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 compatiblearchives External (C++)
  15. 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 trustlevel• Каждый STAF сервис определен минимальнымнеобходимым уровнем доверия
  16. 16. STAF – STAF.cfg16# Turn on tracing of internal errors and deprecated optionstrace enable tracepoints "error deprecated"# Enable TCP/IP connectionsinterface ssl library STAFTCP option Secure=Yes option Port=6550interface tcp library STAFTCP option Secure=No option Port=6500# Set default local trusttrust machine local://local level 5trust machine tcp://10.0.2.2 level 5trust default level 1# Add default service loaderserviceloader library STAFDSLS
  17. 17. robotframework-2.7.jarsikuli-script.jarrun_free_instup_win_xp.bat@echo offset sikuli_jar=C:Program FilesSikuli Xsikuli-script.jarjava -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. 18. 18Пример 2 TEST CASE
  19. 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 XPMinimize All WinRun App ${SETUP_FREE_PATH}${SETUP_FREE_EXE}Wait Image screen set_1 0 0 60Action Object Click screen ins_button 0 0Action Object Click screen cross 0 0Action Object Click screen yes_button 0 0Action Object Click screen finish_button 0 0free_instup_win_xp.txt19Пример 3
  20. 20. from sikuli.Sikuli import *import platformimport datetimeimport subprocessimport timeimport shutil#add custom image libraryaddImagePath("images")…av7set.py20Пример 4
  21. 21. …class Av7setup(object):def runApp(self, appExe):apprun = str(appExe)responseCode = subprocess.Popen(apprun)return responseCodedef minimizeAllWin(self):type("d", KeyModifier.WIN)def waitImage(self, reg, imgName, off_x, off_y, tm):sim = 0.95patt = 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 mmelse:sleep(5)t = t – 5return Pattern(None)def actionObjectClick(self, reg, objName, off_x, off_y):m = self.waitImage(reg, objName, off_x, off_y, 20)click(m)av7set.py21Пример 5
  22. 22. 22Пример 6
  23. 23. «Local»IP: 127.0.0.1PORT: 14816IP: 127.0.0.1PORT: 6500C:test23DEV_NIK_WIN_XPstaf 127.0.0.1@6500 PROCESS start command "VBoxManage startvmDEV_NIK_WIN_XP“staf 127.0.0.1@14816 PING pingstaf local FS copy directory test todirectory tmp tomachine 127.0.0.1@14816staf 127.0.0.1@14816 PROCESS start command tmprun_free_instup_win_xp.batRETURNSTDOUT STDERRTOSTDOUT WAITstaf 127.0.0.1@14816 FS copy directory tmpresults todirectory teststaf 127.0.0.1@6500 PROCESS start command "VBoxManage controlvmDEV_NIK_WIN_XP acpipowerbutton”ping pingpong«Virtual»Пример 7C:tmp
  24. 24. 24Демонстрация
  25. 25. Основные тезисы доклада1. Постановка задачи2. Jenkins – взгляд тестировщика3. Sikuli – автоматизация с помощью изображений4. Robot Framework – инструмент для автоматизациитестирования ПО5. Staf – мультиплатформенное решения для соединенияс удаленными машинами6. Демонстрация примера25
  26. 26. Вопросы и ответыСпасибо за внимание26nikonuk@avast.com

×