UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA Corso di Laurea Magistrale in Informatica Corso di Controllo della Qualità del Software Anno Accademico 2008/2009 Chipmunk Computer – Fase 1 Identificazione attività di test e analisi e strumenti per l’automazione Analisi Requisiti (1) Obiettivo: • funzionalità per la vendita on-line di computer Requisiti funzionali • Gestione Account Utente: identificare gli utenti. Funzionalità di accesso, registrazione, gestione dati personali, sensibili e degli ordini. – Interazione con database – Garantire la privacy e la sicurezza dei dati Analisi Requisiti (2) • Gestione Acquisto: si compone di – Selezione del prodotto: due categorie di prodotti, privati e azienda; personalizzazione di modelli pre-configurati – Gestione carrello: traccia attività di scelta durante una sessione utente – Gestione pagamenti: acquisto effettivo prodotti scelti • Sicurezza: transazioni gestite con adeguati aspetti di sicurezza (protocolli, ecc.) • Prestazioni: quantità di richieste che possono essere gestite e velocità nella risposta • Supporto post vendita: assistenza tecnica • Architettura logicamente divisa in 3-tier: presentazione, business logic e data layer • Progettazione e sviluppo per componenti • Linguaggio object-oriented: JAVA Attività di Test e Analisi 1. Analisi: ispezione manuale e analisi automatica in particolare nelle prime fasi (specifica e design) per la mancanza di artifact eseguibili. 2. Generazione e gestione dei casi di test automatica e manuale per i diversi tipi di test identificati 3. Esecuzione casi di test: – Test Strutturali: verificare la correttezza delle singole componenti che costituiscono le funzionalità di gestione account, di ricerca e personalizzazione del prodotto, di gestione del carrello e gestione dei pagamenti – Test Funzionali: natura dell’applicazione impone di effettuare test funzionali web-based (test capture and replay). – Test di Carico: per valutare l’aspetto critico delle prestazioni del sistema, soprattutto nella gestione dei pagamenti. – Test Sicurezza: per valutare la sicurezza dell’intera funzionalità di acquisto. Strumenti Automazione (1) Fonte: opensourcetesting.org 1. Analisi – FindBugs: analisi statica codice Java 2. Generazione e gestione dei casi di test – Generazione test case da documenti di specifica Arbiter Concordion – Generazione dati per il testing Data Generator – Gestione test plan e test case TestiTool TestLink RTH Strumenti Automazione (2) 3. Esecuzione dei casi di test a) Test Strutturale b) Test Funzionale: c) TestGen4Web Canoo WebTest Adopora Selenium Sahi Test di Carico d) Junit Cactus Jmock Apache Jmeter OpenSTA Test Sicurezza Nitko UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA Corso di Laurea Magistrale in Informatica Corso di Controllo della Qualità del Software Anno Accademico 2008/2009 Progetto – Fase 2 Analisi Strumenti Classe di Strumenti • Strumenti test funzionale di applicazioni web • Esecuzione test cases: approccio capture and replay • Fase capture – Interazione utente con elementi pagine web (button, link, ecc.) – Registrazione con moduli software proxy-server o stand alone – Creazione test case: script in linguaggio specifico del tool – Conversione script in altri linguaggi – Gestione test suite • Fase Replay – Esecuzione test cases o test suite – Report Confronto Strumenti (1) Documentazione e Supporto Ambienti Operativi Grado maturità versione Processo installazione Grado automazione Apodora Sito informativo incompleto Tutorial video Guida html incompleta Comandi IronPython No guida installazione Supporto scarso Tutti i browser Solo windows Stabile 28/09/2007 File exe 78.9 MB Microsoft SQL Server Python Html Script manuali Linguaggio Python No conversione Selenium IDE Esempi, tutorial, wiki incompleti Selenium API Guida installazione e uso Supporto attivo: blog, forum Firefox 2 in poi Tutti S.O. Beta 03/06/2008 file .xpi è di 419k Conversione (JAVA,ecc.) Script automatici Selenium API Confronto Strumenti (2) Sahi Documentazione e Supporto Ambienti Operativi Grado maturità versione Processo installazione Grado automazione FAQ Forum Guida installazione Tutti i browser Tutti S.O. Stabile 2.0 Zip 1.42 MB Java 1.4 o superiore No conversione javascript Confronto Strumenti (3) Funzionalità • Apodora – – – – – ObjectSpy : capture Manteiner: gestione db apodora Controller: creazione ed esecuzione test cases Report Viewer: gestione report Batch Manager: creazione ed esecuzione test suite • Selenium IDE – – – – Test suite / test cases manuali o completamente automatici Codifica in Html, Java, C#, Perl, Php, Python e Ruby Controllo completo esecuzione Report completo: test passati/falliti, info errori, warning, ecc. • Sahi – Scrittura script in metalinguaggio – Esecuzione test suite – Report html con log errori Selenium IDE: motivazioni • • • • Supporto tutti S.O. , e browser (Selenium RC) Documentazione buona e supporto presente Installazione immediata senza software aggiuntivi Buon grado di automazione: scrittura script in modo automatico e conoscenza solo delle Selenium API • Conversione script JAVA, linguaggio utilizzato per lo sviluppo Chipmunk Computer, per riuso con altri framework • Report chiaro e completo Selenium Suite UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA Corso di Laurea Magistrale in Informatica Corso di Controllo della Qualità del Software Anno Accademico 2008/2009 Progetto – Fase 3 Integrazione Strumenti Analisi Requisiti-riassunto • Architettura del sistema divisa logicamente in tre livelli: presentazione layer, business logic layer e data layer, • Linguaggio object-oriented: Java • Progettazione e sviluppo per componenti con la tecnologia EJB e anche l’uso di servlet secondo il modello MVC • Processo di sviluppo iterativo Goal • Focalizzare l’attenzione su come le attività di controllo della qualità del software individuate nella prima fase, si integrano nelle varie fasi del processo di sviluppo di Chipmunk computer. • L’insieme delle attività compongono il nostro piano di qualità che è trasversale al nostro piano di sviluppo. Per quasi tutte le attività indichiamo il tool utilizzato per l’automazione. • L’insieme dei tool compongono il nostro framework per il supporto dell’intero processo di qualità. Gli strumenti sono stati scelti in modo tale da creare un ambiente omogeneo e facilitarne l’integrazione tra essi Attività di qualità nel processo di sviluppo • relazione tra il processo di qualità e il processo di sviluppo • attività di qualità non sono isolate ma trasversali a tutto il processo • processo di sviluppo influenza le attività di qualità Strumenti per ogni attività (1) • Verifica delle specifiche: non sono stati individuati strumenti efficienti per l’automazione, si prevede che venga eseguita tramite ispezione manuale. • Generazione Casi di Test: – creazione di tutti quei test che possono essere derivati dalle specifiche (test funzionali). – strumento Concordion, in quanto tra quei pochi disponibili è l’unico potente e facile da usare. Inoltre si integra con JUnit, utilizzato per il test strutturale, grazie al fatto che i casi di test sono generati in Java ; offre anche una buona documentazione ed i casi di test generati sono in un formato leggibile che li rende una buona forma di documentazione del sistema. Strumenti per ogni attività (2) • Analisi Statica: – utile per analizzare il codice in modo esaustivo alla ricerca di bug patterns – tool PMD perché: • si integra perfettamente in un IDE come Eclipse che intendiamo utilizzare come ambiente di sviluppo, • effettua l’analisi statica di codice scritto in Java. • Test Strutturale: – JUnit: il più usato e robusto strumento per i test di unità di codice Java ed è alla base di numerosi altri strumenti. – Cactus: si basa su JUnit, è specializzato per il codice java lato server (Servlets, EJBs, Tag Libs, Filters, ...), ed è utile per la nostra applicazione che sarà sviluppata a componenti Java (EJB) utilizzando anche le servlet. Strumenti per ogni attività (3) • Test Funzionale: Selenium – Conversione dei test case in altri linguaggi come Java, per il riuso di tali casi di test con altri framework. – E’facile da utilizzare e installare, ha un ottima automazione nella creazione dei casi di test ed è probabile una – relazione con il tool concordion che genera i test case dalle specifiche in Java, che potrebbero poi essere eseguiti su più • Test di Performance: Jmeter – Test su risorse statiche e dinamiche (come Servlet), – si presta particolarmente bene all’utilizzo sulla nostra web application, per testare l’ambiente (web server) che ospiterà l’applicazione dopo il suo deployment. Questo tool è utile per valutare i requisiti non funzionali riguardanti le prestazioni e l’affidabilità della nostra applicazione. Strumenti per ogni attività (4) • Test di Sicurezza: Nikto, è un software per trovare diversi tipi di problemi all'interno di webserver – Considerata la natura web-based del sistema e la presenza di un web server, questo tool di scansione risulta utile per verificare i requisiti non funzionali riguardanti in particolare la sicurezza del web server coinvolto. • Test Usabilità: questa attività viene eseguita tramite l’utilizzo di beta tester Strumenti per ogni attività (5) • Test Management e BugTracking: – Bugtracking: BugZilla • strumento maturo, robusto e supportato dalla comunità ed adatto per progetti anche di grandi dimensioni come il ChipMunk Computer. – Test management: BugZillaTestopia • un estensione di BugZilla per la gestione dei Test Case che ci permette di rilevare automaticamente i bug a partire dai fallimenti dei test effettuati (link tra i bug e test). – Questi due tool utilizzati insieme formano un ambiente che supporterà il processo di qualità dalla prima fase di analisi dei requisiti fino alla manutenzione Framework Concordion Selenium JUnit Cactus Nikto PMD Eclipse JMeter BugZilla Testopia BugZilla