Agitator atto II
Luca | January 28, 2006Vediamo un pò di approfondire l’analisi di Agitator iniziata in questo post.
Ipotizziamo di avere questa classe da testare:
public class Agitate {
public booleanamIagitated(String mood) {
if (mood.equals("agitate")) {
return true;
} else {
return false;
}
}
dopo aver agitato la classe, Agitator ci dice che copertura abbiamo della classe
e ci da delle Observations, cioè alcune considerazioni che è riuscito a fare sulla classe in esame. Per la nostra classe le Observations generate sono queste:
come si vede le Observations altro non sono che valutazioni sulle principali variabili usate nei metodi…voi ci vedete qualcosa di particolarmente utile ? io francamente no.
Se uso un tool per il testing (perchè così viene venduto Agitator) mi aspetto di avere una suite di test di regressione sempre più completa, quindi tanti bei test black-box che dato un input verifico che l’output sia quello aspettato. Per fare questo Agitator chiede di creare degli Helper, dei metodi statici con valore di ritorno boolean che poi saranno aggiunti alle Observation e promossi ad Assertion. Un helper per testare la nostra classe può essere:
public static boolean testAgitate() {
Agitate myAgitate = new Agitate();
return myAgitate.amIAgitated("agitate");
}
Una volta aggiunto l’helper alla vista delle Observations, averla promossa ad Assertion (selezionandola) e aver riagitato la classe, otteniamo:
come si vede dall’icona verde, la nostra Assertion ha avuto esito positivo e quindi il test è superato.
La prima considerazione sugli Helper è perchè hanno reinventato l’acqua calda: Junit offre già un meccanismo più che consolidato sufli assert, perchè mai devo scrivere un metodo statico che deve necessariamente tornare un booleano per darlo in pasto alle Observation ?
La seconda considerazione viene fuori da un’attenta osservazione della vista delle Observation/Assertion…vedete il numero 85 a fianco della mia Assertion ?
indica che abbiamo avuto 85 volte un return value true…interessante…ma usando valori casuali di input, ma volendo testare un behaviour chiaro (a questo input mi aspetto questo output) quale è l’utilità di eseguire il test 85 volte ?
Per concludere posso dire che per testare la classe sopra ci vogliono circa 2 minuti ed una quantità spaventosa di RAM: non so ancora bene perchè ma Agitator è un vampiro, occupa in modo massivo la RAM e la tiene tutta per se anche al termine del test.
Sto ancora cercando di capire cosa è esattamente Agitator, ma nel frattemppo posso dire cosa non è:
- non è un test per unit testing (anche se così lo vendono)
- non è un tool che facilita TDD, anzi lo complica









