Presentazione tesi specialistica in Ingegneria Informatica - 2012 - Università di Trieste
"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
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