PDA

View Full Version : Test Coverage


fek
05-01-2006, 19:07
Grazie al lavoro di cover e Vicius, abbiamo i report sul test coverage.

Il test coverage dell'ultima build e' sempre disponibile a questo indirizzo:
http://fcarucci.homeip.net/diamonds/coverage/

Per ogni build in CruiseControl potete consultare il test coverage da "Build Artifacts" e poi "yes/" (non domandatemi il perche').

E' assolutamente interessante da spulciare, c'e' tutto il codice di Diamonds e ci dice con precisione quali linee non sono coperte da test e che dobbiamo coprire da test al piu' presto :)

Utilissimo.

cdimauro
06-01-2006, 07:30
:eek: Sono rimasto senza parole: bellissimo!

Su quale principio si basa?

thebol
06-01-2006, 10:58
veramente molto carino :)

probabilmente esegue tutti i test in debug mode step by step, e controlla quale righe del codice vengano passate(infatti ho letto che se non ci sono le info sui numeri di riga non riesce a calcolare il passaggio e da N/A)

fek
06-01-2006, 11:21
:eek: Sono rimasto senza parole: bellissimo!

Su quale principio si basa?

E' molto intelligente: a partire dalle classi in bytecode crea una versione "instrumented" delle classi stesse e poi riesegue tutta la batteria dei test. Durante l'esecuzione dei test per ogni linea di codice controlla se e' stata esercitata o meno da un test. Poi stampa i report. E' interessante perche' abbiamo anche sempre a disposizione tutto il codice di produzione sul web (esclusi i test) pronto per essere consultato. La complessita' ciclomatica invece e' un po' buggata (alcune classi sono a 0).

Qualcuno conosce un buon tool automatico per creare delle comode view html di tutto il codice che sia eseguibile come task di ant?

thebol
06-01-2006, 13:37
cercando cercando..

http://www.java2html.de/


ce anche una applet per provare a vedere il risultato.
cè il task di ant

:)

thebol
06-01-2006, 13:38
ce anche lo stile eclipse like :)

http://www.java2html.de/docs/styles.html

fek
06-01-2006, 14:06
Perfetto. Nel finesettimana lo provo e lo aggiungo alla build machine.

cover
06-01-2006, 19:03
Uhm...però sembra che converte solo da java a pagine html...non sembra tenere una struttura javadoc like (almeno....gli unici esempi che ci sono riportano solo il codice), è da provare ^^
In struttura javadoc like è più comodo da navigare :D
In questo modo fek però potrà controllare sempre tutto quello che succede...ecco perchè lo volevi... :Prrr:

71104
06-01-2006, 19:42
semplicemente mostruoso :eek:
e utile anche :cool:

sinceramente prima di iniziare questo progetto non credevo che nel mondo Java esistessero tanti e tali strumenti, e di tale potenza... mi sto rendendo conto solo ora delle enormi possibilità di questo linguaggio, prima credevo che servisse poco più che a fare gli applet :D

cover
06-01-2006, 20:16
Prima pensavi anche che programmare in TDD era inutile... :D
io non sapevo neanche cosa fossero le metodologie agili :Prrr:
Comunque tutto questo è molto brutto...perchè? perchè così fek può controllare tutto e tutti (sempre detto che troppo testing di B&W fa male, poi ti porta a diventare una divinità :D ) a ogni commit ^^

71104
06-01-2006, 20:46
Comunque tutto questo è molto brutto...perchè? perchè così fek può controllare tutto e tutti (sempre detto che troppo testing di B&W fa male, poi ti porta a diventare una divinità :D ) a ogni commit ^^ se hai la coscienza a posto non hai nulla da temere :cool: :sofico:

cover
06-01-2006, 21:25
Sono ancora in fase di studio del codice, per ora non ho ancora fatto danni ^^

Vifani
07-01-2006, 01:59
Ma il link a me non funziona. Il server è down ?

Bonfo
07-01-2006, 02:06
Rispondo al volo....
...ho scoperto per motivi di studio un tool: MAVEN (apache.org).
Si può dire che è un'estensione di ant, con il quale è interoperabile.
So che lui fa un report del codice in HTML con una struttura modi Javadoc.

Appena posso ci dò un occhio e vi faccio sapere.
CIAO

thebol
07-01-2006, 11:30
Uhm...però sembra che converte solo da java a pagine html...non sembra tenere una struttura javadoc like (almeno....gli unici esempi che ci sono riportano solo il codice), è da provare ^^
In struttura javadoc like è più comodo da navigare :D
In questo modo fek però potrà controllare sempre tutto quello che succede...ecco perchè lo volevi... :Prrr:

