Controllo della Qualità del Software - Progetto
2009
Fase 1 – Documento di Analisi
Nell’ambito del progetto, che prevede lo studio sperimentale dei problemi di automazione dei processi di
test e analisi, questa prima fase ha come obiettivo l’identificazione delle attività di controllo della qualità
del software (attività di test e analisi) per il caso di studio in esame e la scelta degli strumenti utili per
l’automazione di tali attività.
Società Chipmunk Computer – Caso di Studio
Chipmunk computer è una società che produce e vende computer. La società è già presente sul web con
un sito di contenuti informativi e vuole aggiungere funzionalità per la vendita on-line dei suoi prodotti, per
aumentare il volume delle vendite.
Analisi Requisiti
I requisiti funzionali identificati sono
• Gestione dell’account utente: nasce per la necessità di identificare gli utenti che interagiscono con
il sistema attraverso operazioni di acquisto. Il sistema deve disporre di funzioni di accesso e
registrazione. Deve prevedere una gestione dei dati personali (nome, cognome, ragione sociale) e
dati più sensibili, come numeri di carta di credito, e inoltre dati relativi agli ordini effettuati con
indicazione dello stato dell’ ordine. Questa funzionalità prevede quindi una consistente gestione
dei dati e quindi l’interazione con uno o più database. Un aspetto importante da tenere in
considerazione è la privacy dei dati, soprattutto di quelli più sensibili.
• Gestione dell’acquisto: questa funzionalità spazia dalla selezione del prodotto fino all’acquisto
dello stesso. La scelta dei prodotti è guidata attraverso due categorie: utenti privati e aziende con
la possibilità di personalizzare modelli preconfigurati. E’ composta da altre due funzionalità:
Gestione del carrello: tiene traccia delle attività di scelta dei prodotti effettuate durante
una sessione utente che potranno poi essere concretizzate con l’acquisto.
Gestione dei pagamenti: permette l’acquisto effettivo dei prodotti scelti. E’ la funzionalità
più critica dal punto di vista della sicurezza: le transazioni devono essere eseguite su
protocolli sicuri che garantiscono un alto livello di privacy dei dati sensibili; delle
prestazioni: il numero di utenti che possono interagire con il sistema in una data frazione di
tempo, effettuando un acquisto, è un fattore critico che deve essere valutato con la
quantità di richieste che possono essere gestite e con la velocità nelle risposte.
Il sistema deve inoltre garantire l’affidabilità, che può essere valutata in termini di running time e
down time oppure con la MTBF (Mean time between failures), che valuta la lunghezza degli
intervalli di tempo durante i quali il servizio è disponibile.
1|Pagina
Controllo della Qualità del Software - Progetto
2009
• Supporto post vendita: funzionalità per offrire assistenza tecnica (driver, applicativi di utilità,
manuali) .
L’architettura del sistema sarà divisa logicamente in tre livelli: presentazione layer, business logic layer e
data layer. Si prevede una progettazione e sviluppo per componenti.
Il sistema sarà sviluppato utilizzando un linguaggio object-oriented, nel caso specifico Java.
Pianificazione attività di test e analisi
Presentiamo le attività di controllo della qualità che saranno eseguite durante tutto il processo di sviluppo
del software. Le fasi del processo previste sono: Analisi e specifica dei requisiti, progettazione architettura,
e progettazione dettagliata, codifica, integrazione e rilascio e mantenimento.
L’attività di verifica delle specifiche può essere effettuata attraverso tecniche di analisi, ovvero ispezione
manuale e analisi automatica possono essere utilizzate nelle prime fasi del processo di sviluppo (specifica e
design) per la mancanza di artifact eseguibili. Anche il codice una volta prodotto può essere sottoposto ad
analisi statica.
Altra attività prevista è la generazione e gestione dei casi di test per i diversi tipi di test identificati. Per la
generazione dei casi di test funzionali può essere utilizzato un approccio combinatorio come il category
partition oppure una generazione automatica direttamente dai requisiti.
L’attività di esecuzione dei casi di test e validazione dei risultati prevede l’esecuzione di :
1. Test Strutturali : per 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.
2. Test Funzionali: la natura dell’applicazione impone di effettuare test funzionali web-based per
valutare le funzionalità identificate in base ai requisiti specificati. Un tipo di test da utilizzare
potrebbe essere quello di capture and replay.
3. Test di Carico: per valutare l’aspetto critico delle prestazioni del sistema, soprattutto nella
gestione dei pagamenti.
4. Test di Sicurezza: per valutare un aspetto fondamentale dell’intera funzionalità di acquisto, ovvero
la sicurezza.
2|Pagina
Controllo della Qualità del Software - Progetto
2009
Strumenti per l’automazione delle attività di test e analisi
La selezione di strumenti per l’automazione delle attività di controllo della qualità del software è effettuata
da un insieme di tool open source presenti sul sito opensourcetesting.org. Non tutte le attività
precedentemente identificate sono coperte da tool di automazione. Presentiamo una selezione dei tool
potenzialmente utili per le diverse attività:
1. Analisi
•
FindBugs: permette l’analisi statica di codice sorgente Java per la ricerca di bug.
2. Generazione e gestione dei casi di test: gli strumenti per l’automazione di questa attività fanno
parte della categoria Test Management Tools . I tool candidati per il supporto sono:
•
Data Generator: è uno script scritto in Javascript, Php e MySql che permette di generare
velocemente grandi quantità di dati personalizzati in diversi formati, utili per il testing o il
popolamento di database.
•
TestiTool: è un applicazione web-based per la pianificazione dell’attività di testing. Permette di
creare test plan e di popolarli con test case. I test case possono essere mappati ai requisiti
funzionali e sono descritti in modo approfondito con informazioni relative alla sua esecuzione,
al suo esito (se è passato o fallito). La gestione dei test case all’interno del proprio test plan è
completa con la possibilità di aggiungere, rimuovere o modificare i test case. Infine genera
report per i test plan. Richiede come requisiti di sistema la presenza di Apache, Php e MySql.
•
TestLink: è simile al precedente, è un applicazione di test management web-based che
permette di creare, gestire, eseguire e tracciare i test case organizzandoli all’interno di test
plan. Rispetto a Testitool ha un’interfaccia più pulita divisa in sezioni: test plan management
che permette di creare test plan, assegnare ruoli e milestone, test plan content per la gestione
dei test case all’interno del test plan, test execution, requirements che permette di specificare
requisiti e associarli ai test case e infine una funzione di ricerca dei test case tramite diverse
informazioni. Richiede come requisiti di sistema la presenza di Apache, Php e MySql.
•
RTH: è un tool web-based progettato per gestire requisiti, test, risultati di test e difetti. Rth
migliora la visibilità del processo di testing attraverso un repository comune per tutti gli
elementi di test: requisiti, test case, test plan e test result. Permette di descrivere, relazionare e
tenere sotto controllo delle versioni i requisiti, collegare i test con i requisiti, porre sotto
controllo delle versioni gli artifact del testing, tracciare bugs e infine creare report.
•
Arbiter: permette di analizzare i documenti di specifica requisiti e estrarre casi di test.
•
Concordion: permette di trasformare delle specifiche scritte in lingua inglese in casi di test.
3|Pagina
Controllo della Qualità del Software - Progetto
2009
3. Esecuzione dei casi di test e validazione dei risultati
•
Test Strutturale, strumenti nella categoria Unit Testing Tools
a. JUnit: JUnit è un framework per il test d'unita per il linguaggio Java. Rappresenta il più
utilizzato framework per la gestione dei test di unità. Molti degli altri tool si
basano/necessitano di esso. Rapprensenta quindi una scelta quasi obbligata come tool
dedicato ai test d'unità.
b. Cactus: Jakarta Cactus è un semplice framework per il test d'unità specializzato per il
codice java lato server (Servlets, EJBs, Tag Libs, Filters, ...). Il suo obiettivo è di
minimizzare il costo di scrittura di test per il codice lato server. E' un estensione di
JUnit. Un tool simile potrebbe essere Ejb3Unit, che si focalizza però solo sugli
Enterprise Java Beans mentre Cactus ha un dominio più ampio.
c. jMock: jMock è una libreria per testare codice java utilizzando gli oggetti "Mock". Un
oggetto Mock non è altro che un oggetto che sostituisce uno realmente esistente in
modo da emularne il comportamento. Utilizzando un oggetto Mock al posto di quello
standard possiamo assicurarci che tutto avvenga per il verso giusto senza dover
modificare il test o la funzionalità testata che utilizza indirettamente il nostro oggetto.
jMock rende la gestione e la definizione di questi oggetti semplice e veloce.
•
Test Funzionale, strumenti nella categoria Functional Testing:
a. TestGen4Web: tool capture and replay che registra le azioni dell’utente in Firefox,
salvandole in formato XML. Possono poi essere trasformate in script di test per diverse
tecnologie come HttpUnit e Selenium.
b. I seguenti, sono tool di browser-based testing di web applications che registrano le
interazioni dell’utente con un browser e permettono di creare casi di test permettendo
la riusabilità degli stessi (test capture and replay)
i. Canoo WebTest
ii. Adopora
iii. Selenium
iv. Sahi
•
Test di Carico, strumenti nella categoria Performance Tool
a. Apache JMeter: è un’applicazione java progettata per caricare i test funzionali e
misurarne le performance Può essere usata per simulare sovraccarichi del server o di
rete, genera grafici e statistiche ed è stata originariamente pensata apposta per le web
application.
4|Pagina
Controllo della Qualità del Software - Progetto
2009
b. OpenSTA: è un software di testing basato su CORBA , è usato per i test di carico in
quanto può simulare l’attività di migliaia di utenze o di server, generando grafi,
statistiche e metriche per misurarne le performance. E’ ideale per testare applicazioni
web.
•
Test Sicurezza, strumenti nella categoria Security
a. NITKO: Nikto è un web server scanner Open Source (Licenza GPL) scritto in PERL che
effettua un completo test nei riguardi di web servers per multipli item, molti dei quali
incentrati sulla sicurezza del web server. Gli items ed i plugins sono aggiornati
frequentemente. Il progetto risulta essere ancora supportato dagli sviluppatori: l'ultima
versione risale a settembre 2008, e sono presenti aggiornamenti vari risalenti a
Gennaio 2009. Considerata la natura web-based del sistema , si suppone la presenza di
un web server, e questo tool di scansione potrebbe risultate utile per verificare i
requisiti non funzionali riguardanti in particolare la sicurezza ma anche l'affidabiltà del
web server coinvolto.
Altri tool interessanti sono:
•
Cobertura (o anche Jester): Cobertura è un tool scritto in Java che calcola la percentuale di
codice effettivamente verificata dai test. Può rappresentare un utile supporto per
l'esecuzione dei test, in quanto può indicare se il sistema è stato testato in maniera
esaustiva.
•
BugZilla: è una applicazione software creata per aiutare i programmatori a tenere traccia
degli errori presenti nei programmi da loro creati al fine di eliminarli e di aumentare la
qualità del prodotto.
5|Pagina
Controllo della Qualità del Software - Progetto
2009
Fase 2 – Analisi Strumenti
Nell’ambito del progetto, che prevede lo studio sperimentale dei problemi di automazione dei processi di
test e analisi, questa seconda fase ha come obiettivo l’analisi degli strumenti per il supporto all’attività di
test assegnata e lo studio approfondito di uno strumento, con lo scopo di acquisire padronanza nell’utilizzo
di tale strumento.
Descrizione Classe di Strumenti
L’attività di test individuata e da noi trattata è relativa al test funzionale per applicazioni web. Il test
funzionale, detto anche black-box testing è utilizzato per derivare test cases dalle specifiche funzionali. Nel
nostro caso, vogliamo studiare un insieme di strumenti che permettano di effettuare test funzionale di
applicazioni di tipo web. La caratteristica comune di questi strumenti è l’esecuzione dei test con l’approccio
capture and replay. La fase di capture cattura l’interazione con le pagine web che compongono
l’applicazione,attraverso dei moduli software appositi, che siano basati su proxy-server o stand-alone, che
sono in ascolto e registrano tutte le interazioni che un utente ha con una pagina o più pagine attraverso gli
elementi che compongono la pagina stessa, link, bottoni, aree di testo,ecc. Le informazioni raccolte durante
la fase di capture, compongono uno script scritto in un linguaggio che dipende dal tool che rappresenta il
test case desiderato, e alcuni strumenti permettono anche la conversione di questi test case in altri
linguaggi per un possibile riutilizzo con altri framework di test funzionale. Più test case possono essere
organizzati in test suite. La fase di replay prevede l’esecuzione del test case creato oppure dell’intero test
suite, con la possibilità di variare i dati del test modificando i valori negli script, e alcuni tool forniscono un
risultato esplicito come il numero di test passati o falliti, altri generano un report dell’esecuzione più
elaborato. La natura web-based del progetto Chipmunk Computer richiede questo tipo di test.
Analisi Comparativa Strumenti
Individuata la classe di strumenti, abbiamo cercato sulla nostra fonte web opensourcetestingtool.org, un
insieme di strumenti per l’attività di test funzionale individuata. Da una attenta analisi delle informazioni
disponibili, abbiamo selezionati tre tool interessanti: Apodora, Sahi e Selenium. La nostra analisi
comparativa si basa su diversi criteri: disponibilità di documentazione e il supporto al software, gli ambienti
operativi supportati, il grado di maturità della versione rilasciata (versione stabile o versione beta), il
processo di installazione (dimensione file, software aggiuntivi richiesti) e infine, i criteri più importanti, le
funzionalità offerte e il grado di automazione per questo tipo di test funzionale (interventi manuali,
conoscenza e difficoltà del linguaggio per gli script).
Apodora
Apodora prodotto da ACULIS, un’azienda IT statunitense, è un open source framework per il test funzionale
di applicazioni web scritto in C#. E’ basato su IronPython , una versione semplificata di python destinata al
framework .Net e Mono.
6|Pagina
Controllo della Qualità del Software - Progetto
2009
1. Documentazione e Supporto: il software è ancora in fase di sviluppo, ma ha già un sito
appositamente dedicato con contenuti informativi sulle caratteristiche dello strumento e sul
progetto open source in generale. Il sito ha due sezioni relative al supporto ma si limita a elencare
indirizzi e-mail e numeri telefonici per richiederlo. L’unica forma di documentazione presente sul
web è un tutorial video, è possibile però scaricare da sourceforge.net, dove sono ospitati i file exe
per l’installazione, un archivio contenente una guida html sui moduli software che compongono il
tool , ma questa guida non è esaustiva e completa (alcuni link non sono funzionanti). Altra forma di
documentazione è il menu help del software che è molto dettagliato e relativo ai comandi python
con cui scrivere gli script. La documentazione è molto scarsa per la parte dell’installazione, che
come vedremo, richiedendo software aggiuntivo non è immediata.
2. Ambienti Operativi Supportati: non essendo un estensione di alcun browser o plugin di nessun IDE,
apodora è un applicazione stand alone compatibile con tutti i browser. La versione attuale, però è
disponibile solo per piattaforme windows.
3. Grado Maturità Versione: la versione attuale è la 1.0.1.38 del 28/09/2007 ed è una versione stabile.
4. Processo Installazione: il file scaricabile è un .exe di 78.9 MB. Nella prima fase dell’installazione
viene richiesto Microsoft SQL Server, utilizzato per ospitare il database di back-end utilizzato da
apodora, se SQL Server non è presente viene installato e creato il database oppure se già presente
viene creato solo il database. Inoltre viene anche richiesta l’installazione di python. Nella
documentazione presente questi importanti requisiti software non vengono citati.
5. Funzionalità: il tool ha un interfaccia molto chiara dalla quale è possibile attivare i seguenti moduli:
Object Spy: permette di ottenere informazioni sugli elementi html delle pagine web per
l’utilizzo di queste negli script.
Manteiner: utilizzato per accedere al database Apodora, il quale memorizza oggetti che
corrispondono a elementi html o pagine web, che vengono univocamente identificati e ai quali
è possibile settare molte proprietà. Se un oggetto cambia nella pagina web, questi cambiamenti
possono essere riportati sull’oggetto nel database e conseguentemente anche nello script che
utilizza quell’oggetto. Inoltre se un oggetto è presente su più pagine web, esso può essere
rappresentato una sola volta nel database e condiviso da tutte.
Controller: usato per creare ed eseguire gli script (test case), scritti in linguaggio IronPython.
Nello script vengono utilizzati gli oggetti del database.
Report Viewer: usato per la gestione dei log degli script in cui è descritto dettagliatamente cosa
è successo durante l’esecuzione dello script. Questi log rappresentano il risultato
dell’esecuzione del test, ma le informazioni contenute sono incomplete e forniscono dati
espliciti sull’ esito del test.
Batch Manager: usato per creare gruppi di script (test suite) che possono essere eseguiti in
sequenza.
7|Pagina
Controllo della Qualità del Software - Progetto
2009
Un problema riscontrato durante l’utilizzo di apodora è relativo alla configurazione del database durante
l’installazione, ovvero se già presente SQL Server, la creazione del database e dell’utente database durante
l’installazione provocano un eccezione di sicurezza all’apertura dell’object spy.
6. Grado di Automazione: Apodora supporta molto bene l’utente nei passi che vanno dalla creazione
dei test case, fino all’esecuzione e alla visualizzazione dei risultati, attraverso un interfaccia chiara e
pulita, ma questi non esclude una conoscenza base, da parte dell’utente che utilizza il tool, del
linguaggio html ma soprattutto del linguaggio python.
Sahi
1. Documentazione e Supporto: il supporto fornito direttamente sul sito è abbastanza scarso e si
limita a delle FAQ e ad una breve guida all’installazione, mentre il forum, che sembra abbastanza
aggiornato e seguito, contiene sia tutorial che informazioni pratiche sui problemi e sull’utilizzo del
tool.
2. Ambienti Operativi Supportati : è indipendente dal sistema operativo, basta avere Java 1.4 o
superiore installato ed un qualsiasi browser moderno che supporti javascript.
3. Grado Maturità Versione : versione stabile 2.0
4. Processo Installazione : il tool non necessita di installazione, basta lanciare l’eseguibile e settare
localhost sulla porta 9999 come proxy nel proprio browser di navigazione.
5. Funzionalità: il tool si interpone tra il browser e la web application registrando e filtrando tutti i
dati che vengono scambiati. Il tool offre la una funzione di registrazione delle operazioni effettuate
a sul browser e di play back delle stesse. Queste registrazioni vengono usate per creare i casi di
test, in quanto sono facilmente modificabili e scritte in un loro metalinguaggio testuale. Gli script
così creati possono essere lanciati in batch mode e danno come risultato dei report html con log
degli errori. Il tool prevede la possibilità di creare delle estensioni in javascript per le applicazione
web altamente dinamiche; offre inoltre un eccellente supporto, oltre che per l’http, anche per
l’https ed il linguaggio Ajax.
6. Grado di Automazione: Non richiede una particolare conoscenza di alcun linguaggio in quanto gli
script vengono scritti in un metalinguaggio testuale, solo le eventuali estensioni sarebbero da
scrivere in javascript.
Selenium Suite
Motivazioni
Le motivazioni della scelta di Selenium IDE sono derivate dal confronto dei tre tool in base ai criteri
identificati. Selenium può essere eseguito su tutti i sistemi operativi e grazie a Selenium RC supporta i
principali browser. La documentazione è più completa rispetto agli altri tool e anche il supporto più
8|Pagina
Controllo della Qualità del Software - Progetto
2009
presente. L’installazione è immediata e senza software aggiuntivi, ha un buon grado di automazione,
ovvero gli script sono generati in modo automatico, senza intervento manuale e nel caso di modifica dello
script bisogna avere qualche conoscenza sulle Selenium API, che sono ben documentate. Inoltre permette
la conversione dei test case in altri linguaggi come Java, utilizzato nello sviluppo del progetto ChipMunk
Computer, per il riuso con altri framework. Ha inoltre un report chiaro e completo.
Descrizione Selenium Tools
Selenium è una suite di tool per l’automazione del test di applicazioni web. E’ distribuito con la Licenza
Apache 2.0, facendone di fatto un prodotto opensource. I tool della suite sono i seguenti:
•
•
•
•
Selenium IDE: E’ un ambiente di sviluppo integrato per l’esecuzione dei test sulle applicazioni web.
E’ implementato come estensione di Mozilla Firefox (versione minima supportata 2) e permette di
registrare, gestire, editare e debuggare i test. Selenium IDE include il Selenium Core , permettendo
una facile e veloce registrazione e “play back” dei test. Selenium IDE, permette la creazione dei casi
di test in modo automatico, ma anche manualmente attraverso l’editing degli script.
Selenium RC: Rappresenta un server Java a linea di comando, che permette di lanciare diversi tipi di
browser, e funge da http proxy per le richieste web di questi browser. Utilizza Selenium Core che è
caricato automaticamente nel browser. Accetta casi di test scritti in diversi tipi di linguaggi.
Selenium Core: è un framework DHTML che effettua l’esecuzione dei test;
Rappresenta il motore utilizzato da entrambi i tool IDE e RC, ma può anche essere utilizzato
singolarmente attraverso la sua interfaccia web su l’application server desiderato.
Selenium Grid: è un estensione di Selenium RC per distribuire i propri test attraverso più server,
eseguendoli in parallelo.
9|Pagina
Controllo della Qualità del Software - Progetto
2009
Overview dei tool Selenium:
Selenium IDE
1. Documentazione e Supporto: il sito presenta una sezione documentazione con esempi, tutorial e
una wiki, anche se alla data attuale risulta essere ancora incompleta. L’unica parte completa è la
documentazione generata automaticamente dal progetto, JavaDoc e altro, e sono ben descritte le
Selenium API. Inoltre per ogni tool vengono presentate una guida all’istallazione e all’uso. Il
supporto al progetto Selenium è molto attivo, la roadmap prevede nuove versioni del prodotto a
breve. Inoltre il sito propone un blog ed un forum, in cui gli sviluppatori e la community
interagiscono attivamente.
2. Ambienti Operativi Supportati: Selenium IDE supporta solo il browser Firefox dalla versione 2 in poi,
essendo un estensione di Firefox, supporta qualsiasi sistema operativo compatibile col browser
stesso. Inoltre converte i test case, composti da comandi Selenium, in codice scritto in linguaggi
come Java, C#, Perl, PHP, Python e Ruby, i test case convertiti vengono poi letti da Selenium RC che
grazie alle librerie di supporto per ciascun linguaggio li esegue su più browser. La griglia completa di
compatibilità è reperibile all’indirizzo http://seleniumhq.org/about/platforms.html.
3. Grado Maturità Versione: l’attuale versione è ancora in fase beta; nell’immediato futuro sono
previste nuove versioni, sempre beta.
4. Processo Installazione: il tool si installa come qualsiasi altra estensione di firefox; se il tool viene
scaricato con questo browser, il processo di installazione è pressoché automatico ed immediato. La
dimensione del file .xpi è di 419k. Non sono richiesti software aggiuntivi per l’utilizzo.
10 | P a g i n a
Controllo della Qualità del Software - Progetto
2009
5. Funzionalità: il tool permette la creazione di singoli test case, scritti in un linguaggio di script
Selenese che si compone di comandi (Selenium API) nel formato di HTML table, sia in modalità
manuale che in modalità automatica e permette di organizzarli in test suite.
Nella modalità automatica, il tool tiene traccia di tutte le interazioni con gli elementi della pagina
web, effettuate dall’utente durante la navigazione, rappresentandole in uno script contenenti i
comandi. Permette inoltre di codificare gli script in vari linguaggi (Html, Java, C#, Perl, Php, Python e
Ruby). L’interfaccia utente risulta essere chiara e di semplice utilizzo. E’ composta da:
• una barra dei menu con la quale si possono gestire i test case e i test suite, modificare
alcune opzioni del programma e cambiare il formato dello script in altri linguaggi.
• Sezione di controllo dell’esecuzione dei test, con la quale si può modificare la velocità,
iniziare o interrompere la registrazione e eseguire il test case o l’intero test suite.
• Sezione dello script che permette la visualizzazione sia come lista di comandi che in formato
html.
• Sezione del log dell’esecuzione in cui è possibile visualizzare le informazioni degli errori,
warning e anche la descrizione del comando, quando selezionato.
6. Grado di Automazione: il tool supporta molto bene l’utente nei passi che vanno dalla creazione dei
test case, fino all’esecuzione e alla visualizzazione dei risultati, ma comunque è richiesta una
minima conoscenza dei comandi e della loro interazione con gli elementi delle pagine web.
Problemi riscontrati nell’utilizzo
Un problema riscontrato che influenza il risultato del test è la velocità di esecuzione del replay dei test
case/suite. La velocità è controllabile dalla relativa barra ma se impostata ad un livello troppo alto (fast),
può causare problemi con il comando clickAndWait; in pratica la wait non viene eseguita e non viene atteso
il caricamento della pagina successiva, cosi se esiste un comando cm dopo clickAndWait cerca un elemento
nella stessa pagina in cui è stato lanciato clickAndWait, ma non trova l’elemento associato a cm e il tool
genera un errore di NOTFOUND.
Altro problema è la scarsa capacità di gestire il salvataggio degli script in altri linguaggi, non gestisce le
estensioni dei file (.html, .java, ecc.) e salva i test case/suite in file senza estensioni.
11 | P a g i n a
Controllo della Qualità del Software - Progetto
2009
Fase 3 – Integrazione degli Strumenti
Nell’ambito del progetto, che prevede lo studio sperimentale dei problemi di automazione dei processi di
test e analisi, questa terza fase ha come obiettivo l’integrazione dei diversi strumenti , identificati nel
secondo task, per costruire un framework a supporto delle fasi di sviluppo e controllo della qualità
dell’applicazione Chipmunk Computer.
Società Chipmunk Computer – Caso di Studio
Chipmunk computer è una società che produce e vende computer. La società è già presente sul web con
un sito di contenuti informativi e vuole aggiungere funzionalità per l’acquisto on-line dei suoi prodotti, per
aumentare il volume delle vendite.
Analisi Requisiti - riassunto
Ricordiamo i requisiti funzionali che sono stati definiti nel primo task: Gestione dell’account utente,
Gestione dell’acquisto (Gestione del carrello, Gestione dei pagamenti) e Supporto post vendita.
Inoltre, avevamo ipotizzato un’architettura del sistema divisa logicamente in tre livelli: presentazione layer,
business logic layer e data layer, , l’ utilizzo un linguaggio object-oriented nel caso specifico Java, una
progettazione e sviluppo per componenti con la tecnologia EJB e anche l’uso di servlet.
Il processo di sviluppo adottato è un processo iterativo. Nelle processo di sviluppo, le attività di qualità non
sono isolate, ma trasversali a tutto il processo.
Framework per l’automazione delle attività di qualità
Il nostro obiettivo è focalizzare l’attenzione su come le attività di controllo della qualità del software
(attività di test e analisi), 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 ogni attività indichiamo il tool utilizzato per l’automazione con annessa
motivazione. 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.
Nella figura sottostante è presentato il diagramma di Gantt che mette in evidenza le relazioni tra il processo
di qualità e il processo di sviluppo. Come si può notare le attività di qualità non sono isolate e assegnate ad
unica fase dello sviluppo (ad esempio in un ultima fase non relazionata con le altre), ma trasversali a tutto il
processo. Da notare inoltre come il processo di sviluppo influenza le attività di qualità, ad esempio non si
può iniziare il test strutturale prima della fase di codifica, ma appena questa fase è iniziata ed è disponibile
del codice da testare.
12 | P a g i n a
Controllo della Qualità del Software - Progetto
2009
Figura 1 - Attivita di qualità nel processo di sviluppo
Elenchiamo, quindi, le attività di qualità individuate e gli strumenti scelti per ognuna:
Verifica delle specifiche: per questa attività non sono stati individuati strumenti efficienti per
l’automazione, si prevede che venga eseguita tramite ispezione manuale.
Generazione Casi di Test: questa fase prevede la creazione di tutti quei test che possono essere derivati
dalle specifiche (test funzionali). Uno strumento che potrebbe risultare utile è 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 e
i casi di test generati sono in un formato leggibile che li rende una buona forma di documentazione del
sistema.
Analisi Statica: per questa attività, utile per analizzare il codice in modo esaustivo alla ricerca di problemi di
stile e bug patterns, abbiamo scelto il tool PMD perché si integra perfettamente in un IDE come Eclipse che
intendiamo utilizzare come ambiente di sviluppo, ed effettua l’analisi statica di codice scritto in Java.
Test Strutturale: prevediamo l’utilizzo di due tool, JUnit e Cactus. Il primo in quanto è il più usato e robusto
strumento per i test di unità di codice Java ed è alla base di numerosi altri strumenti. Il secondo si basa sul
primo, è 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.
Test Funzionale: il tool di test funzionale scelto è Selenium, con la motivazione che permette la conversione
dei test case in altri linguaggi come Java, per il riuso di tali casi di test con altri framework come JUnit. 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ù browser con Selenium RC.
Test di Performance: lo strumento scelto, Jmeter permette di effettuare test di performance sia su risorse
statiche che dinamiche (come Servlet), può essere usato per simulare grossi carichi di rete, e permette di
13 | P a g i n a
Controllo della Qualità del Software - Progetto
2009
valutare le prestazioni sotto diversi tipi di carico; quindi 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.
Test di Sicurezza: il tool Nikto, è un software per trovare diversi tipi di problemi all'interno di webserver, tra
cui configurazioni errate, cartelle e file nascoste che possono contenere informazioni sensibili. 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 Management e BugTracking: il Bugtracking è utile per tenere sotto controllo i bug software trovati nel
codice e per questa attività abbiamo scelto BugZilla in quanto è uno strumento maturo, robusto e
fortemente supportato dalla comunità Open Source ed adatto per progetti anche di grandi dimensioni
come il ChipMunk Computer. Il tool di test management scelto è 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, nella gestione dei test
case e test suite e nella gestione dei bug.
14 | P a g i n a