SlideShare une entreprise Scribd logo
1  sur  28
Copyright © 2014 Rockwell Automation, Inc. All RightsRev 5058-CO900E
PUBLIC
INFORMATION
Automatyczne testy end-to-end
aplikacji JavaScript
Przemysław Sech
Software Test Engineer
31.05.2014
Email:
przemek.sech@gmail.com
Twitter: @PrzemekSech
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 2
Agenda
Demo
Protractor
Selenium
Środowisko
Stos technologiczny
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Rodzaje testów
 Testy jednostkowe
Unit Tests – A unit test is a software development life cycle (SDLC) component in
which a comprehensive testing procedure is individually applied to the smallest
parts of a software program for fitness or desired operation.
 Testy funkcjonalne
Functional testing is a software testing process used within software development in
which software is tested to ensure that it conforms to all requirements. Functional
testing is a way of checking software to ensure that it has all the required
functionality that's specified within its functional requirements.
 Testy End-to-End
End-to-end testing is a methodology used to test whether the flow of an application
is performing as designed from start to finish. The purpose of carrying out end-to-
end tests is to identify system dependencies and to ensure that the right information
is passed between various system components and systems.
3
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Stos technologiczny
Aplikacja
4
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Stos technologiczny
Testy
5
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 8
Agenda
Demo
Protractor
Selenium
Środowisko
Stos technologiczny
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Środowisko
9
Device Hub
iOS Phone
Android Phone
Środowisko rzeczywiste
Selenium Grid
Selenium Node Selenium Node + SDK
Build Server
Środowisko wirtualne
Selenium Node
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 10
Agenda
Demo
Protractor
Selenium
Środowisko
Stos technologiczny
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Selenium
11
Narzędzie do automatycznej symulacji interakcji użytkownika z przeglądarką.
Selenium IDE
Selenium WebDriver
Selenium Grid
Selenium RC + WebDriver (Selenium 1) = Selenium 2.0
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Selenium
WebDriver (Node)
12
Sterowniki przeglądarek – niezależne Dostępne języki API –
oficjalnie
Sterowniki przeglądarek –
wbudowane
Dostępne języki API –
nieoficjalnie
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Selenium
Grid (Hub)
13
HUB
NODE 1
(ANDROID)
NODE 2
(IE on Windows)
NODE 3
(Firefox on Ubuntu)
NODE 4
(Safari on MacOS)
NODE 5
(Safari on iOS)
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Selenium
WebDriver
14
localhost
TEST WebDriver
Uruchomienie WD
> java -jar selenium-server-standalone.jar
Adres docelowy:
http://127.0.0.1:4444/wd/hub
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
192.168.0.1
Selenium
WebDriver
15
localhost
TEST
Uruchomienie WD
> java -jar selenium-server-standalone.jar
Adres docelowy:
http://192.168.0.1:4444/wd/hub
WebDriver
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Selenium
Grid (Hub)
1616
Lokalnie
WebDriver
HUB role
TEST WebDriver
NODE role
WebDriver
NODE role
Lokalnie
WebDriver
HUB role
TEST WebDriver
NODE role
WebDriver
NODE role
Uruchomienie Serwera Grid (Hub)
> java -jar selenium-server-standalone.jar -role hub
Uruchomienie Klienta WD (Node)
> java -jar selenium-server-standalone.jar -role node
-hub http://localhost:4444/grid/register -port xxxx
Adres docelowy serwera grid:
http://127.0.0.1:4444/grid/console
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
192.168.0.3
Selenium
Grid (Hub)
1717
Lokalnie
192.168.0.1
WebDriver
HUB role
TEST
192.168.0.2
WebDriver
NODE role
WebDriver
NODE role
WebDriver
NODE role
Appium
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 18
Agenda
Demo
Protractor
Selenium
Środowisko
Stos technologiczny
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Protractor
20
 Narzędzie do tworzenia i uruchamiania