per creare javadoc, penso che l'eseguibile sia integrato nel j2re(e una cosa standard java).

ho trovato questo link, non ho letto bene ma sembra creare con ant i javadoc
http://ant.apache.org/manual/CoreTasks/javadoc.html

VICIUS
07-01-2006, 12:28
Invece di trasformare il codice in html tutte le volte che c'è un commit sarebbe interessante avere qualcosa come viewvc. http://www.viewvc.org/

ciao ;)

fek
07-01-2006, 13:39
Interessantissimo. Lo metto sull build machine e poi se tutto va bene lo mettiamo sul server di Anta se e' d'accordo.

fek
07-01-2006, 14:18
... se riuscissi a trovare una versione binaria di GNU diff da installare... ma e' possibile che questi alla GNU non conoscano il concetto di setup... avanti... avanti... avanti?

fek
07-01-2006, 14:30
Ecco, preferisco questo:
http://polarion.org/svnwebclient.php

fek
07-01-2006, 20:37
http://www.fcarucci.homeip.net:8080/svnwebclient

E' il browser della versioncina di Diamonds per cellulare. Se vi piace ne parliamo con Anta, mi serve che installi Apache sulla sua macchina e non so se puo' farlo.

71104
07-01-2006, 20:51
http://www.fcarucci.homeip.net:8080/svnwebclient

E' il browser della versioncina di Diamonds per cellulare. Se vi piace ne parliamo con Anta, mi serve che installi Apache sulla sua macchina e non so se puo' farlo. omg, ma non farmi ridere!!! :D
quale programma credi che sia quello che ti da l'output se vai su http://spartacus.dnsalias.net/ ? :Prrr:
Apache lo stra-usiamo su NSN3: ogni tanto il rubbe se ne esce che non capisce perché Apache gli fa 5 istanze :|
sarà mica un worm...? :D

fek
07-01-2006, 21:11
omg, ma non farmi ridere!!! :D
quale programma credi che sia quello che ti da l'output se vai su http://spartacus.dnsalias.net/ ? :Prrr:
Apache lo stra-usiamo su NSN3: ogni tanto il rubbe se ne esce che non capisce perché Apache gli fa 5 istanze :|
sarà mica un worm...? :D

Perfetto allora :)

Quando anta e' online gli dico come installare il supporto di svn per Apache e siamo a cavallo.

fek
08-01-2006, 12:34
C'e' parecchio codice in GemsPair non testato. Puo' qualcuno metterci una pezza? Io risolvo Gem e it.diamonds.gem e' testato al 100%. Poi passiamo ad un altro package. Entro la fine della storia voglio la maggior parte dei package al 100%.

VICIUS
08-01-2006, 19:02
Visto che siete stranamente calmi ve lo metto come task nel prossimo ciclo :D

ciao ;)

Bonfo
17-01-2006, 13:48
Non sapevo dove scrivere e ho scritto qui.
Mentre guardavo il codice per completare il task 8.1.2 ho fatto una piccola prova perchè non mi sono fidato del coverage .

Ho introdotto questo errore apposta sapendo che non ci sono test per rilevarlo (non gli abbiamo ancora scritti :D)

public void stopPulsing()
{
sprite.setSizeMultiplier(2);
sprite.setSpeedDivisor(3.14f);
sprite.startPulsing();
}

public void startPulsing()
{
sprite.stopPulsing();
}


...si nota subito la contraddizione tra il nome del metodo e il quello che invoca.
Bhè i test passano tutti e il coverage mi dice che il metodo startPulsing() è coperto da test...

:mbe: :wtf: .... :muro:

Ho già capito dove sta il trucco e dove è l'incongruenza...il test è su parti di codice che ne invocano altre, che però non sono state testate, ma per il coverage questo test copre anche queste parti...sbagliando

Volevo solo suonare un campanellino d'allarme...non fidiamoci troppo.
:Prrr: :Prrr: :Prrr:

fek
17-01-2006, 13:56
Ho già capito dove sta il trucco e dove è l'incongruenza...il test è su parti di codice che ne invocano altre, che però non sono state testate, ma per il coverage questo test copre anche queste parti...sbagliando

Volevo solo suonare un campanellino d'allarme...non fidiamoci troppo.
:Prrr: :Prrr: :Prrr:

Mentre fai suonare il campanellino copri anche questo errore che hai introdotto con un test :D

E' un'ottima pratica quella di introdurre errori di proposito e vedere se vengono colti dai test e dal coverage. Ricordiamoci che non sono strumenti infallibili e devono sempre essere migliorati.

Bonfo
17-01-2006, 14:59
Stasera mentre programmo con Cdimauro lo compriamo certamente!!! :D :cool: