SlideShare a Scribd company logo
1 of 24
Progetto e realizzazione di
un’infrastruttura di test
per un sistema PACS
1. Creazione
2. Esecuzione
3. Verifica
4. Manutenzione
•Miglioramento qualità
•Aumento del valore
•Errori del software
TEST
Motivazioni (1)
Perché testare il software
•Sviluppo dell’infrastruttura di test
•Verifica dei risultati ottenuti
Obbiettivi
Migliorare il sistema dei test su O3-DPACS
Definizione requisiti
•Analisi del programma
•Analisi del processo di testing
•Identificazione dei problemi
Dispositivi mediciISO 13485
CEI EN 62340
Processo di verifica attraverso test
Criteri di validazione
Integrazione di unità software
Test di integrazione
Report dei risultati
Ripetibilità dei test
Motivazioni (2)
Certificazione di qualità
Manuale di qualità
•Bug
•Miglioramento
•Nuova funzionalità
Nuovo caso (ISSUE)
•Test dello sviluppatore
•Test “integrazione” del PM
•Test di rilascio
N requisiti N+ test
ISSUE A
TEST
TEST
TEST
ISSUE B
TEST
TEST
TEST
ISSUE random
TEST
TEST
TEST
obbligatori
TEST
TEST
TEST
Rilascio versione X.Y
Analisi
Il processo di testing preesistente
Versione release date # issue # test media test/issue
1.5 06/09 12 0 (-)
1.6 01/10 40 50 1.25
1.7 09/10 9 21 2.3
1.7.1 10/10 1 1 (-)
1.7.2 10/10 1 1 (-)
1.8 05/11 24 57 2.35
1.8.1 06/11 3 3 (1)
1.9 11/11 5 26 5.2
Media test
per issue
Versione
Analisi storica dei test
ANNO
PACS-CORE PACS-WEB WADO TOTALE
minor major critical minor major critical minor major critical minor major critical
2008 0 4 0 0 5 0 0 0 0 0 9 0
2009 6 5 2 5 4 2 2 2 1 13 11 5
2010 14 7 1 4 1 4 3 1 0 21 9 5
2011 6 2 0 12 0 0 2 2 0 20 4 0
•Bug critici azzerati
•Bug major dimezzati
•Bug minor sempre elevati
Analisi storica dei bug
Regression Test
Unit Test
•Frequenza bassa
•Copertura limitata
•Assenza quasi totale
Metodo •Interpretazione
•Zero automazione
•Ripetibilità limitata
Analisi
Identificazione dei problemi
Protocolli
•DICOM
•HL7
•SOAP, HTTP
Tecnologie
•Java Enterprise
•JBoss
•Librerie varie (dcm4che, hapi, apache httpClient)
•Oracle/MySQL (SQL Standard, StoredProcedure)
•Hibernate
•EJB 3
•JMX (Mbean)
•Web (JSF, Richfaces, Flex)
PACS
diagnostica
Workstation
refertazione
Web
client
Radiology
Information
System
DICOM HL7
DICOM
Analisi
Il programma O3-DPACS
“Picture Archiving and Communication System”
Componente % bug
Servizi DICOM 23%
Gestione del DBMS 14,5%
Servizio di Worklist 12,5%
Gestione dei servizi del PACS (ciclo di vita e configurazioni) 10,4%
Altro 40%
Tutte comunicano con il DBMS
Priorità
1
2
3
4
…
Aree a maggior incidenza di bug
Requisiti dei test
Zero-configuration
Indipendenti
Requisiti dell’infrastruttura
Unit-test framework
Integration test
DB testing
Functional Testing
Automazione
Database
File system
EJB
MBean
Stored Procedure
Classi DAO
Hibernate
Dicom
HL7
Oracle
MySQL
Componenti testate
Soluzione creata
package “it.units.htl.dpacs.helpers”
Anonimizer Unit test
Compression Unit test
DateHelper Unit test
DateTimeRange Unit test
FileHasher Unit test
GlobalConfigurationLoader Integration test (DBMS)
MailerSystem Integration test (DBMS)
PhysicalMediaTimerTask Integration test (DBMS)
package “it.units.htl.dpacs.valueObjects”
Tutte le classi (Privi di logica)
package “it.units.htl.dpacs.core”
VarLoader Unit test
Package “it.units.htl.dpacs.dao”
StoragePerformer Integration test (FileSystem)
UserManager Integration test (DBMS)
Tutte le altre classi Functional test (Classi EJB)
UidGenerator Unit Test
DcmFramesToMF Integration test (DB, FS)
DcmQuerier Integration test (Dicom, networking)
KosBuilder Unit test
StudiesVerifierWorker Integration test (DBMS, FileSystem, networking)
XdsMessageCreator Integration test (FileSystem, DBMS)
… …
CRITERI
Unit-Test
Comunica con DBMS
Usa la rete
Coinvolge il file system
Necessita di configurazioni
Veloce
Ripetibile
Indipendente
Integration test
Dipendenze da classi “unità”
Accedono al FS
Accedono al DB (indirettamente)
Functional test
Business Logic
Comunicazione DICOM
Comunicazione HL7
Classificazione delle componenti
Esempi
DATE TIME Expected output
FROM TO FROM TO FROM TO
X Y J K x.j <= DATA <= y.k
X Y J - x.j <= DATA <= Y
X Y - K X <= DATA <= y.k
X Y - - X <= DATA <= Y
- Y J K - <= DATA <= y.k
- Y J - - <= DATA <= Y
- Y - K - <= DATA <= y.k
- Y - - - <= DATA <= Y
X - J K x.j <= DATA <= -
X - J - x.j <= DATA <= -
X - - K X <= DATA <= -
X - - - X <= DATA <= -
- - J K J <= DATA <= K
- - J - J <= DATA <= -
- - - K - <= DATA <= K
- - - - - <= DATA <= -
Data:
Ora:
Da A
7/3/12 -
09:30 12:30
X Y
J K
Tecniche utilizzate
Classi di equivalenza
Valori al confine
Combinazioni
7/3/12 09:30 --
X.J Y.K
NULLI NON NULLI
NULLI NON NULLI
X, Y
J, K
Date:
Ore:
Esempio: DateTimeRange
Analisi dello spazio degli input
UNIT-TEST
Esempio: UidGenerator
Esplorazione dei grafi
T1 T2 T3 T4
Stato inizale X;Y;Z X;Y;Z X;Y;Z X;Y;Z
Evento getNewStudy getNewSerie getNewInstance reset
Effetto X++ Y++ Z++ X = newStudyUid();
Y = newSeriesUid();
Z = 1;
Stato finale X+1;Y;Z X;Y+1;Z X;Y;Z+1 X’;Y’;Z’
Tabella delle
transizioni
UNIT-TEST
0-switch testing
1-switch testing
Albero degli stati
N-switch testing
…
Classi DAO da testareClassi test (JUnit)
Contesto JNDI
DataSource
Connessioni MySQL/Oracle
Connessione DBUnit
Nessuna configurazione
Test di classi DAO
DB-TESTING
Stored Procedure
Un caso di test
Due esecuzioni (MySQL/Oracle)
Sintassi unificata (Stored Procedure)
Nessuna configurazione (connessioni, hibernate)
DB-TESTING
Hibernate
Esempio: JMX MBean
Utilizzo delle classi “Mock”
Per componenti con:
Numerose dipendenze
Elevato accoppiamento
INTEGRATION-TEST
Classi “Fantoccio”
Mockito + DicomMBean
Mocked DicomMBean
Test senza JBoss
Nessuna configurazione
Esempio:
servizi Dicom/HL7
FUNCTIONAL-TEST
Automazione
Script ANT per il build automatico
Continuous Integration (CI):
Codice su repository
Commit frequente
Tool di build automatico
CI Server
Automazione
Continuous Integration (CI):
Codice su repository
Commit frequente
Tool di build automatico
CI Server
Download del codice Compilazione Configurazione Esecuzione test Report
Automazione
Tutto automatico
Continuo
Risultati non misurabili
Processo di test arricchito:
• Unit test
• DB Test (Dao, SP, Hibernate)
• Classi con MBean
• Test di servizi
• Automazione dei test
Risultati misurabili
Tipo di test Prima Dopo
Unit test 2-15 minuti Immediati ed
automaticiFunctional test 15-60 minuti
Risultati
Risultati non misurabili
Processo di test arricchito:
• Unit test
• DB Test (Dao, SP, Hibernate)
• Classi con MBean
• Test di servizi
• Automazione dei test
Risultati misurabili
Tipo di test Prima Dopo
Unit test 2-15 minuti Immediati ed
automaticiFunctional test 15-60 minuti
Risultati
FINE

