Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Il software funzionante è il principale metro di misura di progresso

Raffaele Colace
October 04, 2023
5

Il software funzionante è il principale metro di misura di progresso

Pensa al software di un aereo. Oppure al software di un ecografo. O ancora, al software della tua banca. Ti sentiresti al sicuro sapendo che non sono stati creati dei test per verificarne la qualità?
Sembra assurdo ma ancora oggi siamo lontani dal sentirci a nostro agio quando utilizziamo alcuni software e ancora oggi troppo spesso si sente parlare di software con bug incredibilmente stupidi.
Troppo spesso noi developer pensiamo di fare bene il nostro lavoro ma spesso ciò che realizziamo non genera impatti positivi a nessuno.
In questo talk voglio affrontare il tema dei test dal punto di vista dell’utente e vedremo anche qualche esempio pratico per comprendere appieno l’importanza della qualità del software e dei risultati attesi.

Raffaele Colace

October 04, 2023
Tweet

Transcript

  1. Raffaele Colace Head of Operations e Founder @ 20tab srl

    • Python senior developer ◦ PHP, Java, Swift, C#, Dart, … • Agile Passionate ◦ DevOps, Lean, Growth Hacking, … • Founder @ Product Management Day
  2. Agenda Il mondo dello sviluppo software Qualità del codice Esempio

    6 3 2 1 Il software funzionante è il principale metro di misura di progresso
  3. 17 Il software funzionante è il principale metro di misura

    di progresso Dramma Costo totale della scarsa qualità del software $ 2.08 Trillion Debito tecnico causato dai gravi difetti software da correggere $ 1.31 Trillion Fonte: USA 2020 - CISQ - Consortium for Information & Software Quality™
  4. 2005 2006 2017 2018 2019 2020 2021 2022 2011 2012

    2013 2014 2015 2016 2007 2008 2009 2010 $ 54,000,000,000,000
  5. È dannoso? Contiene codice difettoso? 22 Il software funzionante è

    il principale metro di misura di progresso Quando si può dire che il software è funzionante? Le release sono sempre verificate?
  6. 24 We will not ship shit! Ogni bug rilasciato e

    M***A Ogni funzione non sottoposta a test è M***A Ogni funzione scritta male è M***A Ogni accoppiamento non necessario è M***A … Il software funzionante è il principale metro di misura di progresso
  7. 27

  8. 28 Qual è la cura a questi problemi? TEST Il

    software funzionante è il principale metro di misura di progresso
  9. 31 • Database test • Integration tests • API tests

    • Contract test • Functional Il software funzionante è il principale metro di misura di progresso
  10. 32 • Test di accettazione • Test di interfaccia Il

    software funzionante è il principale metro di misura di progresso
  11. 34 Manual tests more isolation more integration faster slower Il

    software funzionante è il principale metro di misura di progresso
  12. 35 Test dei database • No test sui database •

    Disaccoppiare i database dalle regole operative Il software funzionante è il principale metro di misura di progresso
  13. 36 Test alle GUI • La GUI è estremamente piccola

    • No test sulla GUI • Test a tutto tranne che alla GUI Il software funzionante è il principale metro di misura di progresso
  14. 38 Approccio Waterfall Requirements Analysis Design Coding Deployment Testing Maintenance

    Il software funzionante è il principale metro di misura di progresso
  15. 39 Approccio User Centric / Iterativo Il software funzionante è

    il principale metro di misura di progresso
  16. 40 User Story Requisito Utente Un utente deve essere in

    grado di aggiungere, visualizzare, completare e rimuovere attività dalla propria lista delle attività. Il software funzionante è il principale metro di misura di progresso Feature: Gestione delle Attività Scenario: Aggiungere un'attività alla lista Given che l'utente ha una lista delle attività vuota When l'utente aggiunge un'attività "Fare la spesa" Then la lista delle attività dovrebbe contenere "Fare la spesa" Scenario: Visualizzare la lista delle attività Given che l'utente ha una lista delle attività con "Fare la spesa" e "Studiare Python" When l'utente visualizza la lista delle attività Then l'utente dovrebbe vedere "Fare la spesa" e "Studiare Python" nella lista Scenario: Completare un'attività Given che l'utente ha una lista delle attività con "Fare la spesa" e "Studiare Python" When l'utente completa l'attività "Fare la spesa" Then l'attività "Fare la spesa" dovrebbe essere contrassegnata come completata Scenario: Rimuovere un'attività Given che l'utente ha una lista delle attività con "Fare la spesa" e "Studiare Python" When l'utente rimuove l'attività "Fare la spesa" Then la lista delle attività non dovrebbe contenere "Fare la spesa"
  17. Feature: Caricamento Dati Cliente nel Database Scenario: Inserisci i dati

    di un cliente nel sistema Given l'utente è sul modulo di inserimento dati cliente When l'utente inserisce i seguenti dati del cliente: | Nome | Cognome | Indirizzo | Telefono | Email | | Mario | Rossi | Via Roma 123 | 1234567890 | [email protected] | And l'utente conferma l'inserimento Then il sistema dovrebbe confermare: "Cliente salvato con successo nel database" Scenario: Inserisci dati di un cliente con errori Given l'utente è sul modulo di inserimento dati cliente When l'utente inserisce dati del cliente con errori: | Nome | Cognome | Indirizzo | Telefono | Email | | | Rossi | | 1234567890 | [email protected] | And l'utente conferma l'inserimento Then il sistema dovrebbe restituire un messaggio di errore: "Errore: Nome e cognome sono obbligatori" Scenario: Visualizza o modifica dati cliente Given l'utente è sul modulo di visualizzazione/modifica dati cliente When l'utente seleziona il cliente da visualizzare/modificare Then il sistema dovrebbe mostrare i dati del cliente And l'utente può apportare modifiche ai dati And l'utente può confermare le modifiche Then il sistema dovrebbe confermare: "Modifiche salvate con successo" Scenario: Tracciamento dell'operazione di caricamento dei dati del cliente Given l'utente ha completato l'inserimento dei dati del cliente When l'utente conferma l'inserimento Then l'operazione di caricamento dei dati del cliente dovrebbe essere registrata nel registro di sistema
  18. 54 Vantaggi del TDD Buon design Maggiore qualità del software

    Riduzione dei bug Migliore documentazione Crescita incrementale Maggiore sicurezza nelle modifiche Feedback rapido Riduzione dei costi di manutenzione Fiducia nell’evoluzione del software Aumento della produttività
  19. Conclusioni Facciamo del nostro meglio Produciamo codice impeccabile Assicuriamoci di

    creare impatti positivi con il codice che scriviamo 56 3 2 1 Il software funzionante è il principale metro di misura di progresso