Breve presentazione del lavoro svolto per la tesi : STRUMENTI PER LA GENERAZIONE AUTOMATICA DI TEST STRUTTURALI E FUNZIONALI, scaricabile dal sito web http://boymix81.mynickname.info
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...Francesco Komauli
L’idea del progetto di questa tesi è applicare all’addestramento di reti neurali artificiali le funzionalità di uno strumento di gestione di progetti software, in questo caso Maven, per rendere configurabili e componibili in modo dichiarativo, e possibilmente estendibili, sia l’algoritmo di addestramento che le componenti di supporto, come la persistenza della rete neurale e la gestione dei dati dell’insieme di addestramento. Tale idea è nata dall’analogia tra progetti software e addestramento di reti neurali artificiali. Prima dell’introduzione di strumenti di gestione, ciascun progetto software possedeva una propria organizzazione del processo di compilazione, test, deploy, di versionamento e di gestione delle dipendenze. Maven introduce un’interfaccia comune ed un insieme di convenzioni che, oltre a rendere portabile il progetto, ne semplifica il processo di build. Le reti neurali vengono costruite e addestrate usando strumenti di calcolo matematico o scrivendo un eseguibile che utilizzi una libreria dedicata. Il codice per l’addestramento è sviluppato per lo specifico problema, talvolta scartato una volta terminato il suo compito. Nonostante l’addestramento di reti neurali non sia deterministico come un processo di compilazione, ma adotti una serie di tecniche ed euristiche per trovare soluzioni non ottime, sono state cercate delle caratteristiche comuni ai due processi. Si vuole quindi introdurre Maven per definire un prototipo di interfaccia comune all’addestramento di reti neurali artificiali, tenendo conto delle problematiche di questo tipo di processo. Il meccanismo sviluppato per consentire configurabilità e componibilità delle componenti introduce il concetto di servizi: tipologie di oggetti a ciascuna delle quali è associata una factory col compito di configurare le istanze create. Nella configurazione da iniettare attraverso una factory sono tenuti distinti i puri dati, come parametri numerici o stringhe, e servizi collaboratori dotati di comportamento. Attraverso questa distinzione è possibile rappresentare in formato puramente testuale la gerarchia di composizione di un qualunque servizio. Le responsabilità del gestore di progetti sono importare le factory da librerie dichiarate come dipendenze, costruire i servizi in base alla struttura gerarchica specificata nel descrittore di progetto ed utilizzarli per effettuare l’addestramento.
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...Alberto Scotto
Tesi di laurea di I livello discussa all'Università degli Studi di Torino, Facoltà di Scienze MFN, Corso di Studi di Informatica. Questo lavoro nasce dalla mia collaborazione con Blue Reply, nonché dalla partnership tra Blue Reply e IBM.
Scopo della tesi è progettare una soluzione di private cloud di tipo Infrastructure as a Service usando un prodotto IBM, il Service Delivery Manager 7.2.1, a partire da una serie di requisiti.
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...Francesco Komauli
L’idea del progetto di questa tesi è applicare all’addestramento di reti neurali artificiali le funzionalità di uno strumento di gestione di progetti software, in questo caso Maven, per rendere configurabili e componibili in modo dichiarativo, e possibilmente estendibili, sia l’algoritmo di addestramento che le componenti di supporto, come la persistenza della rete neurale e la gestione dei dati dell’insieme di addestramento. Tale idea è nata dall’analogia tra progetti software e addestramento di reti neurali artificiali. Prima dell’introduzione di strumenti di gestione, ciascun progetto software possedeva una propria organizzazione del processo di compilazione, test, deploy, di versionamento e di gestione delle dipendenze. Maven introduce un’interfaccia comune ed un insieme di convenzioni che, oltre a rendere portabile il progetto, ne semplifica il processo di build. Le reti neurali vengono costruite e addestrate usando strumenti di calcolo matematico o scrivendo un eseguibile che utilizzi una libreria dedicata. Il codice per l’addestramento è sviluppato per lo specifico problema, talvolta scartato una volta terminato il suo compito. Nonostante l’addestramento di reti neurali non sia deterministico come un processo di compilazione, ma adotti una serie di tecniche ed euristiche per trovare soluzioni non ottime, sono state cercate delle caratteristiche comuni ai due processi. Si vuole quindi introdurre Maven per definire un prototipo di interfaccia comune all’addestramento di reti neurali artificiali, tenendo conto delle problematiche di questo tipo di processo. Il meccanismo sviluppato per consentire configurabilità e componibilità delle componenti introduce il concetto di servizi: tipologie di oggetti a ciascuna delle quali è associata una factory col compito di configurare le istanze create. Nella configurazione da iniettare attraverso una factory sono tenuti distinti i puri dati, come parametri numerici o stringhe, e servizi collaboratori dotati di comportamento. Attraverso questa distinzione è possibile rappresentare in formato puramente testuale la gerarchia di composizione di un qualunque servizio. Le responsabilità del gestore di progetti sono importare le factory da librerie dichiarate come dipendenze, costruire i servizi in base alla struttura gerarchica specificata nel descrittore di progetto ed utilizzarli per effettuare l’addestramento.
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...Alberto Scotto
Tesi di laurea di I livello discussa all'Università degli Studi di Torino, Facoltà di Scienze MFN, Corso di Studi di Informatica. Questo lavoro nasce dalla mia collaborazione con Blue Reply, nonché dalla partnership tra Blue Reply e IBM.
Scopo della tesi è progettare una soluzione di private cloud di tipo Infrastructure as a Service usando un prodotto IBM, il Service Delivery Manager 7.2.1, a partire da una serie di requisiti.
Kanoah Tests is a test management tool that integrates seamlessly with JIRA. It allows coordinating all test management activities like planning, authoring, execution, and reporting from within JIRA. Users praise Kanoah Tests for its simple and elegant solution compared to other plugins, and for the responsive customer service. The tool provides features like test case authoring at the story level, test planning and execution, test importing, and a REST API for test automation. It offers benefits like centralized test management, end-to-end traceability, and real-time insights into testing progress through built-in reports.
Unit Test: Un tipo di test del software in cui vengono testate singole di un software. Lo scopo è convalidare che ogni unità del codice software funzioni come previsto. Lo Unit Testing viene eseguito durante lo sviluppo (fase di codifica) di un'applicazione da parte degli sviluppatori. Essi isolano una sezione di codice e ne verificano la correttezza.
Unità: può essere una singola funzione, metodo, procedura, modulo o oggetto. La definizione di unità è decisa team by team
Kanoah Tests is a test management tool that integrates seamlessly with JIRA. It allows coordinating all test management activities like planning, authoring, execution, and reporting from within JIRA. Users praise Kanoah Tests for its simple and elegant solution compared to other plugins, and for the responsive customer service. The tool provides features like test case authoring at the story level, test planning and execution, test importing, and a REST API for test automation. It offers benefits like centralized test management, end-to-end traceability, and real-time insights into testing progress through built-in reports.
Unit Test: Un tipo di test del software in cui vengono testate singole di un software. Lo scopo è convalidare che ogni unità del codice software funzioni come previsto. Lo Unit Testing viene eseguito durante lo sviluppo (fase di codifica) di un'applicazione da parte degli sviluppatori. Essi isolano una sezione di codice e ne verificano la correttezza.
Unità: può essere una singola funzione, metodo, procedura, modulo o oggetto. La definizione di unità è decisa team by team
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
Continuous Integration con SQL Server. Come automatizzare i processi di build e di test su database SQL Server. Come includere SQL Server nei processi di Application Lifecycle Management (Database Lifecycle Management).
La continuous integration, ovvero un insieme di pratiche di sviluppo atte a rilasciare frequentemente le modifiche al nostro codice, può essere applicata anche a SQL Server. In questa sessione andremo a descrivere come mettere sotto controllo del codice sorgente i nostri database in un'ottica di teamwork e, successivamente, a capire come automatizzare il processo di test unitario al fine di prevenire regressioni e correggere quanto prima bug.
Presentazione tesi specialistica in Ingegneria Informatica - 2012 - Università di Trieste
"Progetto e realizzazione di un’infrastruttura di test per un sistema PACS"
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
Build automatizzate, esecuzione di unit test, creazione di un pacchetto nuget, ecco cosa serve per essere pronti con SQL Server e la continuous integration
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...Idriss Riouak
Uno studio sull'efficacia del checker Clang Tidy in particolare sull'efficacia del modulo "modernize". Il test è stato applicato sulla Parma Polyhedra Library.
Similar to Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIONE AUTOMATICA DI TEST STRUTTURALI E FUNZIONALI (20)
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIONE AUTOMATICA DI TEST STRUTTURALI E FUNZIONALI
1. UNIVERSITÀ DEGLI STUDI DI GENOVA
SCUOLA POLITECNICA
CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA
STRUMENTI PER LA GENERAZIONE
AUTOMATICA DI TEST STRUTTURALI E
FUNZIONALI
TOOLS FOR TEST GENERATION IN
BLACK-BOX AND WHITE-BOX TESTING
Relatore Accademico Prof. Enrico Giunchiglia
Correlatore Prof. Massimo Narizzano
Correlatore Dott. Emanuele Di Rosa (ETT s.r.l.)
Candidato Maurizio Pianfetti
2. Definizioni
Test : Sistema(dati di input) dati di output
Testing: è il processo di valutazione di un
sistema attraverso strumenti manuali o
automatici col fine di determinare se il
sistema soddisfa i requisiti specificati oppure
se il suo comportamento verificato differisce
da quello atteso
Esito Test: dati di output uguali ai dati attesi ?
3. Motivazioni
Processo di software testing è essenziale
per ridurre i malfunzionamenti
Più tempo per la preparazione dei processi di testing
Meno tempo e costi per il mantenimento e correzione dei difetti
Ma costoso dal 40% al 60% del tempo di sviluppo
Automazione della generazione ed esecuzione dei test per la
riduzione dei tempi e costi del testing
4. Test Funzionali (Black-Box) vs Strutturali (White-Box)
Test funzionale Test strutturale White Box Testing
Black Box Testing
Partition Testing (Input
Domain Model)
Basandosi
sull'interfaccia
Basandosi sulle
funzionalità
Error based Testing
Basandosi sugli errori
Sono complementari ed ognuno può rilevare
malfunzionamenti non rivelabili con l’altro.
5. Obiettivi
Automazione della generazione dei dati di input con l’utilizzo di tools
insieme di dati che rispettano una determinata specifica per il Black-
Box Testing (funzionale)
– sviluppo di un’applicazione per la generazione ed esecuzione
automatica di test per applicazioni web
– utilizzo su due casi di studio (Siti web COL e «ClicLavoro
Campania» sviluppati da ETT s.r.l.)
insieme di test che raggiungono il 100% della copertura del codice per
il White-Box Testing (strutturale)
– confronto di «Microsoft Pex» con altri strumenti di ricerca, in
termini di tempi di calcolo, percentuale di copertura, numero di test
generati
– applicazione di «Microsoft Pex» su due progetti di sviluppo di ETT
s.r.l.
6. Librerie e strumenti per lo sviluppo (Black-Box Testing)
Ricerca di strumenti commerciali ed opensource:
Selenium automates browsers: Framework per più
linguaggi OO per quasi tutti i browser
SoapUI: Applicazione standalone orientata ai WS
Sashi: Applicazione java con creazione di test con un file di
configurazione
Nessuno di essi effettua una generazione automatica di dati di input,
quindi si è deciso di sviluppare una nuova applicazione.
WatiN: «Web Application Testing In .Net»
Libreria per sviluppatori C# (.NET 2.0 – 4.0) per la
navigazione e manipolazione delle pagine web
Compatibile con tutte le versioni di IE fino alla 9 FF 3.6
Semplice e veloce da imparare
7. Strumento «Automatic Tester of Web Pages 1.0»
1. Lettura file di configurazione (eventualmente anche il
file dei dati)
2. Generazione test FORM / LINK
a) Se FORM, generazione dei dati di input
CASUALE_DEFAULT: valore campo HTML
CASUALE_DOMINI: sapendo il dominio di valori,
casuali appartenenti al dominio
CASUALE_FUORIDOMINIO: sapendo il dominio dei
valori, valori casuali, sicuramente non appartenenti al
dominio
CASUALE: tutti i casi
FUNZIONALE: ad ogni campo si specifica il valore da
utilizzare per poter essere certi del risultato atteso e
poterlo verificare
b) Combinazione dei dati per la creazione dei test
3. Esecuzione test
4. Salvataggio report risultati e file dei dati
8. Siti web testati con «Automatic Tester of Web Pages 1.0»
Testing del sito COL, esempio
di generazione casuale dei dati
di input
Testing del sito
«ClicLavoro Campania»,
esempio di utilizzo dei dati
di input su un processo di
compilazione multiform
9. Microsoft Pex (White-Box)
Program EXploration
Attraverso Dynamic Simbolic Execution, strategia Fitnex e
«Microsoft Z3» SMT Solver, modella il grafo dei controlli
return target != (ClassMethod)null && i < 0 && j != 123;
Genera le Parameterized Unit Test per raggiungere la
massima copertura del codice testato / metodi testati
Utilizza l’instrumentation inserendosi nel ".NET profiling
API", prima che il linguaggio sia compilato in codice
macchina, per poter riscrive le istruzioni per affrontare il
problema dell'isolamento tramite Microsoft Moles,
permettendo di “Molare” o “creare Stub” di metodi esterni
richiamati, per rendere indipendente il codice testato
10. Microsoft Pex (DSE) vs SAT&Pref (CBMC) vs Tools
Microsoft Pex è stato confrontato con le funzionalità di strumenti
commerciali (JetBrains dotCover, NConer Desktop, C# Test
Coverage Tool) e con algoritmi di strumenti sperimentali
(TeGeVe, noPref, SAT&PREF e SAGE)
11. Microsoft Pex su Benchmarks Hand-Crafted (White-Box)
Strategie di Pex Copertura Risultati delle esecuzioni di Pex effettuate
Pex-Default2 99,19% per l’analisi di 2200 metodi, confrontati
Pex-Default-VS2010 99,05% con quelli dei singoli strumenti
Pex-Default5-VS2010 98,79%
sperimentali in termini di n. di test generati,
Pex-Default4_MaxSolver10 97,88%
durata dell’esecuzione (sec) e copertura del
Pex-FrontierBreadthFirst 93,18%
Pex-Default3 84,95%
codice raggiunta
Pex-FrontierRandom 84,36% Metodo Tests Durata Copertura
Pex-FrontierDepthFirst 60,10% synth_b2_s5_k1_rnd0(TestCFiles, Int32, Int32, Int32, Int32) 9 9,82 100,00%
synth_b2_s5_k1_rnd1(TestCFiles, Int32, Int32, Int32, Int32) 9 11,08 100,00%
Pex-FrontierIterativeDeepening 32,07%
synth_b2_s5_k1_rnd10(TestCFiles, Int32, Int32, Int32, Int32) 9 10,70 100,00%
synth_b2_s5_k1_rnd2(TestCFiles, Int32, Int32, Int32, Int32) 9 9,95 100,00%
N. Test Totali
Strumento synth_b2_s5_k1_rnd3(TestCFiles, Int32, Int32, Int32, Int32) 10 11,14 100,00%
Generati
synth_b2_s5_k1_rnd4(TestCFiles, Int32, Int32, Int32, Int32) 9 9,71 100,00%
SAT&PREF 262
synth_b2_s5_k1_rnd5(TestCFiles, Int32, Int32, Int32, Int32) 9 9,40 100,00%
TeGeVe 300 synth_b2_s5_k1_rnd6(TestCFiles, Int32, Int32, Int32, Int32) 10 11,20 100,00%
Pex-Default2 933,27 synth_b2_s5_k1_rnd7(TestCFiles, Int32, Int32, Int32, Int32) 9 11,24 100,00%
noPref 945 synth_b2_s5_k1_rnd8(TestCFiles, Int32, Int32, Int32, Int32) 10 10,14 100,00%
synth_b2_s5_k1_rnd9(TestCFiles, Int32, Int32, Int32, Int32) 8 11,17 100,00%
SAGE 2115
12. Casi reali testati con Microsoft Pex
Strumenti sperimentali solo
per C non utilizzabili in .NET,
gli altri ritentuti costosi.
Esecuzione di Pex da MS
VS2010 e da linea di comando
con applicazione di migliorie
suggerite da Pex su due
progetti reali
13. Conclusioni
WatiN si è rilevato una libreria utile ed intuitiva ma a confronto
con altre si è dimostrata la più limitata come numero di browser
supportati e meno aggiornata
«Automatic Tester of Web Pages 1.0» prototipo per migliorare le
attività di testing ed aiutare il tester nel suo lavoro
Pex ha portato migliorie nel codice analizzato nonostante ci sia
voluto diverso tempo per imparare ad usarlo, meglio di SAGE in
termine di numero di test generati ma non efficiente
Pensando ad una architettura MVC, si sono affrontate le tematiche
di come:
– Testare il motore dell'applicazione attraverso i test strutturali
isolando i dati del modello
– Effettuare test funzionali sull'interfaccia
14. UNIVERSITÀ DEGLI STUDI DI GENOVA
SCUOLA POLITECNICA
CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA
Un rigraziamento a tutti per avermi ascoltato
Maurizio Pianfetti
maurizio.pianfetti@libero.it
http://boymix81.mynickname.info
Relatore Accademico Prof. Enrico Giunchiglia
Correlatore Prof. Massimo Narizzano
Correlatore Dott. Emanuele Di Rosa (ETT s.r.l.)