More Related Content

Similar to Un'infrastruttura di test per un sistema PACS

Android Test Driven Development
Android Test Driven DevelopmentAndroid Test Driven Development
Android Test Driven Developmentsazilla
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
 
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Boymix81
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven DevelopmentEnnio Masi
 
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...Donato Clun
 
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...Idriss Riouak
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload ProfilingGianluca Hotz
 
Perché è così difficile il deploy dei database - DevCast DevOps Serie
Perché è così difficile il deploy dei database  - DevCast DevOps SeriePerché è così difficile il deploy dei database  - DevCast DevOps Serie
Perché è così difficile il deploy dei database - DevCast DevOps SerieGiulio Vian
 
Tdd e continuous delivery sull'infrastruttura
Tdd e continuous delivery sull'infrastrutturaTdd e continuous delivery sull'infrastruttura
Tdd e continuous delivery sull'infrastrutturaCodemotion
 
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...Davide Bravin
 
TDD e Continuous Delivery sull'infrastruttura
TDD e Continuous Delivery sull'infrastrutturaTDD e Continuous Delivery sull'infrastruttura
TDD e Continuous Delivery sull'infrastrutturaFilippo Liverani
 

Similar to Un'infrastruttura di test per un sistema PACS (20)

Android Test Driven Development
Android Test Driven DevelopmentAndroid Test Driven Development
Android Test Driven Development
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven Development
 
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
 
