Informatica. Progettazione ed implementazione di un tool per il supporto al debug nella pratica di sviluppo Test Driven



Documenti analoghi
Anno Accademico 2007/2008

Sviluppo di un'interfaccia grafica per l'automatizzazione di campagne di software fault injection. relatore Ch.mo prof.

Un'applicazione per lo scambio di contenuti multimediali in ambiente Android

Realizzazione di un sistema a supporto del testing automatico di Rich Internet Applications

STRUMENTI PER LA MISURA SU CODICE ACTIONSCRIPT SVILUPPATI CON JAVACC

Ingegneria del Software Agile Testing. Corso di Ingegneria del Software Anno Accademico 2012/13

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Interfacce per End-User Debugging nel contesto Internet of Things

Un sistema per il Crawling di Rich Internet Applications Anno Accademico 2008/2009

MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

Tecniche di automazione del testing: applicazione ad un caso di studio reale

Studio di buffer overflow in ambiente Win32

Il calcolatore. Architettura di un calcolatore (Hardware)

Software Testing. Esercizi proposti. Esercizi di Testing 1

Gestione dei vincoli in ambiente Wiki

Testing di applicazioni flex: uso dello strumento FlexUnit

Programmazione Orientata agli Oggetti in Linguaggio Java

UNITA CAPITALIZZABILI PER LA FIGURA PROFESSIONALE: TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE

Corso di Laurea Magistrale in Ingegneria Informatica Curriculum in IT Management. Ingegneria del Software II (IS2)

Progetto e realizzazione di una libreria per la comunicazione sicura di. dati sui fallimenti in ambiente Android. Anno Accademico 2011/2012

14. Verifica e Validazione

Strumento e tecnica a supporto del crash testing automatico di applicazioni mobili basato sul sistema operativo Android Anno Accademico 2010/2011

Un architettura orientata ai servizi per la localizzazione di dispositivi mobili

Perfezionamento e sperimentazione di uno strumento per la

Valutazione sperimentale di algoritmi per la rilevazione di fallimenti temporali nel sistema operativo Minix3

Strumenti per l automazione del testing di applicazioni web Javascript-based

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

Tecniche per la ricerca di test suite minimali per RIA

Laboratorio di Progettazione di Sistemi Software Progetto: modellazione di un dominio e sue attività

Analisi ed Esplorazione della Potenza Dissipata e delle Prestazio. delle Prestazioni di una Architettura Superscalare

SIMULAZIONE DISCRETA

CAPITOLO 1 Introduzione

Valutazione sperimentale di tecniche di testing per software in relazione ai tipi di guasti

Uno Strumento per la ricerca di campi Output e Etichetta in pagine Client

Capitolo I1: Laboratorio con DevC++

STORIA E CARATTERISTICHE

Il PROCESSO UNIFICATO

Testing black box di web service: sperimentazione su di un servizio senza stato

Metodi e Tecniche per il Riuso di componenti in Applicazioni Android

Realizzazione di un software per la gestione di apparecchiature biomedicali Anno Accademico 2010/2011

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione

Sistemi di simulazione cinematica e dinamica per la progettazione meccanica

Verifica parte IV. Rif. Ghezzi et al

Navigazione sul Web mediante dispositivi di input head-controlled

La fase di Progettazione

Ingegneria del Software 1: Eclipse

Materiale didattico. Sommario

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

La fase di Implementazione

TECNICHE DI SIMULAZIONE

UML2. Attività di Progettazione. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino

Debugging. Debugging 1

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

Progetto e sviluppo di un applicazione Android per il controllo di reti di sensori senza filo

Mathcad Prime 2.0 Guida al curriculum

Ingegneria del Software 22b. Altri test e valutazione. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Nell ambito quindi di un ulteriore potenziamento della propria struttura, Klopotek Software & Technology Services S.r.l.

Proposte di Tesi di Laurea

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

