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

26
www.avast.com www.avast.com Использование Open Source инструментов для автоматизации тестирования Сергей Никонюк 3 февраля 2013 г.

description

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

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

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

www.avast.comwww.avast.com

Использование Open Source

инструментов для

автоматизации тестирования

Сергей Никонюк

3 февраля 2013 г.

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

О докладчике

Сергей Никонюк

QA Engineer в

компании AVAST Software

Прага, Чехия

[email protected]

2

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

Содержание доклада

1. Постановка задачи

2. Jenkins - сервер автоматизации процесса тестирования

3. Sikuli – автоматизация с помощью изображений

4. Robot Framework – инструмент для автоматизации

тестирования ПО

5. Staf – мультиплатформенное решения для соединения

с удаленными машинами

6. Демонстрaция примера

7. Вопросы

3

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

Постановка задачи

AVAST антивирус

Сборка инсталлятора

(setup.exe)

Сценарии тестов

и вспомогательные файлы

Результаты

Автоматизация• передача файлов

• выполнения тестов

• оценка результатов

4

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

РАЗРАБОТЧИКИТЕСТИРОВЩИКИ

build (setup.exe)

сборка

файлы

сценарии тестов

былд

отчет

5

• трансфер файлов

• выполнение тестов

• оценка результатов

Приемочное тестирование

Составляющие фреймворка

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

Jenkins – сервер автоматизации

Особенности• open source

• простая инсталляция и конфигурация

• мультиплатформенность (Java)

• планирование периодичности выполнения задач

используя механизм подобный cron

• поддерживает работу с системами контроля версий

(CVS, Subversion, Mercurial, Git, Clearcase)

• визуализация результатов теста

• исполняет shell-скрипты и команды Windows

6

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

7

Jenkins – результаты теста

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

Особенности

• open source

• мультиплатформенность (Windows, Mac OS X

и Linux)

• собственная IDE

• написание скриптов в Jython (Python)

• широкие возможности API (запуск аппликаций

и контроль над ними, действия

мыши, клавиш, исключения)

• окружение – Java 6 + Jython 2.5

8

SIKULI (www.sikuli.org)

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

SIKULI

• + Независимость на платформе (Java)

• + Независимость от тестируемой технологии

• + Высокая надежность

• + Простота создания сценариев

• – Зависимость от разрешения экрана

• – Высокая чувствительность к измненениям GUI

• – Низкая способность распознавания текста

9

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

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

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

STAF (staf.sourceforge.net)Особенности• open source

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

• peer-to-peer среда

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

• внутренне сервисы-команды

(пересылка файлов, управлние

процессами ...)

• поддержка внешних сервисов (Java

jar, C ++ dll)

• возможность управления как

локальной машиной так и удаленной

• конфигурационный файл STAF.cfg

11

STAF клиент STAF клиент

peer-to-peer

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

STAF – сервисы

12

• Внутренние сервисы

Вызываемые из процесса STAFProc

• Внешние сервисы

Подлючаемые из Java jar или C++ dll файлов

• Пользовательские сервисы

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

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")

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

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++)

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

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 сервис определен минимальным

необходимым уровнем доверия

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

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

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

robotframework-2.7.jarsikuli-script.jar

run_free_instup_win_xp.bat

@echo off

set sikuli_jar=C:\Program Files\Sikuli X\sikuli-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_suite\free_instup_win_xp.txt

%*

17

Пример 1

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

18

Пример 2 TEST CASE

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

*** Settings ***

Library av7set.Av7setup

*** Variables ***

${SETUP_FREE_PATH} C:\\tmp\\avast_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

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

from sikuli.Sikuli import *

import platform

import datetime

import subprocess

import time

import shutil

#add custom image library

addImagePath("images")

av7set.py

20

Пример 4

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

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

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

22

Пример 6

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

«Local»

IP: 127.0.0.1

PORT: 14816

IP: 127.0.0.1

PORT: 6500C:\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 \tmp\run_free_instup_win_xp.bat

RETURNSTDOUT STDERRTOSTDOUT WAIT

staf 127.0.0.1@14816 FS copy directory \tmp\results 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

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

24

Демонстрация

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

Основные тезисы доклада

1. Постановка задачи

2. Jenkins – взгляд тестировщика

3. Sikuli – автоматизация с помощью изображений

4. Robot Framework – инструмент для автоматизации

тестирования ПО

5. Staf – мультиплатформенное решения для соединения

с удаленными машинами

6. Демонстрация примера

25

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

Вопросы и ответы

Спасибо за внимание

26

[email protected]