testów „end to end” w środowisku
przeglądarki, symulując interakcję
użytkownika,
 Program wykonywany w obrębie silnika Node.js,
 Stworzony na bazie WebDriverJS, którego w pełni
implementuje i wystawia całość jego API jako interfejs,
 Rozszerza API WebDriverJS o funkcjonalności AngularJS
 Do opisu składni testów pierwotnie wykorzystywał Jasmine,
na chwilę obecną można korzystać z dowolnego
frameworka obsługującego JavaScript np. Mocha,
 Wspiera testy asynchroniczne wykorzystując technologię
Promises,
 Zawiera wbudowany webdriver-manager pozwalający
uruchamiać samodzielną instancję klienta WebDiver (node).
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Protractor
21
 Projekt utrzymywany jako open-source
pod kontrolą GitHub:
https://github.com/angular/protractor
 Pełna dokumentacja:
https://github.com/angular/protractor/blob/master/docs/api.m
d
 Dostępny jako pakiet npm:
npm install -g protractor
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
WebDriverJS
22
Wszystkie implementacje frameworka
WebDriver komunikujące się z przeglądarką
lub serwerem Grid za pomocą protokołu na
bazie RESTfull web service. Protokół ten
wykorzystuje do komunikacji dane
w formacie JSON over HTTP.
WebDriverJS jest jedną z implementacji JSON wire protocol
udostępniającą metody wyższego poziomu.
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Jasmine
23
Jasmine jest frameworkiem z rodziny BDD
(Behavior Driven Development) służącym
do testowania aplikacji stworzonych z wykorzystaniem języka
JavaScript.
• niezależny od innych framworków JavaScript,
• nie wymaga istnienia struktury DOM,
• posiada czytelną, zrozumiałą składnię pozwalającą na
szybkie pisanie testów
Jasmine-node dla node.js jest dostępny jako pakiet npm:
npm install -g jasmine-node
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Jasmine / Protractor
przykład
24
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Webdriver-manager
25
 Narzędzie wbudowane w Protractor, pozwalające na łatwą
instalację, aktualizację i uruchomienie lokalnej instancji
klienta WebDriver (node)
 Instalacja i aktualizacja:
 Uruchomienie:
 Automatycznie uruchamia sterownik ChromeDriver
> webdriver-manager update
> webdriver-manager start
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Protractor
konfiguracja testów
26
 Uruchomienie testów:
 Plik konfiguracyjny pozwala zdefiniować:
 seleniumAddress – adres instancji Selenium (hub lub
node) pod którą należy wysłać testy,
 specs – lista plików zawierających testy,
 capabilities – parametry środowiska, decydują o
środowisku uruchomieniowym testów;
multiCapabilities – opisują tablicę środowisk na których
testy zostaną uruchomione współbieżnie,
 baseUrl: bazowy adres aplikacji testowej,
 onPrepare – funkcja wykonująca się przed
rozpoczęciem testów
 reporter – metoda generowania raportu z testów
> protractor config.js
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Protractor
raportowanie
27
 Protractor pozwala wyświetlać postęp
bieżących testów oraz ich status za
pomocą paska postępu
 Raportowanie do pliku XML dzięki bibliotece Jasmine-
ReportersonPrepare: function () {
"use strict";
require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmine
.JUnitXmlReporter('./results/chrome', true, 'Chrome'));
},
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Protractor
Page Object Model
28
Page Object Model (POM) jest wzorcem
projektowym bazującym na MVC.
Zadania:
 Opisanie struktury stron o odrębnych klasach (View)
 Opisanie zależności i interakcji między stronami (Control)
 Budowa testów w oparciu o opisane interakcje na
elementach strony
Zalety:
 Redukcja zduplikowanego kodu
 Łatwiejsze utrzymanie testów, podczas częstych zmian