Lab 4: Design Patterns

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Redazione e Presentazione di Progetti Informatici

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto

Concetti principale della lezione precedente

Programmazione Procedurale in Linguaggio C++

Analisi dei rischi: esercizi (esercizio 2)

Approccio Meccatronico alla progettazione. Ing. Roberto Loce Solution Architect Motion Control Rockwell Automation

Allegato 1 Descrizione profili professionali

3. Ciclo di Vita e Processi di Sviluppo

CAMPIONAMENTO - ALCUNI TERMINI CHIAVE

Ingegneria dei requisiti di sistema e dei requisiti software della piattaforma MLA con il tool DOORS

Laboratorio di Progettazione di Sistemi Software Design Patterns

Realizzazione di un software a supporto della Classificazione guidata di Pagine Web

Un'Interfaccia per il Monitoraggio dei Guasti in un'applicazione per il Controllo del Traffico Aereo

Tirocinio Esterno - Dipartimento di Informatica

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

Analisi e valutazione di un algoritmo di pianificazione per reti di telecomunicazione a qualità del servizio garantito

Servizi di verifica runtime di Ambienti Intelligenti

Un processo a supporto della classificazione di pagine client Anno Accademico 2006/2007

Esercitazioni di Fondamenti Informatica - Modulo A 1

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Verifica e Validazione del Software

Sviluppo di un applicazione di front-end per il monitoraggio di un Isola Ecologica

Tecniche e strumenti per la validazione di codice Java: un esempio applicativo

Gestione dello sviluppo software Modelli Base

Studio del linguaggio TROPOS per la modellazione dei requisiti orientata agli agenti

DESCRIZIONE PROFILI PROFESSIONALI

Giovanni A. Cignoni 1

AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma

Progettazione di un cruscotto di analisi dei difetti dei componenti in sistemi software large-scale

Introduzione ai casi d uso. Iolanda Salinari

Metriche basate sulla LOC

UML2. Progettazione della realizzazione dei casi d uso. Andrea Polini

Capitolo 6. Testing dell applicazione. 6.1 Introduzione

Ingegneria del Software

ALLEGATO A (D.R. n. 832 del ) AREA SCIENTIFICO DISCIPLINARE INGEGNERIA INDUSTRIALE E DELL INFORMAZIONE

5 ANNO MACRO COMPETENZA DISCIPLINA DI RIFERIMENTO DISCIPLINE CONCORRENTI

ISTITUZIONE SCOLASTICA DI ISTRUZIONE TECNICA LYCÉE TECHNIQUE PROGRAMMAZIONE EDUCATIVA E DIDATTICA ANNUALE PER COMPETENZE A.S.

Laboratorio di Tecnologie dell'informazione. Ing. Marco Bertini

Transcript:

Tesi di laurea in Informatica Progettazione ed implementazione di un tool per il supporto al debug nella pratica di sviluppo Test Driven Relatore Ch.mo Prof. Giuseppe Trautteur Candidato Gioacchino Del Prete 566/219 Tutor aziendale Ing. Massimo Ficco Azienda ospitante

Contesto e Obiettivi Si stima che per fare debugging si spenda il 50% del tempo totale dell'intero sviluppo software. Nel caso del processo TDD(Test Driven Development), esso ha un forte impatto sul costo di sviluppo del sistema. Progettare ed implementare una tecnica di base per uno schema generale per la localizzazione dei fault. Ridurre il costo del processo di Debug nello sviluppo TDD. 1/16

Debug Il processo di Debug segue la fase di convalida e verifica di un software e permette di localizzare e correggere gli errori. Test Case Esecuzione Test Case Regressione Bug corretto Bug localizzato Raffinare ipotesi Bug non localizzato Error report Ipotesi verificate Ipotesi non verificate Si inizia dalle ipotesi 2/16

Test Driven Development TDD è una pratica agile che ha come obiettivo il design del software e non la sua validazione. TDD può essere riassunto in una sola formula: Test-First Programming+Refactoring 3/16

