Prosecuzione del post sul paradigma Client/Server
Lo sviluppatore non testa ... falso! "auto-testa"
Come scritto sul post precedente, realizzare una componente server presuppone OBBLIGATORIAMENTE di investire delle risorse per il testing.Ci sono vari modi di fare test, e per esperienza una volta che il codice viene scritto difficilmente si torna allo sviluppo del test.
Ma in realtà questo tempo viene già "sprecato". Facciamo un esempio.
Tipicamente lo sviluppo "agile" con ROR (o altri framework) prevedere che:
- si inizia a scrivere del codice, magari prendendo spunto da precendenti progetti o ricerche su google
- si avvia il server e si controlla se non si sono fatti errori di sintassi
- si avvia il browser e si naviga l'applicazione
- si compilano un po di dati
- si ricarica la pagina
- ci si imbatte in un errore
- trovato si vede sul log il punto sul sorgente che ha dato errore e si torna al punto 1
Quindi c'è già un tempo impiegato a di navigare, immettere dati, ricaricare pagine.
Inoltre più aumentano le funzionalità, maggiore è il tempo "perso" a caricare e ricaricare i dati.
Si pensi ad esempio a quante volte si ridigitano credenziali di accesso o testi di ricerca
Il BDD - behavior-driven development
Utilizzare correttamente i sistemi di BDD permettono- di ottimizzare i tempi di sviluppo (riducendo i tempi di auto-test)
- di garantire la stabilità del codice
- di aumentare il livello di coinvolgimento del cliente e degli altri team
Nel nostro esempio, dovendo partire a sviluppare la componente server, si è partiti dalla definizione delle funzionalità (behavior) e degli scenari d'uso:
#encoding: utf-8 Feature: Login Per verificare che il login funzioni correttamente Come operatore devo poter accedere alle funzioni riservate Come cliente devo poter vedere solo i miei documenti Il sistema viene precaricato con 3 operatori, 2 utenti e 4 documenti Scenario: Login Operatore Given a user "operator1" with password "test1234" When he logs whit username and password Then he should navigate page "operators" and have 3 records And he should navigate page "customers" and have 2 records And he should navigate page "settings" And he should navigate page "documents" and have 4 records Scenario: Login Cliente Given a user "customer1" with password "test1234" When he logs whit username and password Then he should see olny his documents And he shouldn't navigate page "documents" And he shouldn't navigate page "customers" And he shouldn't navigate page "users" And he shouldn't navigate page "settings"
e ancora
#encoding: utf-8 Feature: Caricamento documenti Per verificare il corretto funzionamento dei documenti Come operatore dovrei essere in grado di caricare un nuovo tipo di documento ed associarlo ad un cliente Come Cliente dovrei essere in grado di vedere i documenti a me associati e scaricarli Il sistema viene precaricato con 3 operatori, 2 utenti e 4 documenti Scenario: Caricamento documenti da operatore1 Given a user "operator1" with password "test1234" When he logs whit username and password Then he should navigate page "customers" And he should navigate customer "azienda1" And he should upload an "F24" using "file1" And customer should have assigned an "F24" Scenario: Caricamento documenti da operatore2 Given a user "operator2" with password "test1234" When he logs whit username and password Then he should navigate page "customers" And he should navigate customer "azienda2" And he should upload an "Bilancio" using "file2" And customer should have assigned an "Bilancio" Scenario: Accesso a documenti da cliente Given a user "customer1" with password "test1234" When he logs whit username and password Then he should have a list of documents that include an "F24_init"
Nessun commento:
Posta un commento