aplikacji (Agile)
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Demo
29
GitHub: https://github.com/psech/QualityExcites2014-Demo
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION
Pytania i odpowiedzi
30
GoogleDrive: http://goo.gl/m46H8J
Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.
www.rockwellautomation.com
Follow ROKAutomation on Facebook & Twitter.
Connect with us on LinkedIn.
Rev 5058-CO900F
PUBLIC
INFORMATION
Dziękuję
Email:
przemek.sech@gmail.com
Twitter: @PrzemekSech

Contenu connexe

Tendances

Testy integracyjne
Testy integracyjneTesty integracyjne
Testy integracyjnePROSKAR
 
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?Damian Szczurek
 
Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Bartłomiej Cymanowski
 
Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)Tieto Corporation
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końceThe Software House
 
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Serviceskraqa
 
Najlepsze praktyki testowania aplikacji ASP.NET
Najlepsze praktyki testowania aplikacji ASP.NETNajlepsze praktyki testowania aplikacji ASP.NET
Najlepsze praktyki testowania aplikacji ASP.NETMarcin Daczkowski
 
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"HighSolutions Sp. z o.o.
 
Ciągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieCiągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieArtur Radosz
 
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...Infoshare
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsThe Software House
 
Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksXSolve
 

Tendances (20)

Testy integracyjne
Testy integracyjneTesty integracyjne
Testy integracyjne
 
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
 
Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?
 
Dodatkowe narzędzia do testów wydajnościowych
Dodatkowe narzędzia do testów wydajnościowychDodatkowe narzędzia do testów wydajnościowych
Dodatkowe narzędzia do testów wydajnościowych
 
Przyszłość ma na imię Mobile – testowanie i automatyzacja testów aplikacji mo...
Przyszłość ma na imię Mobile – testowanie i automatyzacja testów aplikacji mo...Przyszłość ma na imię Mobile – testowanie i automatyzacja testów aplikacji mo...
Przyszłość ma na imię Mobile – testowanie i automatyzacja testów aplikacji mo...
 
JMeter – narzędzie testera
JMeter – narzędzie testeraJMeter – narzędzie testera
JMeter – narzędzie testera
 
Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końce
 
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
 
Najlepsze praktyki testowania aplikacji ASP.NET
Najlepsze praktyki testowania aplikacji ASP.NETNajlepsze praktyki testowania aplikacji ASP.NET
Najlepsze praktyki testowania aplikacji ASP.NET
 
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
 
Ciągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieCiągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - Wprowadzenie
 
[TestWarez 2017] Framework testowy aplikacji mobilnej dla systemu iOS - czy ...
[TestWarez 2017]  Framework testowy aplikacji mobilnej dla systemu iOS - czy ...[TestWarez 2017]  Framework testowy aplikacji mobilnej dla systemu iOS - czy ...
[TestWarez 2017] Framework testowy aplikacji mobilnej dla systemu iOS - czy ...
 
O Electronie słów kilka
O Electronie słów kilkaO Electronie słów kilka
O Electronie słów kilka
 
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
JMeter - narzędzie testera - notatki
JMeter - narzędzie testera - notatkiJMeter - narzędzie testera - notatki
JMeter - narzędzie testera - notatki
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) Deployments
 
Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricks
 

En vedette

Co nowego w Javie piszczy – Java 8
Co nowego w Javie piszczy – Java 8Co nowego w Javie piszczy – Java 8
Co nowego w Javie piszczy – Java 83camp
 
Automated Web Testing using JavaScript
Automated Web Testing using JavaScriptAutomated Web Testing using JavaScript
Automated Web Testing using JavaScriptSimon Guest
 
Technik.teleinformatyk 312[02] z4.02_u
Technik.teleinformatyk 312[02] z4.02_uTechnik.teleinformatyk 312[02] z4.02_u
Technik.teleinformatyk 312[02] z4.02_uRzeźnik Sebastian
 
CSS Regression Tests
CSS Regression TestsCSS Regression Tests
CSS Regression TestsKaloyan Kosev
 
