- e-mail 1: marioc_91@live.it
- e-mail 2: marioc910125@gmail.com
- e-mail 3: m.capuozzo4@studenti.unisa.it
TESI: D-MASON e Testing.
Obiettivi
Sviluppare un metodo per testare la tecnologia D-MASON [3]. Sarà fornito un sistema automatico per la convalida del software, nonché un sostanziale aiuto per le operazioni di refactoring ed un buon criterio di qualità per il software sviluppato.
Descrizione
L'idea è quella di sviluppare delle test suite[1] che analizzino il comportamento delle classi fondamentali [5] del progetto D-MASON. Per far ciò utilizzerò l'approccio UnitTest[1] (implementato con JUnit[2] in java). L'ideale sarebbe scrivere per ogni classe del progetto (che non sia un'interfaccia o una classe astratta) almeno una classe di test, ma essendo un operazione molto onerosa dal punto di vista fisico, si è deciso di procedere analizzando le classi più utilizzate e quelle dalle quali derivano molte classi simili potendo quindi asserire che gli errori riscontrati in una saranno presenti anche nell'altra.
I test utilizzano Stub e Driver per la loro esecuzione, in questo modo la classe testata viene estrapolata dal suo contesto e analizzata nelle sue funzionalità tramite jUnit. Altri test più complessi vertono invece sulla verifica dei meccanismi basati sul paradigma publish/subscribe, è quindi necessario utilizzare metodi che effettuino asserzioni sull'invio, la ricezione e la coerenza dei messaggi.
Su queste strutture di base è possibile costruire unit test sempre più complessi, il sistema ideato è altamente riproducibile, offre un'ottima scalabilità e soprattutto è estremamente facile da estendere.
Di seguito ci sono 4 importanti definizioni prese da [1]:
- Un bug o fault, è un errore di design o di codifica che potrebbe causare un comportamento anomalo di una componente.
- Un erroneous state è la manifestazione di un bug durante l’esecuzione del sistema software. Questo stato è causato da uno o più bug, e può portare ad un failure.
- Un failure è un'incongruenza tra il risultato ottenuto ed il risultato atteso. Un failure è causato da uno o più erroneous state (non è detto che la presenza di un erroneous state porti necessariamente a un failure).
- Un test case ha lo scopo di provocare una o più failure tramite un insieme di input specifici e output attesi esercitati su una componente sotto test.
L'obiettivo che ci si pone durante le fasi di test è quindi quello di causare quante più failure si può, rendendo così possibile l'identificazione e conseguentemente la correzione dei bug.
Risultati della test suite:
FAILURES: [164/618]
RISCONTRI JDOC
Seminari
- 7 novembre 2014 - [S.O.S. D-MASON : una soluzione su misura per il testing.]: in questo seminario introduco degli argomenti probabilmente già conosciuti: D-MASON, UnitTest e JUnit. Parlerò poi dei diversi approcci che ho pensato di utilizzare durante questo primo mese di ricerca elencandone pregi e difetti. Infine la discussione si focalizza sull’approccio scelto, su com’è strutturato e perché credo sia la strada migliore da seguire.
- 6 Febbraio 2015 - [Test'sgo DMASON : testing di un sistema ABM distribuito]:In questo seminario parlo del mio lavoro di testing per D-MASON. Ci sarà una breve introduzione che riepilogherà gli argomenti del seminario scorso: cosa fare, perché farlo e come farlo. Descriverò il funzionamento degli stub e dei driver, mostrando anche la classe VirtualConnection progettata per testare il meccanismo di publish/subscribe del sistema. Parlerò poi di JMock, una libreria java per il test di classi che cooperano tra loro. Elencherò le modifiche apportate al codice sorgente per eseguire i test e darò alcuni consigli per migliorarne la semantica. Infine mostrerò i risultati della test suite elencando gli esiti e i riscontri maggiormente significativi.
Tesi:
Unit Testing di un sistema distribuito per la simulazione di modelli basati su agenti.
Riferimenti:
- [1] Object-Oriented Software Engineering; Bernd Bruegge & Allen H. Dutoit.
- [2] http://junit.org/
- [3] http://www.dmason.org/
- [5] Classi da testare