|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
[Vari] - Quanti test?
Salve a tutti.
Dopo un periodo di sviluppo matto e disperatissimo ( ) ci troviamo con un'applicazione da circa 300k linee di codice senza neanche un test.Ed ora c'é una differenza di vedute tra me ed il mio capo. Io vorrei che lo sviluppo dei testa sia, nel tempo, quanto piú completo possibile ed eseguiti prima di ogni deploy (in stage e production). Il mio capo dice che troppi test hanno solo l'effetto di portare lo sviluppatore a disabilitarli dopo un po'. Capisco il suo punto di vista, ma per me avere solo una copertura parziale dei test é inutile se non dannoso per il senso di falsa sicurezza che si potrebbe avere. Ho provato a cercare della letteratura in inglese in modo da poter analizzare insieme qualche caso di studio o almeno qualche articolo a riguardo ma non mi viene alcuna parola chiave adatta. Ho provato con "granularity" e "coverage" ma non portano a nulla di buono. Grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Non ti saprei indicare qualcosa in letteratura, perché l'idea che mi sono sviluppato sui test deriva dalla pratica.
Da questo punto di vista posso soltanto dirti che i test per me sono importantissimi per dormire abbastanza tranquillo. Per fare un esempio, una delle ultime applicazioni su cui sto lavorando da mesi ha circa mille linee di codice Python (togliendo tutte le librerie di cui fa uso; mi riferisco al solo codice di backend di un server che espone delle API da HTTP) per circa 32KB di file, a cui aggiungiamo circa 900 linee per db + stored procedure per circa 35KB di file. Per contro, il codice di test ha più di 3200 linee di codice, su circa 128KB di di file, per un totale di più di 360 test (che eseguiti sulla mia macchina desktop impiegano circa 2 minuti e mezzo). Il progetto sembra di piccole dimensioni, ma avendolo scritto in Python risulta estremamente compatto. Il tuo è ovviamente un pachiderma imparagonabile, e a maggior ragione non potrei mai stare tranquillo senza test o con una batteria di scarsissime proporzioni. Il tuo capo ha ragione quando dice che i test diventano inutili perché vengono disabilitati, ma il punto è che NON dovrebbero assolutamente esserlo. Il tempo speso nei test è tutto tempo guadagnato perché riduce all'osso il tempo necessario ai test manuali, ma soprattutto rende molto più solida la piattaforma, in particolare per la sua manutenzione ed evoluzione (i cambiamenti futuri diventano molto più prevedibili). Mi rendo conto che si tratta di un'esperienza personale e, quindi, che alla fine la mia rimanga soltanto un'opinione, ma in questo campo è difficile quantificare e, men che meno, formalizzare i risultati ottenibili grazie a tecniche di extreme programming / unit testing, se non a livello puramente empirico / statistico.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
300.000 righe di codice senza test sono secondo me un suicidio. In futuro, una volta messo in produzione il sistema, avrete sempre più paura di fare modifiche per il terrore di rompete qualcosa. Il progetto morira molto lentamente e fra una decina di anni sara semplicemente cestinato.
Quella del 100% di coverage è un po' un mito. Non è fondamentale e comunque non dimostra che il programma sia corretto. Cercare di arrivarci ora a cose fatte su un progetto così grande è forse anche impossibile. Penso che dovreste concetrarvi sulle parti più importanti del programma e testare almeno quelle. Uno consiglio che ti posso dare è quello di non buttare tutto quanto in una sola Suite. Cerca di creare piccole suite di file che siano collegati tra di loro. Se fai una modifica ad una Classe che si occupa di fare il parsing di un file X è molto importante sapere subito (un paio di secpondi massimo) se hai spaccato qualcosa in quella parte di codice. Stessa cosa per le classi di test. Non c'è scritto da nessuna parte che si debba una relazione 1-a-1 tra le classi ed i test. La mega suite con tutti i test del sistema che magari impiega 20 minuti a terminare è importante ma non si deve costringere il programmatore a lanciarla sempre prima di un commit. Perché come dice giustamente il tuo capo dopo un po' non lo farà più. Prendete in considerazione invece di mettere su un server per la continuos integration come jenkins da collegare al server svn/git che ad ogni commit lancia tutti i test e crea dei report sullo stato della build e quanti test sono passati/falliti. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
Quote:
Se non mi ha licenziato quella volta (e quando gli ho detto che ha la fidanzata bona) non mi licenzia piú. (il resto lo commento comodamente da casa ché sto ancora a lavoro) |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
voglio un video su youtube
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
|
|
|
|
|
|
#7 | ||
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Inoltre alcuni progetti sono piu' portati allo sviluppo di test automatici di altri: se devi sviluppare il software per far aprire e chiudere un cancello automatico, alcuni tipi di test non ti servono perche' vai a testare il modello, che puo' essere diverso dall'oggetto reale (e gli stessi test possono darti risultati diversi). Direi quindi che la risposta e' difficilmente quantificabile ma dipende dall'esperienza, sia del linguaggio/piattaforma che del dominio in cui si lavora. Come esperienza personale, se senti di avere bisogno di tanti test hai fatto un cattivo design Battute a parte, dovendo adottare un approccio a posteriori ha poco senso andare a cercare di coprire il piu' possibile; meglio concentrarsi sulle parti piu' pericolose. Quelle sulle quali hai il timore di mettere mano sono un buon candidato, oppure quelle su cui statisticamente devi mettere piu' spesso mano. Quote:
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
||
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Fate come faccio io: scrivete codice senza bug!
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Sì bravo, sei come il mio pasticcere: riesce a fare le ciambelle senza il buco
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Piu' semplice ancora: non scrivere codice
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Già! Questa è una di quelle frasi zen che quando le senti la prima volta pensi "Che stronzata!" e poi un giorno invece ricevi l'illuminazione e sussurri "Ohhhh!".
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:53.










) ci troviamo con un'applicazione da circa 300k linee di codice senza neanche un test.

voglio un video su youtube