Unit-testing and E2E testing in JS
Unit-testing and E2E testing in JSUnit-testing and E2E testing in JS
Unit-testing and E2E testing in JSMichael Haberman
 

En vedette (7)

Co nowego w Javie piszczy – Java 8
Co nowego w Javie piszczy – Java 8Co nowego w Javie piszczy – Java 8
Co nowego w Javie piszczy – Java 8
 
Wzorce projektowe w automatyzacji testów aplikacji webowych
Wzorce projektowe w automatyzacji testów aplikacji webowychWzorce projektowe w automatyzacji testów aplikacji webowych
Wzorce projektowe w automatyzacji testów aplikacji webowych
 
Automated Web Testing using JavaScript
Automated Web Testing using JavaScriptAutomated Web Testing using JavaScript
Automated Web Testing using JavaScript
 
Technik.teleinformatyk 312[02] z4.02_u
Technik.teleinformatyk 312[02] z4.02_uTechnik.teleinformatyk 312[02] z4.02_u
Technik.teleinformatyk 312[02] z4.02_u
 
CSS Regression Tests
CSS Regression TestsCSS Regression Tests
CSS Regression Tests
 
Scalone dokumenty (13)
Scalone dokumenty (13)Scalone dokumenty (13)
Scalone dokumenty (13)
 
Unit-testing and E2E testing in JS
Unit-testing and E2E testing in JSUnit-testing and E2E testing in JS
Unit-testing and E2E testing in JS
 

Similaire à Automatyczne testy end-to-end aplikacji JavaScript.

Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-aFuture Processing
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
Selenium
SeleniumSelenium
SeleniumPROSKAR
 
Automated Tests in Agile based on Serenity BDD - Michał Szybalski
Automated Tests in Agile based on Serenity BDD - Michał SzybalskiAutomated Tests in Agile based on Serenity BDD - Michał Szybalski
Automated Tests in Agile based on Serenity BDD - Michał SzybalskiŁódQA
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Lukasz Kaluzny
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Wprowadzenie Do Asp
Wprowadzenie Do AspWprowadzenie Do Asp
Wprowadzenie Do AspKelut
 
Monitorowanie aplikacji z System Center 2012
Monitorowanie aplikacji z System Center 2012Monitorowanie aplikacji z System Center 2012
Monitorowanie aplikacji z System Center 2012Mariusz Kedziora
 
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVCWzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVCQuick-Solution
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHPCon Poland
 
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław
 

Similaire à Automatyczne testy end-to-end aplikacji JavaScript. (20)

university day 1
university day 1university day 1
university day 1
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
Selenium
SeleniumSelenium
Selenium
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
Automated Tests in Agile based on Serenity BDD - Michał Szybalski
Automated Tests in Agile based on Serenity BDD - Michał SzybalskiAutomated Tests in Agile based on Serenity BDD - Michał Szybalski
Automated Tests in Agile based on Serenity BDD - Michał Szybalski
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
[TestWarez 2017] Architektura testów automatycznych dla wielomodułowej aplika...
[TestWarez 2017] Architektura testów automatycznych dla wielomodułowej aplika...[TestWarez 2017] Architektura testów automatycznych dla wielomodułowej aplika...
[TestWarez 2017] Architektura testów automatycznych dla wielomodułowej aplika...
 
Wirtualizacja systemów operacyjnych oraz aplikacji w środowisku Microsoft - N...
Wirtualizacja systemów operacyjnych oraz aplikacji w środowisku Microsoft - N...Wirtualizacja systemów operacyjnych oraz aplikacji w środowisku Microsoft - N...
Wirtualizacja systemów operacyjnych oraz aplikacji w środowisku Microsoft - N...
 
Wprowadzenie Do Asp
Wprowadzenie Do AspWprowadzenie Do Asp
Wprowadzenie Do Asp
 
Monitorowanie aplikacji z System Center 2012
Monitorowanie aplikacji z System Center 2012Monitorowanie aplikacji z System Center 2012
Monitorowanie aplikacji z System Center 2012
 
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVCWzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubi
 
