Testare angular

Eseguire test singoli tramite Karma ed Angular CLI quando i test rallentano lo sviluppo dei progetti più grandi

Le modifiche da applicare ad un progetto standard per avere più controllo sull’esecuzione dei test unitari tramite karma.

Per chi sviluppa frontend, le questioni relative al testing sono spesso “meno lineari” rispetto al classico approccio TDD dello sviluppo backend. Chi ha avuto occasione di lavorare in angular 2 avrà sicuramente potuto apprezzare angular CLI e gli strumenti che mette a disposizione, soprattutto per il testing.

Nello sviluppo quotidiano ho riscontrato che “ng test”, il comando che ci permette di eseguire test unitari tramite karma, non fornisce la possibilità di scegliere quali test eseguire, cosa che al crescere del numero dei test rallenta considerevolmente l’esecuzione, soprattutto in modalità “watch” rendendo così quasi impossibile un approccio TDD.

Infatti, ci capita spesso di lavorare su progetti frontend molto complessi per i nostri clienti e, nonostante questo tipo di problema, al contempo vogliamo mantenere alti i livelli qualitativi, anche con tecniche come appunto il TDD.

Per ovviare al problema ho perciò applicato le seguenti modifiche al mio progetto angular per avere la possibilità di lanciare e tenere in modalità watch solo i test che mi interessano durante lo sviluppo.

Continua a leggere

Perché ci sono sempre bug e li devo pagare (quasi sempre) io?

Dietro le quinte, il lavoro di un team di sviluppo e di gestione dell’operatività di un prodotto digitale è caratterizzato da molte soddisfazioni così come da molti problemi frustranti.

Dal punto di vista delle soddisfazioni, una di quelle che personalmente mi stimolano di più è quella di poter creare, spesso da zero, qualcosa che genera un risultato anche molto rilevante per un cliente.

Tra le frustrazioni ci sono invece quelle relative al fatto che è impossibile produrre software senza difetti o riuscire a servire sempre correttamente una richiesta operativa di un utente, anche con le migliori intenzioni, così come riuscire a far sì che un’infrastruttura abbia un uptime del 100% in un anno è pressoché infattibile e, in ultima istanza, anti economico.

In generale molti di questi problemi rimangono poco visibili agli utenti finali e ai committenti, se il team è ben organizzato e ci sono dei processi di controllo adeguati.

Tuttavia, proprio per la natura del software e dei sistemi che lo fanno girare su Internet, e in generale della complessità di una piattaforma digitale, è inevitabile imbattersi in bug, incidenti e problemi di comunicazione.

Continua a leggere

Share The Pain, ovvero come far funzionare un team digitale

In questo articolo tratto un argomento che mi sta molto a cuore che è anche uno di quelli più contro intuitivi, soprattutto nell’ambito del digitale e nella gestione appunto di piattaforme e prodotti digitali.

Un concetto che infatti ripeto spesso è che la tecnologia è tutto sommato facile, se la raffrontiamo al vero problema che è invece quello delle persone.

Inteso come: gestire gli aspetti tecnologici di una piattaforma digitale è il problema minore rispetto a quello di gestire le persone che lo fanno funzionare.

A dispetto di quello che pensano molti non addetti ai lavori, un prodotto digitale non sta in piedi da solo ed è necessario farlo evolvere e correggerlo continuamente.

Continua a leggere

Perché il tuo team tecnologico non rispetta le scadenze e le attività si accumulano?

Hai mai la sensazione che gestire lo sviluppo e la manutenzione del tuo prodotto digitale svolte dal tuo team (interno o esterno) sia come cercare di spegnere un palazzo in fiamme?

Mi riferisco al fatto che definire le priorità degli sviluppi, delle attività di supporto, degli incidenti e di tutte le altre operazioni digitali è un vero e proprio inferno dove si risolve una cosa e se ne rompe un’altra, si litiga continuamente nel definire delle scadenze che molto frequentemente non vengono rispettate e lo spazio per migliorare la situazione si fa sempre più ristretto.

E questo avviene in modo paradossale: più si cerca di pianificare le attività in modo esatto, tentando di mettere a punto anche il più piccolo dei dettagli, facendosi dare stime più precise possibili dagli sviluppatori e dagli altri specialisti, allineandosi il più frequentemente possibile con il team, più la situazione si aggrava invece di migliorare.

Continua a leggere

Come ottenere un prodotto digitale di qualità evitando i problemi dei contratti a corpo

Alcuni clienti preferiscono ricevere offerte a corpo dai loro fornitori, nella convinzione di poter rimuovere l’incertezza in termini di costo, tempistiche e funzionalità dei progetti. I clienti sono soddisfatti nel pensare di poter mantenere il controllo su questi aspetti, senza tuttavia rendersi conto che così facendo perdono il controllo sulla qualità.

Cosa ci vuole per realizzare un prodotto digitale di alta qualità? Innanzitutto, i prodotti migliori sono il risultato di uno sforzo collaborativo tra cliente e fornitore poiché è necessaria l’esperienza di entrambi. Inoltre, è indispensabile poter adattare un progetto agli inevitabili cambiamenti che ci saranno in corso d’opera, come avviene e come in realtà deve essere in un prodotto digitale.

Non è necessario che tutte le funzionalità siano completamente definite all’inizio del progetto, che è il momento in cui quest’ultimo è meno conosciuto: sia il cliente che il fornitore sono nella posizione di poterle dettagliare meglio solo man mano che passa il tempo.

Continua a leggere