Top Banner
Перший раз завжди страшно... про автоматизоване тестування Доповідачі Віталій Зінченко Вероніка Вульф
47

Перший раз завжди страшно... про автоматизоване тестування

Nov 01, 2014

Download

Documents

Буде розглянуто основні підходи автоматизації функціонального та навантажувального тестування на прикладі таких застосунків як: JMeter, Selenium IDE/WebDriver/RC, Watir, Grinder, Sikuli, Sahi. Буде висвітлено використання інструментів, конфігурації середовища та організації тест скриптів для забезпечення покриття програмного продукту автоматичним тестуванням.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Перший раз завжди страшно... про автоматизоване тестування

Перший раз завжди страшно... про автоматизоване тестування

ДоповідачіВіталій ЗінченкоВероніка Вульф

Page 2: Перший раз завжди страшно... про автоматизоване тестування

Мова йтиме про: Функціональне тестування

Selenium • IDE (Integrated Development Environment)• RC (Remote Control)• WD (Web Driver)

Watir (Web Application Testing inRuby) Sahi

Навантажувальне тестування Grinder Jmeter

Sikuli – для потіхи

Page 3: Перший раз завжди страшно... про автоматизоване тестування

Ідентифікація елементів

Id: id=EbayTickets, id=00Nd0000004MEN8 Link: link=Accounts, link=Sign in Xpath: xpath=//div[@id="some_id"] Css: css=div[id=some_id]

http://www.w3.org/TR/CSS2/selector.htmlhttp://www.w3schools.com/xpath/

Page 4: Перший раз завжди страшно... про автоматизоване тестування

Css та Xpath

Відмінності в синтаксисі xPath і Сss:Css Xpath Тлумачення

css=div[id=some_id] xpath=//div[@id="some_id"] прив‘язка до іерархії обєкта

css=div * span > a xpath=//div//span/a прив‘язка до атрибутів

css=div[@title~=title] xpath=//div[contains(@title="title")] часткова прив’язка до атрибутів

Синтаксис Css та XPathCss xPath Тлумачення> / наступний рівень ієрархії обєкту

* // будь-який елемент, що знаходиться в ієрархії нижче від поточного

* //* всі елементи

p //p всі P елементи

p > * //p/* всі дочірні

#foo //*[@id='foo'] елемент за ID

.foo //*[contains(@class,'foo')] елемент за class

*[title] //*[@title] елемент за title

p > *:first-child //p/*[0] перший дочірний елемент в усіх P

Not possible //p[a] всі P да А є дочірнім

p + * //p/following-sibling::*[0] наступний елемент

Page 5: Перший раз завжди страшно... про автоматизоване тестування

Selenium, Watir, Sahi - застосуванняПерелічені аплікації використовуються для:

Функціонального тестування Приймального тестування Тестування сумісності з браузерами

Можливість використання різних мов у скриптахМова Сімейство Watir продуктів Selenium Sahi

C# Watin RC, WD -

Java Watij IDE, RC, WD +

PHP - RC, WD -

Ruby Watir RC, WD +

Python - RC, WD -

Perl - RC, WD -

HTML - IDE -

Page 6: Перший раз завжди страшно... про автоматизоване тестування

Selenium - сумісністьWeb Driver

Google Chrome Internet Explorer Mozilla Firefox Opera

Remote Controller Google Chrome Internet Explorer Mozilla Firefox Opera Safari

Page 7: Перший раз завжди страшно... про автоматизоване тестування

Selenium IDE – початок роботи

Необхідні ресурси:• Mozilla Firefox (v.3x-12x)• Selenium IDE плагін для Mozilla Firefox (v.3x-12x) http://seleniumhq.org/projects/ide/

Page 8: Перший раз завжди страшно... про автоматизоване тестування

Selenium IDE – запис скрипта Запуск Selenium IDE (Tools->Selenium IDE) Увімкнення рекордера (стартує при запуску) Виконання сценарію в браузері

Page 9: Перший раз завжди страшно... про автоматизоване тестування

Від Selenium IDE до Selenium RC Необхідні ресурси: Selenium-server-standalone-2.21.0-SRC-712.patch.jar http://code.google.com/p/selenium/downloads/list TestSuite (необхідно створити) run-test.cmd файл (необхідно створити)Запуск скрипта: Запуск run-test.cmd файл