Testing
TestingTesting
Testing
 
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
 
Perché è così difficile il deploy dei database - DevCast DevOps Serie
Perché è così difficile il deploy dei database  - DevCast DevOps SeriePerché è così difficile il deploy dei database  - DevCast DevOps Serie
Perché è così difficile il deploy dei database - DevCast DevOps Serie
 
JMeter
JMeterJMeter
JMeter
 
Unit testing 2014
Unit testing 2014Unit testing 2014
Unit testing 2014
 
Tdd e continuous delivery sull'infrastruttura
Tdd e continuous delivery sull'infrastrutturaTdd e continuous delivery sull'infrastruttura
Tdd e continuous delivery sull'infrastruttura
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
 
TDD e Continuous Delivery sull'infrastruttura
TDD e Continuous Delivery sull'infrastrutturaTDD e Continuous Delivery sull'infrastruttura
TDD e Continuous Delivery sull'infrastruttura
 

Un'infrastruttura di test per un sistema PACS

  • 1. Progetto e realizzazione di un’infrastruttura di test per un sistema PACS
  • 2. 1. Creazione 2. Esecuzione 3. Verifica 4. Manutenzione •Miglioramento qualità •Aumento del valore •Errori del software TEST Motivazioni (1) Perché testare il software
  • 3. •Sviluppo dell’infrastruttura di test •Verifica dei risultati ottenuti Obbiettivi Migliorare il sistema dei test su O3-DPACS Definizione requisiti •Analisi del programma •Analisi del processo di testing •Identificazione dei problemi
  • 4. Dispositivi mediciISO 13485 CEI EN 62340 Processo di verifica attraverso test Criteri di validazione Integrazione di unità software Test di integrazione Report dei risultati Ripetibilità dei test Motivazioni (2) Certificazione di qualità
  • 5. Manuale di qualità •Bug •Miglioramento •Nuova funzionalità Nuovo caso (ISSUE) •Test dello sviluppatore •Test “integrazione” del PM •Test di rilascio N requisiti N+ test ISSUE A TEST TEST TEST ISSUE B TEST TEST TEST ISSUE random TEST TEST TEST obbligatori TEST TEST TEST Rilascio versione X.Y Analisi Il processo di testing preesistente
  • 6. Versione release date # issue # test media test/issue 1.5 06/09 12 0 (-) 1.6 01/10 40 50 1.25 1.7 09/10 9 21 2.3 1.7.1 10/10 1 1 (-) 1.7.2 10/10 1 1 (-) 1.8 05/11 24 57 2.35 1.8.1 06/11 3 3 (1) 1.9 11/11 5 26 5.2 Media test per issue Versione Analisi storica dei test
  • 7. ANNO PACS-CORE PACS-WEB WADO TOTALE minor major critical minor major critical minor major critical minor major critical 2008 0 4 0 0 5 0 0 0 0 0 9 0 2009 6 5 2 5 4 2 2 2 1 13 11 5 2010 14 7 1 4 1 4 3 1 0 21 9 5 2011 6 2 0 12 0 0 2 2 0 20 4 0 •Bug critici azzerati •Bug major dimezzati •Bug minor sempre elevati Analisi storica dei bug
  • 8. Regression Test Unit Test •Frequenza bassa •Copertura limitata •Assenza quasi totale Metodo •Interpretazione •Zero automazione •Ripetibilità limitata Analisi Identificazione dei problemi
  • 9. Protocolli •DICOM •HL7 •SOAP, HTTP Tecnologie •Java Enterprise •JBoss •Librerie varie (dcm4che, hapi, apache httpClient) •Oracle/MySQL (SQL Standard, StoredProcedure) •Hibernate •EJB 3 •JMX (Mbean) •Web (JSF, Richfaces, Flex) PACS diagnostica Workstation refertazione Web client Radiology Information System DICOM HL7 DICOM Analisi Il programma O3-DPACS “Picture Archiving and Communication System”
  • 10. Componente % bug Servizi DICOM 23% Gestione del DBMS 14,5% Servizio di Worklist 12,5% Gestione dei servizi del PACS (ciclo di vita e configurazioni) 10,4% Altro 40% Tutte comunicano con il DBMS Priorità 1 2 3 4 … Aree a maggior incidenza di bug
  • 11. Requisiti dei test Zero-configuration Indipendenti Requisiti dell’infrastruttura Unit-test framework Integration test DB testing Functional Testing Automazione Database File system EJB MBean Stored Procedure Classi DAO Hibernate Dicom HL7 Oracle MySQL Componenti testate Soluzione creata
  • 12. package “it.units.htl.dpacs.helpers” Anonimizer Unit test Compression Unit test DateHelper Unit test DateTimeRange Unit test FileHasher Unit test GlobalConfigurationLoader Integration test (DBMS) MailerSystem Integration test (DBMS) PhysicalMediaTimerTask Integration test (DBMS) package “it.units.htl.dpacs.valueObjects” Tutte le classi (Privi di logica) package “it.units.htl.dpacs.core” VarLoader Unit test Package “it.units.htl.dpacs.dao” StoragePerformer Integration test (FileSystem) UserManager Integration test (DBMS) Tutte le altre classi Functional test (Classi EJB) UidGenerator Unit Test DcmFramesToMF Integration test (DB, FS) DcmQuerier Integration test (Dicom, networking) KosBuilder Unit test StudiesVerifierWorker Integration test (DBMS, FileSystem, networking) XdsMessageCreator Integration test (FileSystem, DBMS) … … CRITERI Unit-Test Comunica con DBMS Usa la rete Coinvolge il file system Necessita di configurazioni Veloce Ripetibile Indipendente Integration test Dipendenze da classi “unità” Accedono al FS Accedono al DB (indirettamente) Functional test Business Logic Comunicazione DICOM Comunicazione HL7 Classificazione delle componenti
  • 14. DATE TIME Expected output FROM TO FROM TO FROM TO X Y J K x.j <= DATA <= y.k X Y J - x.j <= DATA <= Y X Y - K X <= DATA <= y.k X Y - - X <= DATA <= Y - Y J K - <= DATA <= y.k - Y J - - <= DATA <= Y - Y - K - <= DATA <= y.k - Y - - - <= DATA <= Y X - J K x.j <= DATA <= - X - J - x.j <= DATA <= - X - - K X <= DATA <= - X - - - X <= DATA <= - - - J K J <= DATA <= K - - J - J <= DATA <= - - - - K - <= DATA <= K - - - - - <= DATA <= - Data: Ora: Da A 7/3/12 - 09:30 12:30 X Y J K Tecniche utilizzate Classi di equivalenza Valori al confine Combinazioni 7/3/12 09:30 -- X.J Y.K NULLI NON NULLI NULLI NON NULLI X, Y J, K Date: Ore: Esempio: DateTimeRange Analisi dello spazio degli input UNIT-TEST
  • 15. Esempio: UidGenerator Esplorazione dei grafi T1 T2 T3 T4 Stato inizale X;Y;Z X;Y;Z X;Y;Z X;Y;Z Evento getNewStudy getNewSerie getNewInstance reset Effetto X++ Y++ Z++ X = newStudyUid(); Y = newSeriesUid(); Z = 1; Stato finale X+1;Y;Z X;Y+1;Z X;Y;Z+1 X’;Y’;Z’ Tabella delle transizioni UNIT-TEST 0-switch testing 1-switch testing Albero degli stati N-switch testing …
  • 16. Classi DAO da testareClassi test (JUnit) Contesto JNDI DataSource Connessioni MySQL/Oracle Connessione DBUnit Nessuna configurazione Test di classi DAO DB-TESTING
  • 17. Stored Procedure Un caso di test Due esecuzioni (MySQL/Oracle) Sintassi unificata (Stored Procedure) Nessuna configurazione (connessioni, hibernate) DB-TESTING Hibernate
  • 18. Esempio: JMX MBean Utilizzo delle classi “Mock” Per componenti con: Numerose dipendenze Elevato accoppiamento INTEGRATION-TEST Classi “Fantoccio” Mockito + DicomMBean Mocked DicomMBean
  • 19. Test senza JBoss Nessuna configurazione Esempio: servizi Dicom/HL7 FUNCTIONAL-TEST
  • 21. Script ANT per il build automatico Continuous Integration (CI): Codice su repository Commit frequente Tool di build automatico CI Server Automazione
  • 22. Continuous Integration (CI): Codice su repository Commit frequente Tool di build automatico CI Server Download del codice Compilazione Configurazione Esecuzione test Report Automazione Tutto automatico Continuo
  • 23. Risultati non misurabili Processo di test arricchito: • Unit test • DB Test (Dao, SP, Hibernate) • Classi con MBean • Test di servizi • Automazione dei test Risultati misurabili Tipo di test Prima Dopo Unit test 2-15 minuti Immediati ed automaticiFunctional test 15-60 minuti Risultati
  • 24. Risultati non misurabili Processo di test arricchito: • Unit test • DB Test (Dao, SP, Hibernate) • Classi con MBean • Test di servizi • Automazione dei test Risultati misurabili Tipo di test Prima Dopo Unit test 2-15 minuti Immediati ed automaticiFunctional test 15-60 minuti Risultati FINE