Sapere i principi base delle programmazione (special modo Java) e dell'ingegneria del software.
Familiarizzare con le fasi di validazione e verifica di sistemi e software all'interno dello sviluppo del software. Apprendere tecniche e metodologie per il testing e la verifica del software,
1 Introduzione
Concetti generali
Processo di test e di verifica
2 Testing
Ruolo del testing
Fondamenti teorici
Program-based testing (creiteri di copertura)
Esecuzione dei test
3 Verifica del codice
Concetti generali sulla logica
Concetti generali sulla verifica
Design by Contract
JML
Analisi statica del codice
4 Verifica tramite Model Checking
Linear-time Temporal Logic (LTL)
Computation Tree Logic (CTL)
Algoritmi di Model Checking
AsmetaSMV
5 Testing Model-based
Partition testing e testing combinatoriale
Testing basato su specifiche (FSM)
Concretizzazione dei test
lezioni frontali con esercitazioni
Prova pratica in laboratorio in cui è richiesto di svolgere alcuni esercizi pratici e teorici e prova orale. All'orale, lo studente dovrà presentare un progetto da concordare con li professore.
Basic knowledge of programming (especially Java) and software engineering.
Basic undestanding fo the importance of the validation and verification of software systems. Mastering techniques and methodologies for testing and verification of software.
1 Introduction
Testing and verification processes
2 Testing
Theoretical framework
Program-based testing (coverage criteri)
Test execution
3 Code verification
Intro to logic and verification
Design by Contract
JML
Static analysis of the source code
4 Verification by model checking
Linear-time Temporal Logic (LTL)
Computation Tree Logic (CTL)
Model Checking Algorithms
AsmetaSMV
5 Testing Model-based
Partition testing and combinatorial testing
Specification-based (FSM) testing
Test concretization
front lectures with exercises in the laboratory
Exercises in lab in which the student applies all the techniques to several theoretical and practical exercises and oral questions. The student must present also a project (previous agreement with the teacher)