2. Introduzione
Perchè non tutti i programmatori
utilizzano i test automatici
– Mancanza di tempo
– Troppo bravo per introdurre errori
– Se cambiano i requisiti del software
devono anche cambiare i test
– Non ha mai provato test automatizzati
– Scarsa cultura aziendale sui vantaggi del
testing automatizzato
3. Testing manuale Vs testing
automatico
Test manuali
– Lunghi da eseguire
– Facile inserire errori
– Difficilmente ripetibili
– Non si riesce a tenere traccia dei test
fatti
– Ogni programmatore segue una pro-
pria “politica”
4. Testing manuale Vs testing
automatico
Test automatici
–Aumentano la produttività
–Favorisco il refactoring ed il merging
–Danno garanzie di qualità
–Con strumenti di code coverage di
supporto al testing è possibile stimare il
grado di robustezza dell'applicazione
testata
5. Tipi di test automatico
Testing funzionale
●
– Verifica le funzionalità del software
– Validazione delle specifiche
– Controlla che il software esegua quanto è stato
richiesto in fase di progettazione
Regression Test
●
– Sono i test che verificano il corretto funzionamen-
to del programma dopo aver apportato apportato
nuove modifiche (Es. Cambio API, Database,etc.)
Testing prestazione
●
– Misura le prestazioni del software
9. Esempio selenium
import com.thoughtworks.selenium.*;
●
public class AndTest extends TestCase {
●
private Selenium sel;
●
public void setUp() {
●
sel = new DefaultSelenium(quot;localhostquot;,
●
4444, quot;*firefoxquot;, quot;http://www.google.comquot;);
●
sel.start;
}
●
●
public void testGoogle() {
●
sel.open(quot;http://www.google.com/webhpquot;);
●
sel.type(quot;qquot;, quot;hello worldquot;);
●
sel.click(quot;btnGquot;);
●
sel.waitForPageToLoad(quot;5000quot;);
●
assertEquals(quot;hello world - Cerca con Googlequot;,
●
sel.getTitle());
}
●
●
public void tearDown() {
●
sel.stop();
●
}
●
}
●
10. Organizzazione dei test
Sezione di inizializzazione del test
●
– Creazione delle connessioni
– Creazione del database
– Creazioni file
– Importante fare in modo che il test parta sempre
da uno stato not.
Test vero e proprio
●
Sezione di chiusura del test
●
– Chiusura delle connessioni
– Cancellazione del database e dei file
11. Organizzazione dei test
MockObject
●
Per testare una singola classe è necessario rendere
–
tale classe indipendente dalle altri classi. La classe va
testata “da sola”. Un mockObject è appunto un
oggetto che rispetta la stessa interfaccia dell'oggetto
che “sostituisce” e permette di testare una classe in
isolamento.
Grazie ai mockObject non è possibile solamente
–
testare l'output di un metodo ma anche l'interazione
delle classi con altre classi.
Esistono dei framework per creare mockObject.
–
14. Problematiche
Testare un applicazione web può rivelarsi un
●
impresa ardua :
Incompatibilità dei browser
–
Web 2.0
–
Creare ambiente di test spesso è oneroso in termini
●
di tempo. La creazione di un database di test puo'
richiedere diversi minuti