Page 10: Перший раз завжди страшно... про автоматизоване тестування

Від Selenium IDE до Selenium RC Необхідні ресурси: Selenium-server-standalone-2.21.0-SRC-712.patch.jar http://code.google.com/p/selenium/downloads/list TestSuite (необхідно створити) run-test.cmd файл (необхідно створити)

java -jar selenium-server-standalone-2.21.0-SRC-712.patch.jar -htmlSuite "*firefox" "http://ebay.com/" "./Ebay.html" "./TestResults-log.html" -timeout 180 start .\TestResults-log.html

Запуск скрипта: Запуск run-test.cmd файл

Page 11: Перший раз завжди страшно... про автоматизоване тестування

Selenium RC Запуск скрипта:

• Відкрити NetBeans IDE• Створити новий Maven проект• Конвертнути тест - кейс з Selenium IDE File->Export Test Case As->Junit4 (Remote Control)• Додати конвертований файл в проект в NetBeans Використати Maven репозиторій для об’єктів, що не знайдені в

експортованому файлі• Змінити налаштування проксі в браузері• Запустити проект в NetBeans

Selenium Remote Control

Selenium Server

Selenium Core

HTTP Proxy

HTML, Javascript

Client configured

Test Scripts

java, .net, perl, ruby, python

Web Application

Firefox, Safari, Internet ExplorerHTTP

commands

Launch and Kill

Page 12: Перший раз завжди страшно... про автоматизоване тестування

Selenium Web DriverЗапуск скрипта: Запустити NetBeans IDE Створити новий Maven проект Конвертнути тест- кейс з Selenium IDE File->Export Test Case As->Junit4 (WebDriver) Додати експортований файл в проект в NetBeans

Використати Maven репозиторій для об’єктів, що не знайдені в експортованому файлі.

Запустити тест в NetBeans

Page 13: Перший раз завжди страшно... про автоматизоване тестування

Watir(Web Application Testing inRuby)Watir сумісний з:

Internet Explorer Google Chrome Mozilla Firefox Opera

Page 14: Перший раз завжди страшно... про автоматизоване тестування

Watir – початок роботиНеобхідні ресурси: Ruby та Devkit http://rubyinstaller.org/downloads Інструкція до Watir - https://github.com/zeljkofilipin/watirbook/downloads Сhrome driver

http://code.google.com/p/chromedriver/downloads/list

Page 15: Перший раз завжди страшно... про автоматизоване тестування

Watir – налаштуванняНеобхідні встановлення: Оновити RubyGems: gem update – system ffi пакет, вимагається Watir and watir-webdriver При помилці встановлення ffi пакета – встановити DevKit Виконати ruby dk.rb init Встановити ruby dk.rb install Встановити Watir: gem install watir Встановити WebDriver: gem install watir-webdriver Додати шлях, де розміщено chrome driver, в %PATH% Налаштування IE для роботи з WebDriver - увімкнути Protected

Mode для всіх зон Internet Options > Security

Page 16: Перший раз завжди страшно... про автоматизоване тестування

Watir – налаштуванняЯк перевірити, чи все працює в IE:

C:\watir\devkit>irb irb(main):001:0> require "watir" => true irb(main):002:0> browser = Watir::Browser.new => #<Watir::IE:0x246680a2 url="about:blank" title=""> - запустився браузер Internet Explorer irb(main):003:0> browser.goto "google.com" => 2.403473 - відкрилась сторінка гугла в Internet Explorer irb(main):004:0>

Page 17: Перший раз завжди страшно... про автоматизоване тестування

Watir & EclipseНеобхідні ресурси: Eclipse Java Dynamic Languages Toolkit (DLTK) (містить підтримку Ruby)

http://download.eclipse.org/technology/dltk/updates/

Налаштування середовища: Запустити Eclipse, вказати workspace Налаштувати Dynamic Language Toolkit (DLTK) 2.0 Зазначити використання Ruby Ruby Perspective в Window > Open Perspective > Other, вибрати Ruby Налаштувати інтерпретатор Ruby Window > Preferences > Ruby > Interpreters. Вказати шлях до ruby.exe Створити проект

