Agitator atto II

Luca | January 28, 2006

Vediamo 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

Coverage

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:

Observations

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:

Assertion

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

la conferenza dell’anno

Luca | January 27, 2006

waterfall2006

imperdibile!!
:-)

la conferenza dell’anno

Luca |

waterfall2006

imperdibile!!
:-)

iPod + Senuti

Luca | January 22, 2006

ipod include un sistema di protezione che impedisce di copiare musica dall’ipod stesso ad un pc; in pratica, la direzione in cui si possono trasferire contenuti digitali è solo dal pc verso ipod, e mai il contrario.Senza entrare nel merito dei diritti musicali, grazie a questo sistema di protezione non posso usare l’iPod come veicolo per spostare musica legalmente acquistata da un pc all’altro: ho un pc in Italia ed uno qua a Londra, mi piacerebbe portare un pò alla volta i miei cd sotto forma di MP3 a Londra, usando appunto il mio iPod come veicolo per poi poter scaricare la musica su ITunes del laptop.

Senuti è un’applicazione per Mac che permette di fare questo..well done!!

Theme Contest

Luca | January 19, 2006

Negli ultimi mesi ho provato diversi temi per WordPress; ho usato Connection, GreenTrack, FasTrack, Husna (l’attuale) ma devo ancora trovare quello che mi convince del tutto.

E’ aperto il contest: che tema devo usare per questo blog ?

Why MS Project Sucks for Software Development?

Luca | January 15, 2006

Su TargetProcess si trova il primo di una serie di post sul perchè MSProject è inutile.

la famiglia si allarga

Luca | January 14, 2006

da due giorni la “mia” famiglia Apple si è allargata con un iPod Nano 2 Gb!!

iPod Nano white

Italian Agilists in London

Luca | January 13, 2006

martedì 17 gennaio gli agilisti italiani di Londra si troveranno all’eXtreme Tuesday Club per una birra in compagnia; se hai le carte in regola per far parte del club e sei da queste parte…ti aspettiamo!!

Agitator

Luca | January 10, 2006

Nell’ultima settimana abbiamo introdotto nel nostri tool di sviluppo un prodotto per Unit Testing, Agitator. Una volta scritta una classe la si da in pasto ad Agitator (agitate your code, come diceva tutto pompato il trainer di venerdì !! ) che genera in automatico una serie di Observation riguardo al codice; le Observation non sono altro che possibili test che il tool ha individuato analizzando il sorgente, è che lo sviluppatore deve scegliere promuovendole ad Assertions, per creare la suite di test collegata alla classe. Ovviamente Agitator non può fare tutto, quindi si possono aggiungere Observation create ad hoc così come Factory e Mock Object specifici che Agitator userà per testare il sorgente.

Sto ancora familiarizzando con il tool, ma a caldo posso dire che:

  • sembra un buon un tool per creare suite di test di regressione
  • non è un tool per fare TDD (ahi!! ahi!! io proprio lì volevo concentrarmi nei prosimi mesi… :-( )

ok, mi sbilancio: mi sembra un ottimo strumento per QA ma un tool così così per lo sviluppo, soprattutto in un contesto Agile.
Lasciatemi ancora un pò di tempo per giocarci, poi il verdetto!!

SlothCam

Luca | January 3, 2006

SlothCam è uno spettacolare widget per MacOS X che permette di vedere webcam sparpagliate in giro per il mondo.