Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Motivazioni (1)
Perch testare il software
TEST
1. 2. 3. 4.
Obbiettivi
Migliorare il sistema dei test su O3-DPACS
Analisi del programma Analisi del processo di testing Identificazione dei problemi Definizione requisiti Sviluppo dellinfrastruttura di test Verifica dei risultati ottenuti
Motivazioni (2)
Certificazione di qualit
ISO 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 Dispositivi medici
Analisi
Il processo di testing preesistente
N requisiti N+ test Manuale di qualit
Versione
pacs-core anno
2008 minor 0 major critical minor 4 0 0
pacs-web
major critical minor 5 0 0
wado
major critical minor 0 0 0
totale
major critical 9 0
6 14 6
5 7 2
2 1 0
5 4 12
4 1 0
2 4 0
2 3 2
2 1 2
1 0 0
13 21 20
11 9 4
5 5 0
Bug critici azzerati Bug major dimezzati Bug minor sempre elevati
Analisi
Identificazione dei problemi
Frequenza Copertura Assenza quasi totale Interpretazione Zero automazione Ripetibilit limitata
Analisi
Il programma O3-DPACS
Picture Archiving and Communication System
Protocolli Tecnologie
DICOM HL7 SOAP, HTTP
diagnostica DICOM
Java Enterprise JBoss Librerie varie (dcm4che, hapi, apache httpClient) Oracle/MySQL (SQL Standard, StoredProcedure) Hibernate EJB 3 JMX (Mbean) Web (JSF, Richfaces, Flex)
PACS
DICOM Workstation refertazione Web client
10,4% 40%
Soluzione proposta
Introduzione di JUnit Creazione di unit-test Database File system EJB MBean Stored Procedure Classi DAO Hibernate Dicom HL7 Requisiti dellinfrastruttura
Unit-test framework
Integration test DB testing Functional Testing Automazione
Oracle MySQL
CRITERI
Unit-Test
Comunica con DBMS Usa la rete Coinvolge il file system Necessita di configurazioni
package it.units.htl.dpacs.valueObjects
Integration test
Dipendenze da classi unit Accedono al FS Accedono al DB (indirettamente)
Functional test
Business Logic Comunicazione DICOM Comunicazione HL7
Sviluppo
Unit-Test (DateTimeRange)
DATE FROM X X X X X X X X TIME FROM J J J J J J J J Expected output TO K K K K K K K K FROM x.j x.j X X x.j x.j X X J J <= <= <= <= <= <= <= <= <= <= <= <= <= <= <= <= DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA <= <= <= <= <= <= <= <= <= <= <= <= <= <= <= <= TO y.k Y y.k Y y.k Y y.k Y K K -
X
Data: Ora:
Da 7/3/12 09:30
A -
TO Y Y Y Y Y Y Y Y -
12:30
Unit-Test (UidGenerator)
Stato inizale T1 X;Y;Z getNewStudy X++ T2 X;Y;Z getNewSerie Y++ T3 X;Y;Z getNewInstance Z++ T4 X;Y;Z reset X = newStudyUid(); Y = newSeriesUid(); Z = 1;
Evento Effetto
Stato finale
X+1;Y;Z
X;Y+1;Z
X;Y;Z+1
X;Y;Z
Sviluppo
DB Testing - Classi DAO
Nessuna configurazione
Sviluppo
DB Testing Stored Procedure
Un caso di test
Hibernate
Due esecuzioni (MySQL/Oracle) Sintassi unificata (Stored Procedure) Nessuna configurazione (connessioni, hibernate)
Sviluppo
Test di classi che utilizzano MBean
Sviluppo
Test dei servizi Dicom/HL7
Sviluppo
Automazione
Codice su repository
Commit frequente Tool di build automatico
CI Server (Jenkins)
Sviluppo
Jenkins
Download del codice Compilazione Configurazione Esecuzione test Report
Risultati
Risultati misurabili
Tipo di test Unit test Functional test Prima 2-15 minuti 15-60 minuti Dopo
Risultati non misurabili Processo di test arricchito: unit test regression test DB Test (Dao, SP, Hibernate) MBean integration test Test di servizi Automazione dei test
Immediati ed automatici