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 della durata di 4h in cui è richiesto di svolgere un esercizio per ogni argomento (testing, dbc, verifica di programmi, model checking, MBT, combinatorial testing) e prova orale. In alternativa alla prova pratica, lo studente potrà 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 (for around 4 h) in which the student applies all the techniques to a case study (testing, dbc, program verification, model checking, MBT, combinatorial testing) and oral questions. Instead of the exercises in the lab, the student can present a project (previous agreement with the teacher)