Un'infrastruttura di test per un sistema PACS

282 views

Published on

Presentazione tesi specialistica in Ingegneria Informatica - 2012 - Università di Trieste
"Progetto e realizzazione di un’infrastruttura di test per un sistema PACS"

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
282
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Un'infrastruttura di test per un sistema PACS

  1. 1. Progetto e realizzazione diun’infrastruttura di testper un sistema PACS
  2. 2. 1. Creazione2. Esecuzione3. Verifica4. Manutenzione•Miglioramento qualità•Aumento del valore•Errori del softwareTESTMotivazioni (1)Perché testare il software
  3. 3. •Sviluppo dell’infrastruttura di test•Verifica dei risultati ottenutiObbiettiviMigliorare il sistema dei test su O3-DPACSDefinizione requisiti•Analisi del programma•Analisi del processo di testing•Identificazione dei problemi
  4. 4. Dispositivi mediciISO 13485CEI EN 62340Processo di verifica attraverso testCriteri di validazioneIntegrazione di unità softwareTest di integrazioneReport dei risultatiRipetibilità dei testMotivazioni (2)Certificazione di qualità
  5. 5. Manuale di qualità•Bug•Miglioramento•Nuova funzionalitàNuovo caso (ISSUE)•Test dello sviluppatore•Test “integrazione” del PM•Test di rilascioN requisiti N+ testISSUE ATESTTESTTESTISSUE BTESTTESTTESTISSUE randomTESTTESTTESTobbligatoriTESTTESTTESTRilascio versione X.YAnalisiIl processo di testing preesistente
  6. 6. Versione release date # issue # test media test/issue1.5 06/09 12 0 (-)1.6 01/10 40 50 1.251.7 09/10 9 21 2.31.7.1 10/10 1 1 (-)1.7.2 10/10 1 1 (-)1.8 05/11 24 57 2.351.8.1 06/11 3 3 (1)1.9 11/11 5 26 5.2Media testper issueVersioneAnalisi storica dei test
  7. 7. ANNOPACS-CORE PACS-WEB WADO TOTALEminor major critical minor major critical minor major critical minor major critical2008 0 4 0 0 5 0 0 0 0 0 9 02009 6 5 2 5 4 2 2 2 1 13 11 52010 14 7 1 4 1 4 3 1 0 21 9 52011 6 2 0 12 0 0 2 2 0 20 4 0•Bug critici azzerati•Bug major dimezzati•Bug minor sempre elevatiAnalisi storica dei bug
  8. 8. Regression TestUnit Test•Frequenza bassa•Copertura limitata•Assenza quasi totaleMetodo •Interpretazione•Zero automazione•Ripetibilità limitataAnalisiIdentificazione dei problemi
  9. 9. Protocolli•DICOM•HL7•SOAP, HTTPTecnologie•Java Enterprise•JBoss•Librerie varie (dcm4che, hapi, apache httpClient)•Oracle/MySQL (SQL Standard, StoredProcedure)•Hibernate•EJB 3•JMX (Mbean)•Web (JSF, Richfaces, Flex)PACSdiagnosticaWorkstationrefertazioneWebclientRadiologyInformationSystemDICOM HL7DICOMAnalisiIl programma O3-DPACS“Picture Archiving and Communication System”
  10. 10. Componente % bugServizi 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 DBMSPriorità1234…Aree a maggior incidenza di bug
  11. 11. Requisiti dei testZero-configurationIndipendentiRequisiti dell’infrastrutturaUnit-test frameworkIntegration testDB testingFunctional TestingAutomazioneDatabaseFile systemEJBMBeanStored ProcedureClassi DAOHibernateDicomHL7OracleMySQLComponenti testateSoluzione creata
  12. 12. package “it.units.htl.dpacs.helpers”Anonimizer Unit testCompression Unit testDateHelper Unit testDateTimeRange Unit testFileHasher Unit testGlobalConfigurationLoader 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 testPackage “it.units.htl.dpacs.dao”StoragePerformer Integration test (FileSystem)UserManager Integration test (DBMS)Tutte le altre classi Functional test (Classi EJB)UidGenerator Unit TestDcmFramesToMF Integration test (DB, FS)DcmQuerier Integration test (Dicom, networking)KosBuilder Unit testStudiesVerifierWorker Integration test (DBMS, FileSystem, networking)XdsMessageCreator Integration test (FileSystem, DBMS)… …CRITERIUnit-TestComunica con DBMSUsa la reteCoinvolge il file systemNecessita di configurazioniVeloceRipetibileIndipendenteIntegration testDipendenze da classi “unità”Accedono al FSAccedono al DB (indirettamente)Functional testBusiness LogicComunicazione DICOMComunicazione HL7Classificazione delle componenti
  13. 13. Esempi
  14. 14. DATE TIME Expected outputFROM TO FROM TO FROM TOX Y J K x.j <= DATA <= y.kX Y J - x.j <= DATA <= YX Y - K X <= DATA <= y.kX Y - - X <= DATA <= Y- Y J K - <= DATA <= y.k- Y J - - <= DATA <= Y- Y - K - <= DATA <= y.k- Y - - - <= DATA <= YX - 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 A7/3/12 -09:30 12:30X YJ KTecniche utilizzateClassi di equivalenzaValori al confineCombinazioni7/3/12 09:30 --X.J Y.KNULLI NON NULLINULLI NON NULLIX, YJ, KDate:Ore:Esempio: DateTimeRangeAnalisi dello spazio degli inputUNIT-TEST
  15. 15. Esempio: UidGeneratorEsplorazione dei grafiT1 T2 T3 T4Stato inizale X;Y;Z X;Y;Z X;Y;Z X;Y;ZEvento getNewStudy getNewSerie getNewInstance resetEffetto 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 delletransizioniUNIT-TEST0-switch testing1-switch testingAlbero degli statiN-switch testing…
  16. 16. Classi DAO da testareClassi test (JUnit)Contesto JNDIDataSourceConnessioni MySQL/OracleConnessione DBUnitNessuna configurazioneTest di classi DAODB-TESTING
  17. 17. Stored ProcedureUn caso di testDue esecuzioni (MySQL/Oracle)Sintassi unificata (Stored Procedure)Nessuna configurazione (connessioni, hibernate)DB-TESTINGHibernate
  18. 18. Esempio: JMX MBeanUtilizzo delle classi “Mock”Per componenti con:Numerose dipendenzeElevato accoppiamentoINTEGRATION-TESTClassi “Fantoccio”Mockito + DicomMBeanMocked DicomMBean
  19. 19. Test senza JBossNessuna configurazioneEsempio:servizi Dicom/HL7FUNCTIONAL-TEST
  20. 20. Automazione
  21. 21. Script ANT per il build automaticoContinuous Integration (CI):Codice su repositoryCommit frequenteTool di build automaticoCI ServerAutomazione
  22. 22. Continuous Integration (CI):Codice su repositoryCommit frequenteTool di build automaticoCI ServerDownload del codice Compilazione Configurazione Esecuzione test ReportAutomazioneTutto automaticoContinuo
  23. 23. Risultati non misurabiliProcesso di test arricchito:• Unit test• DB Test (Dao, SP, Hibernate)• Classi con MBean• Test di servizi• Automazione dei testRisultati misurabiliTipo di test Prima DopoUnit test 2-15 minuti Immediati edautomaticiFunctional test 15-60 minutiRisultati
  24. 24. Risultati non misurabiliProcesso di test arricchito:• Unit test• DB Test (Dao, SP, Hibernate)• Classi con MBean• Test di servizi• Automazione dei testRisultati misurabiliTipo di test Prima DopoUnit test 2-15 minuti Immediati edautomaticiFunctional test 15-60 minutiRisultatiFINE

×