Processo di Debug in TDD Si scrivono singole Unità a basso accoppiamento: Tempo per il Debug di una Unità diminuisce Continua localizzazione e correzione dei bug Think Red Bar Green Bar Refactoring Debug Test failed Think: come dovrebbe comportarsi il codice (Design) Red Bar: focalizza il comportamento dell unità e l interfaccia pubblica (Write test) Green Bar: implementazione della funzionalità (Implementation) Refactoring: semplificazione e miglioramento della funzionalità sviluppata (Rewrite code so Refactoring: semplificazione e miglioramento della funzionalità sviluppata (Rewrite code so elegant) 4/16

Modello Comportamentale Per automatizzare la localizzazione degli errori bisogna avere una descrizione formale del sistema: Modello Comportamentale Think Red Bar Green Bar Refactoring Debug Test failed Nella tecnica proposta il modello comportamentale è ottenuto dalle tracce di esecuzioni, con strumenti di analisi dinamica 5/16

Daikon Per ricavare il modello comportamentale nella tecnica proposta si è utilizzato Daikon: E un motore inferenziale Produce un insieme di invarianti di I/O Template di invarianti utilizzati da Daikon Siano x,y,z variabili Siano a,b,c costanti Valori cost. x=a x є a; b; c Intervallo a x b Relazioni y=ax+b x y x=fn(y) Equazioni z=ax+by+c 6/16

Violazioni Le differenze tra invarianti di un modello comportamentale registrato in versioni successive del sistema software sono dette: Violazioni 7/16

La tecnica proposta La tecnica proposta per automatizzare il processo di Debug nel TDD, fa quindi uso delle violazioni ricavate dalla differenza di invarianti ricavati tra la fase di development e la fase di regression del sistema software. Dall insieme delle violazioni risultante con l ausilio di una metrica si cerca di stabilire i possibili FAULT!!! Think Red Bar Green Bar Refactoring Tecnica proposta 8/16

Scrematura delle violazioni L insieme delle violazioni rappresentano i possibili fault introdotti ma da esso si devono scremare con l ausilio di una metrica: 1.I possibili falsi positivi (nuovi requisiti) 2.Fault aggiunti 3.Fault già esistenti 9/16

Metrica proposta 1/2 Scopo della metrica è quello di rilevare quanti più possibili fault dall insieme delle violazioni. Massimizzare il rapporto di precision 10/16

Metrica proposta 2/2 Ecco come la metrica attribuisce la probabilità ad una violazione di essere un fault 11/16

Architettura del Tool Per testare, misurare: sperimentare la tecnica proposta è stato progettato ed implementato un tool in linguaggio Java 12/16

Flusso di esecuzione del Tool 13/16

Sperimentazione 1/2 La tecnica è stata sperimentata con la Fault Injection sul software opensource JFreeChart. La violazione che causa questo tipo di errore iniettato è stato rilevato dalla metrica ed indicato come violazione con la più alta probabilità di essere il fault che porta l applicazione in uno stato di errore. 14/16

Sperimentazione 2/2 In generale gli esperimenti condotti hanno dimostrato che la metrica rileva sempre la violazione causa del fault iniettato ma non sempre indica tale violazione come la più probabile causa di errore. Infatti si presentano tre casi: 1.La violazione rilevata ed indicata come la più probabile causa di errore 2.La violazione rilevata ma non risultante la più probabile causa di errore 3.La violazione rilevata ma indicata come la meno probabile causa di errore 15/16

Sviluppi futuri di sviluppare un raffinamento successivo della metrica proposta p ed adottata di diminuire la granularità della tecnica arrivando fino ad avere una granularità sulle variabili. si potrebbe sviluppare un meccanismo per analizzare anche le invarianti di interazione ione. Una comunity open-source Un plug-in per gli IDE di sviluppo più utilizzati 16/16

Grazie per l attenzione