TESTING E VERIFICA DEL SOFTWARE

Attività formativa monodisciplinare
Codice dell'attività formativa: 
21056

Scheda dell'insegnamento

Per studenti immatricolati al 1° anno a.a.: 
2018/2019
Insegnamento (nome in italiano): 
TESTING E VERIFICA DEL SOFTWARE
Insegnamento (nome in inglese): 
SOFTWARE TESTING AND CHECK
Tipo di attività formativa: 
Attività formativa Affine/Integrativa
Tipo di insegnamento: 
Opzionale
Settore disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Anno di corso: 
2
Anno accademico di offerta: 
2019/2020
Crediti: 
6
Responsabile della didattica: 
Mutuazioni

Altre informazioni sull'insegnamento

Modalità di erogazione: 
Didattica Convenzionale
Lingua: 
Italiano
Ciclo: 
Secondo Semestre
Obbligo di frequenza: 
No
Ore di attività frontale: 
48
Ambito: 
Attività formative affini o integrative
Materiali didattici: 
Prerequisiti

Sapere i principi base delle programmazione (special modo Java) e dell'ingegneria del software.

Obiettivi formativi

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,

Contenuti dell'insegnamento

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

Testi di riferimento

Software Testing and Analysis: Process, Principles and Techniques
Mauro Pezze, Michal Young

Metodi didattici

lezioni frontali con esercitazioni

Modalità verifica profitto e valutazione

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.

Prerequisites

Basic knowledge of programming (especially Java) and software engineering.

Educational goals

Basic undestanding fo the importance of the validation and verification of software systems. Mastering techniques and methodologies for testing and verification of software.

Course content

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

Textbooks and reading lists

Software Testing and Analysis: Process, Principles and Techniques
Mauro Pezze, Michal Young

Teaching methods

front lectures with exercises in the laboratory

Assessment and Evaluation

Exercices 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.