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