Test di Accettazione in approcci Agili I Test di

Transcript

Test di Accettazione in approcci Agili I Test di
Test di Accettazione in approcci
Agili
Ingegneria del Software II
Prof.ssa Anna Rita Fasolino
Ing. Domenico Amalfitano
I Test di accettazione
?Servono a dimostrare la correttezza dei requisiti
funzionali di un Software o di un intero sistema
?Il cliente può accettare o meno il prodotto Software
richiesto in base a dei propri e ben precisi criteri di
accettazione.
?Sono di tipo Black - Box
Test di accettazione e Storie
Utente
?I test di accettazione (Acceptance Tests) sono delle
specifiche per descrivere il comportamento e le
funzionalità attese si un sistema.
?I test di accettazione ci dicono, data una storia utente,
come il sistema elabora gli input in alcune condizioni e
quali sono gli output di questa elaborazione.
Le Storie Utente
?I test di accettazione si basano sulle storie utente
?Le storie utente rappresentano un modo estremamente
semplice per esprimere i requisiti.
?Formati classici delle storie utente
?Who does
what and why
?As a (role) I want (functionality) so that (benefits)
Progettazione dei test
?Sulla base delle storie utente si progettano i test di
accettazione
?I test di accettazione rendono una lunga storia, breve e
concisa.
?Proprietà fondamentali dei test di accettazione
?Owned
by the customer
?Written together with the customer, developer, and tester
?About the what and not the how
?Expressed in the language of the problem domain
?Concise, precise, and unambiguous
Acceptance Test Driven
Development
?I test di accettazione usati nello sviluppo agile del
software
Pick a
Story
Implement
Functionalit
y
Write
Tests
Automat
e Tests
Story Test Driven Development
Fixture implementazione di
uno Story Test
Framework for Integrated Test
(FIT)
?Automatizza i test di accettazione
?Gli story test sono tradotti sottoforma di tabelle
(HTML, XML, Excel…)
?Supporta la collaborazione tra
?Clienti
e sviluppatori durante la fase di analisi
?Clienti e tester durante la creazione degli story test
?Sviluppatori e tester durante l’implementazione delle
fixtures
?Tester e clienti durante l’esecuzione degli story test.
Fit Tables
? Migliorano
l’espressione di quale sia il
comportamento del sistema.
? Fit utilizza le tabelle per
?Scrivere i test e riportarne i risultati
?Migliorare la comunicazione tra i vari
strakeholder di quale debba essere il
comportamento del sistema.
? Esempio
di Fit Table per il controllo
dello sconto per un dato conto da
pagare.
?Fixture: nome della test class in java o
equivalente in altri linguaggi
(calculateDiscount)
?Given column: valore di input (amount)
?Calculated column: valore calcolato,
metodo sotto test (discount())
Tables, Fixtures e System Under
Test
?Fit tables
?A
più alto livello
?Contengono i dati per
uno o più test
?Fixtures
?A
medio livello
?Una per ogni tabella
?Responsabile di
verificare che i test nelle
relative tabelle sono
stati soddisfatti dal
sistema sotto test.
? A più basso livello
FIT Process Flow
Componenti di FIT
?FitLibrary
?Disponibile
in diversi linguaggi di programmazione:
Java, C#, Python, Perl, …
?TestRunner
?Fixture
?Column
Fixture
?Action Fixture
?Row Fixture
?…
CalculateDiscount
ColumnFixtures Tables amount
0.00
?Utilizzate essenzialmente
per testare dei calcoli
ottenuti seguendo alcune
regole di business.
?Esempio – Regola di
business
discount()
0.00
100.00
0.00
999.00
0.00
1000.00
0.00
1010.00
50.50
1100.00
55.00
1200.00
60.00
2000.00
100.00
?Un
5% di sconto deve
essere applicato quando
il totale supera i 1000€
Semaforo
?Le column fixtures usano la metafora del semaforo per
indicare lo stato dei test.
?Verde –
Test passed
?Rosso –
Test not passed
?Giallo –
parte del test non è completamente
implementato, o qualcos’altro non è andato per il verso
giusto.
?Grigio –
eseguite.
parti di tabelle che non possono essere state
Column Fixtures
Tables
CalculateCredit
months reliable
balance allow
credit()
credit
linit()
14
true
true
0
true
5000.0
00.00
false
1000.0
00.00
24
false
0.00
false
0.00
Business
18
true
false
0.00
?Credit
12
true
6000.0
05500.0
true
1000.0
0
?Esempio - Regola di
is allowed, up to
an amount of $1,000, for
a customer who has
been trading with us for
more than 12 months,
has paid reliably over
that period, and has a
balance owing of less
than $6,000.
0
ActionFixtures Tables
?Una ActionFixture Table testa che una sequenza di
azioni eseguite su di un sistema abbiano gli effetti
desiderati.
?Esempio - premendo un tasto su una semplice
calcolatrice compare la cifra corrispondente sul display
della calcolatrice
?Le ActionFixtures utilizzano la metafora del device per
controllare i test
?Gli
Input possono essere inseriti in campi di testo
?I pulsanti posso essere cliccati
?I campi di Output confrontati con valori attesi
ActionFixtures Table
? Regola
di business – un utente seleziona un certo numero
di prodotti da acquistare. Si accumula il prezzo totale dei
prodotti selezionati.
? ActionFixture Table per testare l’acquisto dei prodotti
fit.ActionFixture
start
BuyActions
check
total
00.00
enter
price
12.00
press
buy
check
total
12.00
enter
price
100.00
press
buy
check
total
112.00
ActionFixture Tables
?Si basano sul modello di device.
?Non si utilizza un device reale, in particolare non si
prende in considerazione l ’interfaccia utente.
?Buone per eseguire una serie di azioni e test su un
sistema che cambia di stato.
?Nelle ActionFictures Tables si possono eseguire
quattro tipi di azioni: start, enter, press, and check
Comandi per Action Fixture
? start aClass
?Subsequent commands are directed to an instance of aClass
?This is similar to navigating to a particular GUI screen
? enter aMethod anArgument
?Invoke aMethod with anArgument
?This is similar to entering values into GUI fields
? press aMethod
?Invoke aMethod with no arguments
?This is similar to pressing a GUI button
? check aMethod aValue
?Invoke aMethod with no arguments
?Compare the returned value with aValue
?This is similar to reading values from a GUI screen
Esempio ActionFixture – Chat Room
? Regola di Business – un utente si connette ad una chat, crea una nuova
room ed entra. Un altro utente si connette ed entra nella stessa room.
Provare che sono presenti due utenti nella room.
fit.ActionFixture
start
ChatServerActions
enter
user
press
connect
enter
room
press
new room
press
enter room
enter
user
press
connect
press
enter room
check
occupant
count
anna
lotr
luke
2
RowFixtures Tables
?Utilizzate per testare che i risultati di una query o di
una ricerca eseguita sul sistema sotto test diano i
risultati attesi.
?Usate anche per verificare che gli elementi attesi di
listgroup, list, sequence, set, or bag of things sono
presenti nel sistema sotto test.
?Le righe tutte insieme forma un unico gruppo a
differenza delle righe indipendenti delle
ColumnFixtures
RowFixture Table
?Regola di business – un utente di una chat room può
richiedere una lista di tutti gli utenti nelle chat rooms.
La lista contiene il nome della chat room e il nome
degli utenti.
Non è un metodo non ci sono le ()
Esempio di test
fallito
OccupantList
user
room
anna
lotr
luke
lotr
Ambienti per FIT
?IDE per l’automazione degli story test
?FitNesse
? www.fitnesse.org
? Basato su Wiki
? Fornisce supporto per la scrittura delle FIT table e per
l’esecuzione degli story test
? È disponibile per diversi linguaggi: Java, C#, Python, C++
? Consigliato
Ambienti per FIT
?IDE per l’automazione degli story test
?WinFitRunnerLite
? http://sourceforge.net/projects/fitpro/
? Fornisce supporto per l’esecuzione degli story test scritti mediante
Microsoft Excel
? È disponibile per il linguaggio C#
?IDE per l’automazione degli story test
?StoryTestIQ (STIQ)
? Mashup di Selenium e FitNesse
? Test di applicazioni web scritte .NET, Java/J2EE, Python, PHP,
PERL
? http://storytestiq.solutionsiq.com/
Plug-in per utilizzare FIT in
Eclipse
?conFit
?FITpro
?FitRunner
?FitClipse