PHP i microsoft
PHP i microsoftPHP i microsoft
PHP i microsoft
 
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
 

Plus de Future Processing

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfFuture Processing
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfFuture Processing
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfFuture Processing
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurzeFuture Processing
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shakeFuture Processing
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myśleniaFuture Processing
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletkaFuture Processing
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 

Plus de Future Processing (20)

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdf
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdf
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 

Automatyczne testy end-to-end aplikacji JavaScript.

  • 1. Copyright © 2014 Rockwell Automation, Inc. All RightsRev 5058-CO900E PUBLIC INFORMATION Automatyczne testy end-to-end aplikacji JavaScript Przemysław Sech Software Test Engineer 31.05.2014 Email: przemek.sech@gmail.com Twitter: @PrzemekSech
  • 2. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 2 Agenda Demo Protractor Selenium Środowisko Stos technologiczny
  • 3. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Rodzaje testów  Testy jednostkowe Unit Tests – A unit test is a software development life cycle (SDLC) component in which a comprehensive testing procedure is individually applied to the smallest parts of a software program for fitness or desired operation.  Testy funkcjonalne Functional testing is a software testing process used within software development in which software is tested to ensure that it conforms to all requirements. Functional testing is a way of checking software to ensure that it has all the required functionality that's specified within its functional requirements.  Testy End-to-End End-to-end testing is a methodology used to test whether the flow of an application is performing as designed from start to finish. The purpose of carrying out end-to- end tests is to identify system dependencies and to ensure that the right information is passed between various system components and systems. 3
  • 4. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Stos technologiczny Aplikacja 4
  • 5. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Stos technologiczny Testy 5
  • 6. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 8 Agenda Demo Protractor Selenium Środowisko Stos technologiczny
  • 7. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Środowisko 9 Device Hub iOS Phone Android Phone Środowisko rzeczywiste Selenium Grid Selenium Node Selenium Node + SDK Build Server Środowisko wirtualne Selenium Node
  • 8. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 10 Agenda Demo Protractor Selenium Środowisko Stos technologiczny
  • 9. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Selenium 11 Narzędzie do automatycznej symulacji interakcji użytkownika z przeglądarką. Selenium IDE Selenium WebDriver Selenium Grid Selenium RC + WebDriver (Selenium 1) = Selenium 2.0
  • 10. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Selenium WebDriver (Node) 12 Sterowniki przeglądarek – niezależne Dostępne języki API – oficjalnie Sterowniki przeglądarek – wbudowane Dostępne języki API – nieoficjalnie
  • 11. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Selenium Grid (Hub) 13 HUB NODE 1 (ANDROID) NODE 2 (IE on Windows) NODE 3 (Firefox on Ubuntu) NODE 4 (Safari on MacOS) NODE 5 (Safari on iOS)
  • 12. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Selenium WebDriver 14 localhost TEST WebDriver Uruchomienie WD > java -jar selenium-server-standalone.jar Adres docelowy: http://127.0.0.1:4444/wd/hub
  • 13. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 192.168.0.1 Selenium WebDriver 15 localhost TEST Uruchomienie WD > java -jar selenium-server-standalone.jar Adres docelowy: http://192.168.0.1:4444/wd/hub WebDriver
  • 14. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Selenium Grid (Hub) 1616 Lokalnie WebDriver HUB role TEST WebDriver NODE role WebDriver NODE role Lokalnie WebDriver HUB role TEST WebDriver NODE role WebDriver NODE role Uruchomienie Serwera Grid (Hub) > java -jar selenium-server-standalone.jar -role hub Uruchomienie Klienta WD (Node) > java -jar selenium-server-standalone.jar -role node -hub http://localhost:4444/grid/register -port xxxx Adres docelowy serwera grid: http://127.0.0.1:4444/grid/console
  • 15. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 192.168.0.3 Selenium Grid (Hub) 1717 Lokalnie 192.168.0.1 WebDriver HUB role TEST 192.168.0.2 WebDriver NODE role WebDriver NODE role WebDriver NODE role Appium
  • 16. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION 18 Agenda Demo Protractor Selenium Środowisko Stos technologiczny
  • 17. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Protractor 20  Narzędzie do tworzenia i uruchamiania testów „end to end” w środowisku przeglądarki, symulując interakcję użytkownika,  Program wykonywany w obrębie silnika Node.js,  Stworzony na bazie WebDriverJS, którego w pełni implementuje i wystawia całość jego API jako interfejs,  Rozszerza API WebDriverJS o funkcjonalności AngularJS  Do opisu składni testów pierwotnie wykorzystywał Jasmine, na chwilę obecną można korzystać z dowolnego frameworka obsługującego JavaScript np. Mocha,  Wspiera testy asynchroniczne wykorzystując technologię Promises,  Zawiera wbudowany webdriver-manager pozwalający uruchamiać samodzielną instancję klienta WebDiver (node).
  • 18. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Protractor 21  Projekt utrzymywany jako open-source pod kontrolą GitHub: https://github.com/angular/protractor  Pełna dokumentacja: https://github.com/angular/protractor/blob/master/docs/api.m d  Dostępny jako pakiet npm: npm install -g protractor
  • 19. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION WebDriverJS 22 Wszystkie implementacje frameworka WebDriver komunikujące się z przeglądarką lub serwerem Grid za pomocą protokołu na bazie RESTfull web service. Protokół ten wykorzystuje do komunikacji dane w formacie JSON over HTTP. WebDriverJS jest jedną z implementacji JSON wire protocol udostępniającą metody wyższego poziomu.
  • 20. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Jasmine 23 Jasmine jest frameworkiem z rodziny BDD (Behavior Driven Development) służącym do testowania aplikacji stworzonych z wykorzystaniem języka JavaScript. • niezależny od innych framworków JavaScript, • nie wymaga istnienia struktury DOM, • posiada czytelną, zrozumiałą składnię pozwalającą na szybkie pisanie testów Jasmine-node dla node.js jest dostępny jako pakiet npm: npm install -g jasmine-node
  • 21. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Jasmine / Protractor przykład 24
  • 22. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Webdriver-manager 25  Narzędzie wbudowane w Protractor, pozwalające na łatwą instalację, aktualizację i uruchomienie lokalnej instancji klienta WebDriver (node)  Instalacja i aktualizacja:  Uruchomienie:  Automatycznie uruchamia sterownik ChromeDriver > webdriver-manager update > webdriver-manager start
  • 23. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Protractor konfiguracja testów 26  Uruchomienie testów:  Plik konfiguracyjny pozwala zdefiniować:  seleniumAddress – adres instancji Selenium (hub lub node) pod którą należy wysłać testy,  specs – lista plików zawierających testy,  capabilities – parametry środowiska, decydują o środowisku uruchomieniowym testów; multiCapabilities – opisują tablicę środowisk na których testy zostaną uruchomione współbieżnie,  baseUrl: bazowy adres aplikacji testowej,  onPrepare – funkcja wykonująca się przed rozpoczęciem testów  reporter – metoda generowania raportu z testów > protractor config.js
  • 24. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Protractor raportowanie 27  Protractor pozwala wyświetlać postęp bieżących testów oraz ich status za pomocą paska postępu  Raportowanie do pliku XML dzięki bibliotece Jasmine- ReportersonPrepare: function () { "use strict"; require('jasmine-reporters'); jasmine.getEnv().addReporter(new jasmine .JUnitXmlReporter('./results/chrome', true, 'Chrome')); },
  • 25. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Protractor Page Object Model 28 Page Object Model (POM) jest wzorcem projektowym bazującym na MVC. Zadania:  Opisanie struktury stron o odrębnych klasach (View)  Opisanie zależności i interakcji między stronami (Control)  Budowa testów w oparciu o opisane interakcje na elementach strony Zalety:  Redukcja zduplikowanego kodu  Łatwiejsze utrzymanie testów, podczas częstych zmian aplikacji (Agile)
  • 26. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Demo 29 GitHub: https://github.com/psech/QualityExcites2014-Demo
  • 27. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved.PUBLIC INFORMATION Pytania i odpowiedzi 30 GoogleDrive: http://goo.gl/m46H8J
  • 28. Copyright © 2014 Rockwell Automation, Inc. All Rights Reserved. www.rockwellautomation.com Follow ROKAutomation on Facebook & Twitter. Connect with us on LinkedIn. Rev 5058-CO900F PUBLIC INFORMATION Dziękuję Email: przemek.sech@gmail.com Twitter: @PrzemekSech

