SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
Protractor: test
e2e per AngularJS
Codemotion Tech Webinar
… e non solo
Codemotion Tech Webinar
Hello world!
Io sono Luca Ferretti
Sono qui perché tutti i giorni
mi pagano per rompere siti, con
dedizione, metodo e disciplina
Nel tempo libero provo a rompere
anche ambienti desktop e
applicazioni OpenSource
Potete trovarmi su internet come
elle.uca (o elleuca … non tutti
amano il punto nell’username)
0
Protractor… cosa?
ovvero: dal framework di sviluppo
supereroistico nasce il framework
di test superrealistico
Ma che è un
protractor?
È “er goniometro”
end-to-end test framework for AngularJS
applications
runs tests against your application
running in a real browser, interacting
with it as a user would
da http://protractortest.org
Introdotto durante la presentazione
AngularJS 1.2 and Beyond (giugno 2013)
Versione 1.0 rilasciata a luglio 2014
Ultima versione 1.6.x (gennaio 2015)
Tecnicamente è un programma Node.js
Dato un file di configurazione, esegue una
o più specifiche
È anche una API che estende WebDriverJS
Test funzionale
Selenium
Protractor
per parlare di Protractor, dobbiamo scavare nel profondo...
1
Testing end-to-end
ovvero: perché sono essenziali
allo sviluppo web se eseguiti in
un vero browser
PERCHÉ TESTARE?
Un codice senza test è un
codice che non funziona
L’automatizzazione di task
ripetitivi e noiosi è sempre cosa
buona e giusta
TIPI DI TEST
(AUTOMATIZZABILI)
FunctionUnit Visual
I test funzionali (o end-to-end)
assicurano che l’intero “sistema
software” si comporta nei modi
previsti
ovvero: essere in grado di
eseguire determinate
funzioni
REQUISITI
AMARA VERITÀ
I TEST FUNZIONALI SONO LENTI,
LENTI, LENTI
così tanto da testare e così poco
tempo… da dove cominciare?
Da quale funzione
monetizzo o genero valore?
BUSINESS
Quali funzioni usano di
più i miei utenti?
PEOPLE
Cosa si è rotto spesso in
passato?
HISTORY
Quali sono quelli più
usati? Quali meno?
BROWSERS
Nel dubbio, ricordati sempre di
confrontarti col tuo team per
decidere i requisiti e le
funzionalità importanti
Anche se non segui uno sviluppo
BDD, ricordati di strutturare i
test funzionali sul comportamento
(del sito/webapp e dell’utente)
2
Selenium e WebDriver
ovvero: come ho imparato a non
preoccuparmi e ad amare ogni
browser (anche IE)
Selenium
Selenium automates browsers.
That's it!
AUTOMAZIONE
Anche se il suo impiego
principale è nel testing,
Selenium automatizza e basta
Se WebDriver
API per guidare i browser
Se IDE & Se RC
Old and deprecated
Se Server/Grid
Servizio per impostare un parco
browser
COSA OFFRE ESATTAMENTE SELENIUM API
NAVIGAZIONE
Apri un URL, vai
indietro, vai avanti,
aggiorna.
INTERROGAZIONE
Dimmi l’URL o il titolo,
cerca uno specifico
elemento, dimmi lo stato
di certo elemento.
MANIPOLAZIONE
Fai clic, digita del
testo, trascina.
SINCRONIZZAZIONE
Aspetta a interrogare o a
manipolare la pagina fino
a che non è verificata una
certa condizione.
Varie & Eventuali
Alert, iframe, cookie,
javascript, html5, ...
Browser Caps
Usa un browser locale o
remoto con determinate
capability.
Do It Yourself
Scegliere il framework più
opportuno per
runner/assertion/other
(Cucumber, JUnit, …)
WebDriver
https://w3c.github.
io/webdriver/webdriver-spec.
html
Choose a browser to start
“interface's
invocations and
responses that are
to be used by
browser vendors to
ensure
interoperability”
W3C WebDriver vs Se WebDriver
“this specification is strongly based on an existing
Open Source project, Selenium WebDriver”
Any
Browser
Come funziona?
(Test)
Code
WebDriver
l’immagine è solo a scopo illustrativo
dell’utilizzo del prodotto
3
Protractor alla riscossa
ovvero: quando il gioco si fa
duro, i duri cominciano a testare
Linguaggio
AngularJS
Setup
Bootstrap
$ cd project
$ npm install protractor --save-dev
Alternate Bootstrap
$ npm install -g protractor
Configure It!
$ cd project && mkdir test/
$ touch test/protractor-conf.js
Script It!
$ touch test/spec.js
Run it!
$ protractor test/protractor-conf.js
Regolare l’ambiente di
test
Config
exports.config = {
...
seleniumAddress: 'http://host:4444/wd/hub',
...
}
Tweak Configurazione - Dove è Selenium?
Tweak Configurazione - Quale browser voglio?
exports.config = {
...
capabilities: {
browserName: 'internet explorer',
version: ‘11’,
...
}
}
Tweak Configurazione - Quali browser voglio?
exports.config = {
...
multiCapabilities: [
{
browserName: 'internet explorer'
...
},
{ … },
{ … }
]
}
exports.config = {
onPrepare: function() {
...
},
onComplete: function() {
...
},
}
Tweak Configurazione - setUp & tearDown
il file referenceConf.js su github
sia la vostra guida
link
Tweak Configurazione - all in!
Definire la sequenza di
azioni da compiere e
verificare
Script
browser
.get(url)
expect
(this).toEqual(that)
element
.doSomethingCool()
Interrogazione - elementi
▪ element(by.locator)
▪ element(…).element(by.locator)
▪ element.all(by.locator)
In realtà sono degli ElementFinder
(ElementArrayFinder) per i
WebElement di WebDriver, la
conversione è trasparente.
Interrogazione - locator
▪ binding, model, repeater …
▪ id, css, tagName …
I locator più classici sono estesi
da locator specifici per AngularJS.
Funzionano per strategia + target
es: element(by.id(‘login-psw’))
Interrogazione - stati
▪ getQualcosa()
▪ isUncertoStato()
Attributi, posizioni, presenza,
visibilità e altro.
In pratica tutto quello che sa il
browser di un certo elemento del
DOM (notare: il browser)
Manipolazione - I
▪ el1.click()
▪ el2.clear().sendKeys(‘abc’)
▪ form.submit()
Asincrone + fluent (ove possibile),
si limitano alle azioni base che si
può eseguire su un elemento.
Non fidatevi del sendKeys() :P
Manipolazione - II
browser
.actions()
.dragAndDrop(element,
{x: 400, y: 20})
.perform();
Non specifica di Protractor, ma
derivata come altro da WebDriverJS
Promise
Ogni “azione” è una promise,
coordinate da un promise
“manager”
Promise - how
browser.get(url);
element.clear();
element.sendKeys();
element1.click();
Sono oggetti promise non risolte;
pianificate, non eseguite, nel
control flow. API volutamente
“snella”
Promise - don'ts
if(elem.getText() === ‘Hello’ ) {
...
}
Quello che stiamo facendo è il
confronto tra un oggetto promise e
una stringa
Promise - do’s
elem.getText()
.then(function(text) {
if (text === ‘Hello’ ) {
...
)
Risolvo la promise, ne ricavo il
valore, uso il valore, sono felice
Ready to go
Config + Script
4
Strategie per sopravvivere
ovvero: controlla il codice prima
che il codice controlli te
QUESTO NON È UN FRAMEWORK PER UNIT TEST
Usa i test
funzionali per
codificare le user
story, mantienili
semplici da leggere,
verifica solo gli
“happy path”.
Mantienili
aggiornati o muori.
TIMEOUT E SINCRONIZZAZIONE
Emulare le azioni di
un utente non vuol
dire farle alla
stessa velocità.
Prima di interagire
con un elemento
accertati che sia
nello stato in cui
dovrebbe essere.
select1.click()
select1.option1.click()
select2.click()
browser.wait(...).then(...)
EC
Merge recentissimo, arriveranno le
ExpectedConditions (e saranno anche
concatenabili a suon di AND e OR)
USA I PAGE OBJECT, GIOVANE PADAWAN
Crea degli oggetti
che interagiscano
con gli “elementi”
della pagina, usa i
loro metodi nei file
spec.
var Login = function() {
this.user = element(...);
this.pwd = element(...);
this.btn = element(...);
this.do = function(){...}
};
module.exports = Login;
-----
var lg = new Login();
login.do();
expect(hp.isIn()).toBeTruty()
TELL DON’T ASK, SE SEI UN JEDI
Se hai creato un
page object, lascia
che tutta la logica
sia nel page object.
Gli expect nella
spec possono essere
sostituiti da errori
gestiti nel page
object.
homepage.load()
homepage.doLogin()
-----
this.doLogin = function() {
...
login.do();
// start checks here
this.userMenu.isPresent()
this.userMenu.isDisplayed()
...
}
Facciamo un po’ di pratica
dal vivo?
https://github.com/elleuca/codemotion-webinar-ferretti
Go Live!
RIFERIMENTI
Un po’ di link sparsi con risorse importanti da
approfondire:
▪ https://code.google.com/p/selenium/wiki/WebDriverJs
▪ https://github.
com/angular/protractor/blob/master/docs/referenceConf.
js
▪ http://angular.github.io/protractor/#/api
▪ https://code.google.
com/p/selenium/wiki/InternetExplorerDriver
▪ http://martinfowler.com/bliki/PageObject.html
▪ http://martinfowler.com/bliki/TellDontAsk.html
e mi raccomando, non credete mai troppo a quello che
trovate scritto su Internet
CREDITS
Un grazie speciale al team di Codemotion e Codemotion
Training
Un dovuto riconoscimento a
▪ Busy Icons di Olly Holovchenko
▪ Il template di SlidesCarnival
▪ Le fotografie di Dean Hochman
▪ The Internet Chuck Norris Database
Thanks!
join the code side
(we have cookies)
potete trovarmi:
@elleuca
elle.uca@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicinodavide ficano
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSGiovanni Buffa
 
Acadevmy - Angular Overview
Acadevmy - Angular OverviewAcadevmy - Angular Overview
Acadevmy - Angular OverviewFrancesco Sciuti
 
Zend Framework Workshop Parte1
Zend Framework Workshop Parte1Zend Framework Workshop Parte1
Zend Framework Workshop Parte1massimiliano.wosz
 

Was ist angesagt? (6)

Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
 
Angular js: routing
Angular js: routingAngular js: routing
Angular js: routing
 
Angularjs
AngularjsAngularjs
Angularjs
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
 
Acadevmy - Angular Overview
Acadevmy - Angular OverviewAcadevmy - Angular Overview
Acadevmy - Angular Overview
 
Zend Framework Workshop Parte1
Zend Framework Workshop Parte1Zend Framework Workshop Parte1
Zend Framework Workshop Parte1
 

Andere mochten auch

Think horizontally - Giuliano and De Donato
Think horizontally - Giuliano and De DonatoThink horizontally - Giuliano and De Donato
Think horizontally - Giuliano and De DonatoCodemotion
 
Native Javascript apps with Phonegap - De Keijzer
Native Javascript apps with Phonegap - De KeijzerNative Javascript apps with Phonegap - De Keijzer
Native Javascript apps with Phonegap - De KeijzerCodemotion
 
Building modular Java application in the cloud age - Ertman
Building modular Java application in the cloud age - ErtmanBuilding modular Java application in the cloud age - Ertman
Building modular Java application in the cloud age - ErtmanCodemotion
 
Introduction to Web application development with Vaadin 7.1 - Tzukanov
Introduction to Web application development with Vaadin 7.1 - TzukanovIntroduction to Web application development with Vaadin 7.1 - Tzukanov
Introduction to Web application development with Vaadin 7.1 - TzukanovCodemotion
 
Meeting the critical needs of older people
Meeting the critical needs of older peopleMeeting the critical needs of older people
Meeting the critical needs of older peoplelocalinsight
 
Psy301 uf children and violence - m8 a2
Psy301 uf   children and violence - m8 a2Psy301 uf   children and violence - m8 a2
Psy301 uf children and violence - m8 a2Roberta Simpkin
 
Startup in Action - Snapback pitch
Startup in Action - Snapback pitch Startup in Action - Snapback pitch
Startup in Action - Snapback pitch Codemotion
 
Engaging with young people
Engaging with young peopleEngaging with young people
Engaging with young peoplelocalinsight
 

Andere mochten auch (8)

Think horizontally - Giuliano and De Donato
Think horizontally - Giuliano and De DonatoThink horizontally - Giuliano and De Donato
Think horizontally - Giuliano and De Donato
 
Native Javascript apps with Phonegap - De Keijzer
Native Javascript apps with Phonegap - De KeijzerNative Javascript apps with Phonegap - De Keijzer
Native Javascript apps with Phonegap - De Keijzer
 
Building modular Java application in the cloud age - Ertman
Building modular Java application in the cloud age - ErtmanBuilding modular Java application in the cloud age - Ertman
Building modular Java application in the cloud age - Ertman
 
Introduction to Web application development with Vaadin 7.1 - Tzukanov
Introduction to Web application development with Vaadin 7.1 - TzukanovIntroduction to Web application development with Vaadin 7.1 - Tzukanov
Introduction to Web application development with Vaadin 7.1 - Tzukanov
 
Meeting the critical needs of older people
Meeting the critical needs of older peopleMeeting the critical needs of older people
Meeting the critical needs of older people
 
Psy301 uf children and violence - m8 a2
Psy301 uf   children and violence - m8 a2Psy301 uf   children and violence - m8 a2
Psy301 uf children and violence - m8 a2
 
Startup in Action - Snapback pitch
Startup in Action - Snapback pitch Startup in Action - Snapback pitch
Startup in Action - Snapback pitch
 
Engaging with young people
Engaging with young peopleEngaging with young people
Engaging with young people
 

Ähnlich wie Tech Webinar: Test e2e per AngularJS e non solo

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsAndrea Dottor
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloudGabriele Baldoni
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
 
Django & Google App Engine: a value composition
Django & Google App Engine: a value compositionDjango & Google App Engine: a value composition
Django & Google App Engine: a value compositionOpen Makers Italy
 
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Codemotion
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiGiuneco S.r.l
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPGiorgio Cefaro
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del webEugenio Uccheddu
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiMarco Breveglieri
 

Ähnlich wie Tech Webinar: Test e2e per AngularJS e non solo (20)

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 
Django & Google App Engine: a value composition
Django & Google App Engine: a value compositionDjango & Google App Engine: a value composition
Django & Google App Engine: a value composition
 
Maven - Aprile 2010
Maven - Aprile 2010Maven - Aprile 2010
Maven - Aprile 2010
 
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
 
Unit testing 101
Unit testing 101Unit testing 101
Unit testing 101
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio Benedetti
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del web
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e Delphi
 

Mehr von Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

Mehr von Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Tech Webinar: Test e2e per AngularJS e non solo