sviluppare software a colpi di test – ii appuntamento: “mani in pasta col bdd
TRANSCRIPT
Materiale
https://github.com/javasilk/api-mani-in-pasta
https://github.com/cernio/behapi
https://getcomposer.org/doc/00-intro.md
Sviluppare software a colpi di test
Mani in pasta
Andrea Salidu - Giugno 2015https://it.linkedin.com/in/andreasalidu
Un po di premesseChi sono
Andrea SaliduSoftware Architect presso Tiscali MediaSocio Fondatore FabbricastorieSocio Fondatore YourepContatti: [email protected] tel 340 26 72 232https://www.facebook.com/andrea.salidu.71https://www.linkedin.com/in/andreasalidu
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...
setup ambienteuno sguardo di dettaglio a behapiin pasta I : definizione user storyin pasta II: dettaglio scenariin pasta III: behapi da vicinoin pasta IV: sviluppiamo!
Cosa facciamo oggi
Feature: Caricare un documentoCome 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
Esigenza: consentire a un utente di autenticarsi sul nostro sistemaDeriva 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...
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
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… => ARRANGEExecute => ACT
In pasta II - scenari...
ARRANGE
ACT
ASSERT
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 è JSONE la risposta contiene
Allora “pluto_direct” riceve una mail di notifica diretta Ma “pluto_direct” non riceve una mail di notifica digest
In pasta II - ...scenari
class ApiContext{public function datoCheHoUnoUserPass($user,$pass){
…}
public function quandoFaccioPostConBody($url,$body){…
}
public function alloraStatusCode($val){ … }}
In pasta III - behapi da vicino
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...
Prossimo appuntamento? - documentare con
swagger+nelmioapidocbundle
...non è ancora il momento di farsi i complimenti a vicenda
http://guzzle.readthedocs.org/en/5.3/https://github.com/Peekmo/JsonPathhttps://robots.thoughtbot.com/writing-better-cucumber-scenarios-or-why-were
RIVEDEREhttp://2015.phpday.it/talk/behatminkphantomjs-test-all-the-things/http://www.slideshare.net/chassa/2013-0603specification-byexamplewithgherkinchristianhassahttp://www.slideshare.net/IosifItkin/behavior-driven-development-pros-and-conshttp://martinfowler.com/bliki/BusinessReadableDSL.html http://www.slideshare.net/railsconf/below-and-beneath-tdd-test-last-development-and-other-real-world-test-patterns-presentationhttps://robots.thoughtbot.com/writing-better-cucumber-scenarios-or-why-were
Libri:Gojko Adzic - Specification by example http://specificationbyexample.com/Mike Cohn - User stories applied http://www.mountaingoatsoftware.com/books/user-stories-applied
Riferimenti