Notes de l'éditeur

  1. Pytania: - Jak sobie radzić z aplikacjami hybrydowymi (webowo-mobilnymi)? - Gdzie testować – przeglądarka, emulator, urządzenie fizyczne? - Jak często aktualizować środowisko testowe? - Czy należy wspierać wszystkie dostępne platformy? - Czy należy używać tego samego języka do programowania i testów? - Narzędzia opensource kontra komercyjne.
  2. - Testy jednostkowe – testy niskiego poziomu mające za zadanie przetestowanie poprawne działanie poszczególnych funkcji kodu - Testy funkcjonalne – testy na zgodność aplikacji z wymaganiami - Testy E2E – testy przekrojowe aplikacji weryfikujące poprawne działanie pełnych funkcjonalności (np. zakup biletu: logowanie do serwisu, wybranie opcji podróży, opłacenie, wydrukowanie biletu) Dlaczego o tym mówię: - Wspólne rozumienie definicji - Prezentacja dotyka wszystkich tych rodzajów testów
  3. - NodeJS – silnik JavaScript - AngularJS – biblioteka JavaScript do tworzenia aplikacji typu onepage w modelu MVC - HTML5 + CSS3 - Bootstrap – responsywny framework do tworzenia front-endu - LESS – język dynamicznego opisu styli CSS - Karma – narzędzie do uruchamiania testów - Grunt – narzędzie do uruchamiania zadań JavaScript (np. statyczna analiza kodu JSHint) - PhoneGap – framework opakowujący aplikację mobilną do postaci aplikacji natywnej dla urządzeń mobilnych >> Jak sobie radzić z aplikacjami hybrydowymi (webowo-mobilo-desktopowymi)? - Platforma node.js pozwala budować aplikacje webowe, mobilne (PhoneGap) i Desktopowe (node-webkit) - Appium pozwala na testowanie aplikacji webowych i mobilnych
  4. - NodeJS – silnik JavaScript - Grunt – narzędzie do uruchamiania zadań JavaScript (np. statyczna analiza kodu JSHint) - Vmware – platforma wirtualizacji dla PC i MAC - Hyper-V – niezbędne dla symulowania Windows Phone - Platformy – Android, iOS, Windows Phone - Przeglądarki na desktopie - Selenium (WebDriverJS) – narzędzie napisane na silniku Java, służce do symulacji interakcji użytkownika z przeglądarką - Protractor – framework stworzony przez twórców AngularJS do projektowania i uruchamiania testów e2e aplikacji webowych, jest rozszerzeniem narzędzia WebDriverJS i wykorzystuje rzeczywiste przeglądarki do symulowania interakcji użytkownika z aplikacją - Jasmine – framework testowy BDD dla aplikacji JavaScript. Może wykorzytywać silnik dowolnej przeglądarki, NodeJS oraz wiele innych platform współpracujących z JavaScript - Appium – narzędzie wspierające testy automatyczne aplikacji webowych, hybrydowych i mobilnych na systemach iOS i Android, współpracuje z Selenium WebDriver >> Czy należy wspierać wszystkie dostępne platformy? - NIE, jest to niemożliwe - Spośród kombinacji platform mobilnych, systemów operacyjnych i przeglądarek należy wybrać grupę reprezentatywną z punktu widzenia przyszłych odbiorców - Na slajdzie nie na BlackBerry
  5. Integracja: - Command-line / bash – możliwość ręcznego uruchamiania testów - IDE – możliwość uruchamiania testów z poziomu środowiska deweloperskiego - Continuous Delivery – możliwość uruchamiania testów automatycznych w procesie budowania aplikacji - Raportowanie – generowanie raportów łatwych do interpretacji i modyfikacji - Dokumentacja – automatyczne generowanie dokumentacji
  6. - Dwie maszyny w windowsem – różne wersje przeglądarek - SDK iOS działa fajnie na maszynie wirtualnej - SDK Android powinien być na maszynie rzeczywistej - Emulator iOS tylko na platformie MAC - Emulator Win Phone na platformie Win (Hyper-V), wykrywa emulowane wsparcie sprzętowe - Appium może być jedno na maszynie z uwagi na port, WebDriver’ów można uruchomić więcej - Urządzenia fizyczne mogą być podpięte do fizycznego hosta z maszynami wirtualnymi jeśli dostępne jest przekierowanie portów USB (VirtualBox ma płatne PowerExtensions) >> Gdzie testować – przeglądarka, emulator, urządzenie fizyczne? - Testowanie na przeglądarkach jest tanie - Testowanie na emulatorach wymaga zasobów, ale daje rezultaty przybliżone do urządzenia - Testowanie na urządzeniu jest najdokładniejsze i najdroższe (przywracanie po testach) Należy zbilansować opłacalność względem kosztów testowania na poszczególnych platformach
  7. - Generalnie – modułowe narzędzie do automatyzacji wszelkiego rodzaju interakcji z przeglądarką, najpowszechniejsze zastosowanie dla testów - Selenium IDE – dodatek do przeglądarki FireFox pozwalający na nagrywanie i odtwarzanie pojedynczych testów - Selenium WebDriver – następca Selenium-RC, zawiera w sobie całą funkcjonalność poprzednika + brak ograniczeń, - Selenium Grid – zarządca: przechowuje informację o dostępnym środowisku, zleca zadania modułom które mają wolne zasoby, przechowuje informację zwrotną o wyniku wykonanej przez moduł akcji
  8. - Sterowniki przeglądarek – rozwijane jako niezależne projekty, często przez samych twórców przeglądarek: IE, Chrome, Opera, PhantomJS (WebKit), Windows Mobile, Selendroid, ios-driver, Blackberry, Appium (selendroid + ios-driver) - Przeglądarki obsługiwane od ręki : FireFox, Safari, kidyś Opera zanim przeszła na WebKit - Oficjalne języki API – Java, C#.Net, Ruby, Python, JavaScript (node V8) - Dostępne nieoficjalnie języki API – Perl, PHP (5 implementacji), Objective-C, Haskell, R, JavaScript (3 implementacje)
  9. Zadania: - Wyszukiwanie pasujących nodów na podstawie capabilities: -- system operacyjny -- rodzaj przeglądarki -- wersja przeglądarki - Wyszukiwanie nodów nie wykonujących aktualnie zadań (poprzednie skończone) - Wysyłanie testów - Monitorowanie wykonania testów (wyniki, powodzenia, porażki, timeouty) - Zbieranie rezultatów z wykonania testów - Podsumowanie testów
  10. Możliwość pracy bezpośrednio z samodzielnym serwerem WebDriver
  11. Możliwość pracy bezpośrednio z samodzielnym serwerem WebDriver TO BE REMOVED
  12. Klienci muszą mieć różne porty (część dżinsy, część dres z trzema paskami) TO BE REMOVED
  13. Narzędzia commercial vs opesource: - Konfiguracja - Używanie - Aktualizacje - Wsparcie
  14. Zalety jednego typu aplikacji często jest wadą tego drugiego, dlatego wymienię zalety