codice di qualità con vs2010 (tdd)
TRANSCRIPT
Codice di qualità con Visual Studio 2010Test Driven Development, Continuous Integration, MTM
» Davide Vernole
In collaborazione con
12/04/2023 www.xedotnet.org 2
AgendaAgenda
» Introduzione al testing» Test Driven Development» Continuous Integration» Manual Testing
12/04/2023 www.xedotnet.org 3
Introduzione al testing
Formazione
Preparazione
Scalata
Fase di preparazione
Costo del fallimento
12/04/2023 www.xedotnet.org 4
Introduzione al testing
Test
Release
Development
Fase del software
Costo dei bugs
12/04/2023 www.xedotnet.org 5
Introduzione al testing - segmentazione
Generalista SpecialistaTesting manuale
Qualche script
Creazione di scripts per preparare lab, creare dati
Forti competenze di scriptingQualche competenza di sviluppo
Forti competenzeSviluppo di procedure di testing automatizzate
Competenze di sviluppo da esperto
Black Box Testing
White Box Testing
API Testing
70% del testing avviene qui
la maggior parte dei tools operano qui
12/04/2023 www.xedotnet.org 6
» Tecnica di sviluppo: test-first approach• Scrivere prima i test• Basare le interazioni su un grouppo di test• Scrivere codice per passare i test
» Benefici• Mantenere il focus sulle funzionalità di codice per
l’utente• Piccole interazioni• Piena copertura del codice (Code Coverage)• Codice più ridotto e pulito
Test Driven Development (TDD)
12/04/2023 www.xedotnet.org 7
» Il processo• Scrivere il test• Fallire il test• Scrivere il codice• Passare il test• Re-factoring
Test Driven Development (TDD)
•Se fallisce passo allo step successivo
ScritturaTest
•Se passo i test procedo con lo step successivo
Scrittura codice
•Ri-esecuzione del test•Se passo il test procedo con lo step successivo
Re-factoring
Prossima iterazione
12/04/2023 www.xedotnet.org 8
» TDD in Visual Studio 2010• Generazione di codice da Test• Impostazioni Intellisense• Test Impact View
Test Driven Development (TDD)
12/04/2023 www.xedotnet.org 9
» TDD in VS 2010 - Generato dall’uso...• Stub generati per:• Class• Struct• Interface• Constructor• Method• Property• Field• Enum
• Intellisense in modalità Consume-First
Test Driven Development (TDD)
12/04/2023 www.xedotnet.org 10
Test Driven Development (TDD)
DEMO TDD
12/04/2023 www.xedotnet.org 11
» Test Impact View• Trovare il codice interessato dai cambiamenti• Viste possibili• Test impattati• Cambiamenti di codice
• Visual Studio 2010• Ultimate• Premium• Professional
Test Driven Development (TDD)
12/04/2023 www.xedotnet.org 12
Test Driven Development (TDD)
DEMO TIV
12/04/2023 www.xedotnet.org 13
» Vantaggi• Riduce le sessioni di debugging• Mantiene il focus su• Usabilità attesa dal cliente• Task da realizzare
• Riduce il tempo complessivo di sviluppo + test• Porta a codice più modulare, flessibile e estendibile• Full code coverage
Test Driven Development (TDD)
12/04/2023 www.xedotnet.org 14
» Scopo• Ridurre la possibilità di «Integration hell»• Ridurre il tempo di fixing del codice
» Modalità• Build a ogni inserimento di codice nel repository
» Come• Source Control• Build automatizzate• Flag Continuous Integration• Flag Gated Checkin
Continuous Integration (CI)
12/04/2023 www.xedotnet.org 15
Test Driven Development (TDD)
DEMO CI
12/04/2023 www.xedotnet.org 16
» Vantaggi• In presenza di bug, fixing on time senza eccessivi tempi di debugging• Individuazione e fix dei problemi continuo evitando il caos dell’ultimo minuto• Avviso preventivo per
• codice non funzionante o incompatibile• Conflitti nei cambiamenti
• Unit testing immediato per tutti I cambiamenti• Disponibilità costante dell’ultima build per
• Testing• Demo• release
• feedback immediato agli sviluppatori per• Qualità• Funzionalità• Impatto del codice sulla soluzione
• Migliora la modularità del codice e ne riduce la complessità (check-in frequenti)
Continuous Integration (CI)
12/04/2023 www.xedotnet.org 17
» Cosa succede abitualmente quando un cliente (tester) trova un bug?
Manual Testing con Microsoft Test Manager (MTM)
...ora mi dira la solita frase...
Funziona nel mio
computer
12/04/2023 www.xedotnet.org 18
» 70% dei test viene eseguito manualmente» Visual Studio 2010 introduce MTM» MTM agevola la:• creazione di test manuali• segnalazione di bug ricchi di informazioni• Utilizzabile anche da non developer
» Elevata integrazione con TFS• User Story• Test case• Bugs• ...ecc
Manual Testing con Microsoft Test Manager (MTM)
12/04/2023 www.xedotnet.org 19
Test Driven Development (TDD)
DEMO MTM
12/04/2023 www.xedotnet.org 20
» Tecniche• Unit Testing
» Tools• PEX• Analisi del codice e identificazione comportamenti• Automatizza la creazione di Unit Testing con elevato code
coverage• http://research.microsoft.com/en-us/projects/pex/
• MOLES• Aggevola lo Unit Testing con PEX
Continua...
blog:
email:
web:
twitter:
Link
12/04/2023 www.xedotnet.org 21
»Davide Vernole
blog.knodev.com
www.knodev.com
twitter.com/knodev