Startupper, product/project manager, sviluppatori, tester, se siete rimasti impressionati dal workshop animato e irriverente sul Behavior Driven Development, non potete perdere il secondo appuntamento con Enrico Marongiu, Andrea Salidu e Alessandro Mattiello, giovedì 18 giugno dalle 18.00 alle 20.00.
La creazione di un software non è un processo semplice, vi sarà capitato di dover affrontare almeno uno di questi problemi: difficoltà di comunicazione tra il team tecnico e il cliente, definizione superficiale dei requisiti e/o delle specifiche del software, scarsa attenzione ai test, fondamentali per verificare la qualità del prodotto.
La pratica BDD (Behavior Driven Development) risolve queste difficoltà, creando un linguaggio comune comprensibile a tutti gli attori coinvolti, definendo contemporaneamente le specifiche dei requisiti e i test di accettazione/collaudo (sono gratis!!! ), e fornendo uno strumento intuitivo per monitorare l’avanzamento del progetto.
Enrico, Alessandro e Andrea vi presenteranno, attraverso 3 talk, le best practice per adottare il BDD in maniera indolore, produttiva e veloce.
Mettiamo mano al codice e realizziamo una semplice applicazione RESTful utizzando BEHAT. Sarà fornito un ambiente pronto all’uso per l’esecuzione dei test funzionali.
Portate un PC con ambiente di sviluppo e interprete php configurato e pronto all’uso (o trovate qualcuno con cui lavorare).
Chi sono Enrico, Alessandro e Andrea?
Enrico Marongiu
Enrico ha 15 anni di esperienza professionale nel mondo ICT in varie vesti e ricoprendo vari ruoli, continua a divertirsi nel creare bug di una certa entità. Al momento li crea in Tiscali divisione Media. A tempo perso insiste pervicacemente nel voler imparare a suonare il Sax.
Alessandro Mattiello
Alessandro lavora da 15 anni in Tiscali nel settore Media. Si occupa di progettazione web e negli ultimi anni ha lavorato sulla realizzazione di istella social. Si occupa di diversi progetti relativi al portale Tiscali di cui coordina le attività di sviluppo. Se avesse del tempo gli piacerebbe uscire in moto o fare fotografie, ma attualmente si diverte a fare il papà a tempo pieno.
Andrea Salidu
Andrea ha 14 anni di esperienza nello sviluppo e progettazione web application. Attualmente, lavora per Tiscali nella sezione Media e si occupa di diversi progetti web/social tra i quali istella. È molto attento alla qualità del codice e ai processi che possono essere usati per migliorarlo. A tempo perso lavora come game designer con suoi amici Fabbricastorie.
2. Sviluppare software a colpi di
test
Mani in pasta
Andrea Salidu - Giugno 2015
https://it.linkedin.com/in/andreasalidu
3. Un po di premesse
Chi sono
Andrea Salidu
Software Architect presso Tiscali Media
Socio Fondatore Fabbricastorie
Socio Fondatore Yourep
Contatti:
salidu@tiscali.it
tel 340 26 72 232
https://www.facebook.com/andrea.salidu.71
https://www.linkedin.com/in/andreasalidu
6. BDD - Riassunto
Behavior Driven
Development
- Make it right
- Test “inclusi”
- Rilasci frequenti
- Software snello
- Linguaggio specifico di
dominio
Parole chiave
- .feature
- Scenario
- Background
- Given, And, When,
Then, But...
7. setup ambiente
uno sguardo di dettaglio a behapi
in pasta I : definizione user story
in pasta II: dettaglio scenari
in pasta III: behapi da vicino
in pasta IV: sviluppiamo!
Cosa facciamo oggi
8. Feature: Caricare un documento
Come utente contributore,
Voglio caricare un documento
Così che sia disponibile sulla digital library
Nota: Accetta pdf, ppt, odt, odf, sxw, txt
I.N.V.E.S.T.
https://en.wikipedia.org/wiki/INVEST_%28mnemonic%29
In pasta I - user story
9. Esigenza: consentire a un utente di autenticarsi sul nostro sistema
Deriva da:
- “per salvare i miei documenti devo essere identificato”
- “per commentare devo essere riconoscibile”
- “vogliamo tracciare il profilo utente”
- “dobbiamo per legge riconoscere l’utente che condivide i post per non
caricarci di responsabilità che non ci competono”
In pasta I - user story...
10.
11. Login
- Come utente della piattaforma, per poter salvare i documenti, devo
autenticarmi
- Per potermi autenticare, come utente della piattaforma, devo potermi
registrare
- Come utente registrato, per poter accedere in maniera riconoscibile,
devo essere dotato di una coppia di credenziali (username/password)
- (opzionale) Come utente facebook, devo poter utilizzare la mia identità
su facebook per registrarmi e autenticarmi
In pasta I - ...user story
12. Scenario:
Dato che ho un utente “pippo”
E un utente “pluto”
Quando “pluto” segue “pippo”
Allora “pippo” riceve una notifica via email
contenente “pluto ha iniziato a seguirti”
Pensate alla costruzione di una query:
Prepare… Bind… => ARRANGE
Execute => ACT
In pasta II - scenari...
ARRANGE
ACT
ASSERT
13.
14. Funzionalità: login
Come utente della piattaforma
Voglio autenticarmi
Così che io possa salvare i documenti, essere riconoscibile...
Contesto:
Dato che esiste l’utente “test” con password “letmein”
Scenario: Login successful
Quando faccio POST su “/v1/login” con body “url-encoded”
“””
user=test&password=letmein
“””
Allora lo status code è “200”
E il body è JSON
In pasta II - ...scenari
15. class ApiContext{
public function datoCheHoUnoUserPass($user,$pass){
…
}
public function quandoFaccioPostConBody($url,$body){
…
}
public function alloraStatusCode($val){ … }
}
In pasta III - behapi da vicino
16. try {
$tester=new ApiContext();
$tester->datoCheHoUnoUserPass(‘test’, ‘letmein’);
$tester->quandoFaccioPostConBody(‘/v1/login’,
‘user=test&password=letmein’);
$tester->alloraStatusCode(200);
} catch (Exception $e) {
print ‘[‘ . $e->getline(). ‘]’ . $e->getMessage();
}
In pasta III - behapi da vicino...