File > New > Ruby Project

Відзначити використання:• Dynamic Language Toolkit - Core Framework• Dynamic Language Toolkit - Core Frameworks SDK• Dynamic Language Toolkit - Ruby Development Tools• Dynamic Language Toolkit - Ruby Development Tools SDK

Page 18: Перший раз завжди страшно... про автоматизоване тестування

Watir - скриптrequire "watir-webdriver"require 'test/unit‘class EBayTest < Test::Unit::TestCase def test_simple #@browser = Watir::Browser.new :ff #@browser = Watir::Browser.new :chrome browser = Watir::Browser.new :ie browser.goto "ebay.com" browser.element(:css => "#gh-ug a.gh-a").click browser.text_field(:id => "userid").set("QA_AUser") browser.text_field(:id => "pass").set("Automation") browser.checkbox(:id => "signed_in").clear browser.button(:id => "but_sgnBt").click assert(browser.element(:xpath => "//table/tbody/tr/td[3]/span/b").text.include?("qa_auser")) assert(browser.element(:xpath => "//table/tbody/tr/td[3]/span/a").text.include?("Sign out")) browser.close() endend

Лог файлRun options: # Running tests:Finished tests in 15.338171s, 0.0652 tests/s, 0.1304 assertions/s.1 tests, 2 assertions, 0 failures, 0 errors, 0 skips

Page 19: Перший раз завжди страшно... про автоматизоване тестування

Sahi – початок роботиНеобхідні ресурси: Остання версія sahi http://sahi.co.in Java Mozilla Firefox Eclipse Classic http://www.eclipse.org/downloads/

Необхідні налаштування: Відредагувати sahi/config/sahi.properties -> controller.mode=java Забезпечує запис коду на Java

Page 20: Перший раз завжди страшно... про автоматизоване тестування

Sahi – налаштування Запустити Eclipse Створити Java проект Next -> на вкладку Liblaries Додати sahi.jar - Add External Jars з ...\sahi\lib Створити новий клас в проекті Підключити Sahi і jUnit до проекту

import net.sf.sahi.client.Browser; import net.sf.sahi.config.Configuration; import junit.framework.*;

Page 21: Перший раз завжди страшно... про автоматизоване тестування

Sahi – створення скрипта Запустити Sahi

Запустити браузер Відкрити вікно рекордера - в браузері натиснути Ctrl+Alt+DblClick Натиснути Record і записати визначений сценарій

Page 22: Перший раз завжди страшно... про автоматизоване тестування

Sahi – створення скрипта в Eclipse Додати ініціалізацію браузера String sahiBase = “…/sahi/"; // шлях до встановленого Sahi String userDataDirectory = “…/sahi/userdata"; //шлях до користувацьких даних в Sahi

Configuration.initJava(sahiBase, userDataDirectory); String browserType = "ie"; Browser browser = new Browser(browserType); browser.open();

Додати записаний код, модифікуючи ідентифікатори

Page 23: Перший раз завжди страшно... про автоматизоване тестування

Порівняння скриптів. Відриття сторінки ebay.com

Використана аплікація

Вигляд скрипта

Selenium IDE open /Selenium RC selenium.open("http://www.ebay.com/");Selenium WD driver.get(baseUrl + "/");Watir browser.goto "ebay.com"Sahi browser.navigateTo("ebay.com");

Page 24: Перший раз завжди страшно... про автоматизоване тестування

Порівняння скриптів. Клік на ‘Sign in’ лінку для переходу на форму логування

Використана аплікація

Вигляд скрипта

Selenium IDE clickAndWait css=#gh-ug a.gh-aSelenium RC selenium.click("css=#gh-ug a.gh-a");Selenium WD driver.findElement(By.cssSelector("#gh-ug a.gh-

a")).click();Watir browser.element(:css => "#gh-ug a.gh-a").clickSahi browser.link("Sign in").click();

Page 25: Перший раз завжди страшно... про автоматизоване тестування

Порівняння скриптів. Ввід логіну

Використана аплікація

Вигляд скрипта

Selenium IDE type id=userid QA_AUserSelenium RC selenium.type("id=userid", "QA_AUser");Selenium WD driver.findElement(By.id("userid")).sendKeys("QA

_AUser");Watir browser.text_field(:id =>

"userid").set("QA_AUser")Sahi browser.textbox("userid").setValue("QA_AUSer");

Page 26: Перший раз завжди страшно... про автоматизоване тестування

Порівняння скриптів. Ввід паролю

Використана аплікація

Вигляд скрипта

Selenium IDE type id=pass AutomationSelenium RC selenium.type("id=pass", "Automation");Selenium WD driver.findElement(By.id("pass")).sendKeys("Aut

omation");Watir browser.text_field(:id =>

"pass").set("Automation")Sahi browser.password("pass").setValue("Automation

");

Page 27: Перший раз завжди страшно... про автоматизоване тестування

Порівняння скриптів.Зняття відмітки з ‘Keep me signed in’ чекбоксу

Використана аплікація

Вигляд скрипта

Selenium IDE click id=signed_inSelenium RC selenium.click("id=signed_in");Selenium WD driver.findElement(By.id("signed_in")).click();Watir browser.checkbox(:id => "signed_in").clearSahi browser.checkbox("keepMeSignInOption").click();

Page 28: Перший раз завжди страшно... про автоматизоване тестування

Порівняння скриптів.Клік на ‘Sign in’ кнопці

Використана аплікація

Вигляд скрипта

Selenium IDE clickAndWait id=but_sgnBtSelenium RC selenium.click("id=but_sgnBt");Selenium WD driver.findElement(By.id("but_sgnBt")).click();Watir browser.button(:id => "but_sgnBt").clickSahi browser.submit("Sign in").click();

Page 29: Перший раз завжди страшно... про автоматизоване тестування

Порівняння скриптів. Перевірка успішності логування - наявність імені користувачів на сторінці

Використана аплікація

Вигляд скрипта

Selenium IDE assertText xpath=//table/tbody/tr/td[3]/span/b qa_auser

Selenium RC assertEquals("qa_auser", selenium.getText("xpath=//table/tbody/tr/td[3]/span/b"));

Selenium WD assertEquals("qa_auser", driver.findElement(By.xpath("//table/tbody/tr/td[3]/span/b")).getText());

Watir assert(browser.element(:xpath => "//table/tbody/tr/td[3]/span/b").text.include?("qa_auser"))

Sahi assertTrue(browser.byXPath("//table/tbody/tr/td[3]/span/b").getText().equals("qa_auser"));

Page 30: Перший раз завжди страшно... про автоматизоване тестування

Порівняння скриптів. Перевірка успішності логування - наявність лінку ‘Sign out’

Використана аплікація

Вигляд скрипта

Selenium IDE assertText xpath=//table/tbody/tr/td[3]/span/a Sign out

Selenium RC assertEquals("Sign out", selenium.getText("xpath=//table/tbody/tr/td[3]/span/a"));

Selenium WD assertEquals("Sign out", driver.findElement(By.xpath("//table/tbody/tr/td[3]/span/a")).getText());

Watir assert(browser.element(:xpath => "//table/tbody/tr/td[3]/span/a").text.include?("Sign out"))

Sahi assertTrue(browser.byXPath("//table/tbody/tr/td[3]/span/a").getText().equals("Sign out"));

Page 31: Перший раз завжди страшно... про автоматизоване тестування

Навантажувальне тестування - load testing

Охоплює:

Тестування відмовостійкості - failover testing Стрес-тестування - stress testing Цільова перевірка - targeted infrastructure test Об’ємне тестування - volume testing Тестування стабільності - endurance testing Тестування швидкодії - performance testing Тестування пропускної здатності - network sensitivity

testing

Page 32: Перший раз завжди страшно... про автоматизоване тестування

Навантажувальне тестування Показники, що слід враховувати:

час відповіді кількість запитів за секунду навантаження процесора навантаження пам’яті завантаженість мережевого інтерфейсу кількість виконаних запитів кількість невдалих запитів інші показники: база даних, сервіси, інше

Для кожної з вищевказаних метрик слід зібрати наступні значення: Середнє Максимальне Мінімальне

Page 33: Перший раз завжди страшно... про автоматизоване тестування

Запити. Get & Post HTTP (HyperText Transfer Prоtocоl ) — протокол прикладного

рівня передачі даних. Основою HTTP є технологія «клієнт-сервер», тобто є клієнт, що висилає запит, і сервер, який обробляє запит і відсилає відповідь з результатом.

GET Використовується для отримання вмісту певного ресурсу.Всі

дані введені в адресну стрічку переводяться в GET запити. Наприклад - http://www.site.com/index.html Дана команда каже серверу: "Дай мені файл index.html, який

знаходиться в директорії (на сайті) http://www.site.com/". POST Використовується для передачі користувацьких даних

певному ресурсу. Дані при передачі включаються в тіло запиту, тобто дані приховані. Вміст відповіді сервера на запит POST не кешується.

GET POST+ Швидкий - Повільний- Інформація, що відсилається на сервер – видима

+ Інформація, що відсилається на сервер – невидима (в тілі запиту)

- Об’єм інформації, що можна надіслати - обмежений

+ Об’єм інформації, що можна надіслати - необмежений

+ Сторінки – результати запиту, можна зберегти в закладках

- Сторінки – результати запиту, не можна зберегти в закладках

Page 34: Перший раз завжди страшно... про автоматизоване тестування

Запити OPTIONSВикористовується для визначення можливостей веб-сервера і

параметрів з’єднання для конкретного ресурсу. У відповідь серверу необхідно включити заголовок Allow зі списком підтримуваних методів, розширень.

Для того, щоб взнати можливості всього сервера, клієнт повинен вказати в URL “*”. Запити “OPTIONS * HTTP/1.1” можуть використовуватись для перевірки справності сервера, підтримки протокола HTTP версії 1.1. Результати цього запиту не кешуються.

HEADАналогічний до методу GET, але у відповіді сервера відсутнє тіло.

Зазвичай використовується для отримання метаданих, перевірки наявності ресурсу (валідація URL) і щоб переконатись, що він не змінився від часу останнього звернення. Заголовки відповіді можуть кешуватись. При неспівпадінні метаданих ресурсу з відповідною інформацією в кеші, копія ресурсу позначаєтться застарілою.

PATCHАналогічний до PUT, але застосовується лише до фрагменту ресурса.

• DELETE Видаляє вказаний ресурс.• TRACEПовертає отриманий запит таким чином, що клієнт має

можливість побачити іформацію, що була змінена чи додана проміжними серверами.

• LINKВстановлює зв’язок вказаного ресурсу з іншим.• UNLINKЗнищує зв’язок вказаного ресурса з іншим.• CONNECTТрансформує з’єднання запиту в прозорий TCP/IP тунель,

зазвичай для того, щоб створити захищений SSL зв’язок через незашифрований проксі.

Page 35: Перший раз завжди страшно... про автоматизоване тестування

Grinder - встановленняНеобхідні ресурси: grinder 3.7.1 (остання версія 3.8 не працює з Grinder Analyzer)

http://grinder.sourceforge.net/ grinder analyzer

http://track.sourceforge.net/ jython2.5.2 (необхідний для grinder analyzer )

http://www.jython.org/ Java

Необхідні налаштування: Розпакувати Grinder ...\grinder\grinder3.7.1 Проінсталювати jython ...\grinder\jython2.5.2 Розпакувати Grinder Analyzer ...\grinder\GrinderAnalyzer.V2.b16

Page 36: Перший раз завжди страшно... про автоматизоване тестування

Grinder – початок роботиGrinder складається з трьох елементів:

Агент - виконує тестовий скрипт Консоль керування - використовується для керування агентами Проксі - використовується для запису скрипта

Необхідні налаштування: setGrinderEnv.cmd - файл для встановлення середовища запуску grinder

@REM setGrinderEnv.cmd: set GRINDERPATH=…\grinder\grinder-3.7.1\ set GRINDERPROPERTIES=…\grinder\grinder.properties set CLASSPATH=%GRINDERPATH%\lib\grinder.jar; …\

jython2.5.2;%CLASSPATH% set JAVA_HOME=C:\Program Files\Java\jre7 PATH=%JAVA_HOME%\bin;%PATH%

startAgent.cmd - запуск агента@REM startAgent.cmd:

call .\setGrinderEnv.cmd echo %CLASSPATH% java -cp %CLASSPATH% net.grinder.Grinder %GRINDERPROPERTIES% startConsole.cmd - запуск консолі керування

@REM startConsole.cmd: call .\setGrinderEnv.cmd java -cp %CLASSPATH% net.grinder.Console startProxy.cmd - запуск проксі

@REM startProxy.cmd: call .\setGrinderEnv.cmdjava -classpath %CLASSPATH% net.grinder.TCPProxy -console -http > grinder.pyскрипт буде записано в grinder.py

Page 37: Перший раз завжди страшно... про автоматизоване тестування

Grinder – запис тесту Запустити startProxy.cmd Налаштувати браузер на проксі Запис скрипта для google.com :

пройти визначений сценарій, який буде записаний в grinder.py секція підключення модулів: опис заголовків запитів: опис адрес, до яких відбувалось підключення

2012-05-25 18:12:27,396 INFO tcpproxy: Initialising as an HTTP/HTTPS proxy with the parameters: Request filters: HTTPRequestFilter Response filters: HTTPResponseFilter Local address: localhost:8001 2012-05-15 11:12:28,538 INFO tcpproxy: Engine initialised, listening on port 8001 - проксі запустився на 8001 from net.grinder.script import Test

from net.grinder.script.Grinder import grinder from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest from HTTPClient import NVPair connectionDefaults = HTTPPluginControl.getConnectionDefaults() httpUtilities = HTTPPluginControl.getHTTPUtilities()

connectionDefaults.defaultHeaders = \ [ NVPair('Accept-Language', 'en- us,en;q=0.5'),

   NVPair('Accept-Encoding', 'gzip, deflate'),   NVPair('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:12.0)

Gecko/20100101 Firefox/12.0'), ] headers1= \ [ NVPair('Accept', 'image/png,image/*;q=0.8,*/*;q=0.5'),    NVPair('Referer', 'http://www.google.com.ua/'), ]

url0 = 'http://google.com.ua:80'url1 = 'http://www.google.com.ua:80'url2 = 'http://www.gstatic.com:80'url3 = 'http://ssl.gstatic.com:80'

Page 38: Перший раз завжди страшно... про автоматизоване тестування

Grinder – опис запитів request101 = HTTPRequest(url=url0, headers=headers0) request101 = Test(101, 'GET /').wrap(request101)

class TestRunner: - клас з вхідною точкою def page2(self): """GET / (requests 201-202).""" result = request201.GET('/') grinder.sleep(100) request202.GET('/images/icons/product/chrome-48.png') return result def __call__(self): - виконавча секція """Called for every run performed by the worker thread.""" self.page1() # GET / (request 101) self.page2() # GET / (requests 201-202) self.page3() # GET rs=AItRSTPOna8b5LEz0mR0dniAQkRUD0QhZA (requests 301-

304) self.page4() # GET tia.png (request 401) self.page5() # GET nav_logo107.png (request 501) self.page6() # GET csi (requests 601-602) self.page7() # GET sem_ca34ccb96290d3b4857d225c8ea30d48.js (request 701)

Детальніше про написання скриптів: http://grinder.sourceforge.net/g3/tutorial-perks.html

Page 39: Перший раз завжди страшно... про автоматизоване тестування

Grinder – налаштування тесту Налаштування тесту:• grinder.properties • setGrinderEnv.cmd: set GRINDERPATH=C:\grinder\grinder-3.7.1\ set GRINDERPROPERTIES=C:\grinder\grinder.properties set CLASSPATH=%GRINDERPATH%\lib\grinder.jar;C:\jython2.5.2;%CLASSPATH% set JAVA_HOME=C:\Program Files\Java\jre7 PATH=%JAVA_HOME%\bin;%PATH%

Файл grinder.properties виглядає наступним чином:grinder.plugin=net.grinder.plugin.http.HttpPlugin

grinder.processes=20 - кількість процесів, що запустить один агент grinder.threads=10 - кількість потоків grinder.runs=3 - кількість запусків скрипта кожним потоком grinder.useConsole=true - виводити результат в консоль grinder.logDirectory=logs - записувати лог файли в grinder.numberOfOldLogs=2 - зберігати історію логів grinder.jvm.arguments = -Dpython.home=c:\jython2.5.2 підключення jython2 grinder.script=C:/grinder/grinder-3.8/grinder.py - тестовий скриптБільш детальну інформацію можна знайти на

http://grinder.sourceforge.net/g3/manual.html#Table+of+properties

Page 40: Перший раз завжди страшно... про автоматизоване тестування

Grinder – виконання тесту Запустити startConsole.cmd - буде очікувати на появу агентів Запустити startAgent.cmd

...\grinder\grinder-3.7.1>java -cp ...\grinder\grinder-3.7.1\\lib\grinder.jar; ...\jython2.5.2; net.grinder.Grinder ...\grinder\grinder.properties 2012-05-15 12:09:41,352 INFO agent: The Grinder 3.7.1 2012-05-15 12:09:41,482 INFO agent: connected to console at

localhost/127.0.0.1:6372 2012-05-15 12:09:41,482 INFO agent: waiting for console signal Натиснути Run в Grinder Console Після завершення сценарію запустити Grinder Analyzer -

генерація звіту jython ./analyzer.py "<grinder data File(s)>" <grinder out file> [number of agents] ...\jython2.5.2\jython.bat .\analyzer.py

...\grinder\grinder- 3.7.1\logs\sahi-0-data.log ...\grinder\grinder-3.7.1\logs\sahi-0.log Звіт генерується в ...\grinder\GrinderAnalyzer.V2.b16\grinderReport

Page 41: Перший раз завжди страшно... про автоматизоване тестування

Jmeter - встановленняНеобхідні ресурси: jMeter jakarta.apache.org Java JMeterPlugins.jar – плагін для відображення статистики http://code.google.com/p/jmeter-plugins/

Необхідні налаштування: jMeter розпакувати в ...\JMeter. JMeterPlugins.jar розпакувати в ...\JMeter\lib\ext в файлі jmeter.properties встановити True для параметру

jmeter.save.saveservice.thread_count http://code.google.com/p/jmeter-plugins/wiki/PluginInstall

Page 42: Перший раз завжди страшно... про автоматизоване тестування

Jmeter – створення скрипта Запустити jmeter.bat Створити потокову групу в Test Plan Додати проксі сервер в корінь Workbench Налаштувати проксі

Встановити Target Controller для Proxy Server Увімкнути Retrieve All Embeded resources from HTTP files

Натиснути Start Налаштувати з`єднання через проксі в браузері Пройти тестовий сценарій

Page 43: Перший раз завжди страшно... про автоматизоване тестування

Jmeter – тестовий сценарій Вигляд скрипта Можливі складові скрипта Параметри запитів Запустити сценарій з наступними

параметрами Отримати результат

Page 44: Перший раз завжди страшно... про автоматизоване тестування

Jmeter - результати Response Time Distribution Active Threads Over Time Responce Codes per Second

HTTP 200 - OKHTTP 204 - No Content The server successfully processed the request, but is not returning any content.HTTP 301 - Moved Permanently This and all future requests should be directed to the given URI.

Transactions per second Summary Report: Summary Report shows the following information about executed test:

·         Label - the label test.·         # Samples - the number of requests that were sent to target server.·         Average - the average elapsed time of a set of results.·         Min - the lowest elapsed time for the samples with the same label.·         Max - the longest elapsed time for the samples with the same label.·         Std. Dev. - the Standard Deviation of the sample elapsed time.·         Error % - percent of requests with errors.·         Throughput – average numbers of requests per second that are sent to target server.·         Kb/sec - the throughput measured in Kilobytes per second.·         Avg. Bytes – the average size of the sample response in bytes.

Page 45: Перший раз завжди страшно... про автоматизоване тестування

Sikuli – початок роботиЩоб розпочати роботу з Sikuli, необхідно: Завантажити продукт http://launchpad.net/sikuli/sikuli-x/x1.0-

rc3/+download/Sikuli-X-1.0rc3%20(r905)-win32.exe

Встановити Sikuli

Page 46: Перший раз завжди страшно... про автоматизоване тестування

Sikuli – запис та запуск скрипта

Page 47: Перший раз завжди страшно... про автоматизоване тестування

Запитання