Quando si scrive un test JUnit per codice legacy non coperto: quanto è importante capire gli scenari originali?

1

Un responsabile tecnico del mio team ha detto:

We're going to use sonar on our (500KLoc) codebase so that everytime you do a commit, it will check the classes you've touched against the coverage goals. If you don't meet the coverage goals for your commit, the build will break.

Un altro sviluppatore ha risposto:

No that has no value. The classes were written against a specification with particular test scenarios in mind. It's not possible to discover what those test scenarios were from the code. You can't write a useful JUnit test on legacy code because you don't understand the original intent.

Il primo lead tecnologico ha risposto:

You can infer the requirements from the codebase, and the user experience of the software. All the JUnit test does, even if it does capture the original test scenarios, is demonstrate that a working path exists in the code. You can't say that JUnit tests represent a proof, but providing coverage of the code is extremely valuable.

La mia domanda è: Quando scrivi un test JUnit per codice legacy non coperto: quanto è importante capire gli scenari originali?

Modifica : Si noti che questo è diverso dalla domanda collegata perché riguarda i intento o i requisiti inferti come input per i test JUnit sul codice legacy.

    
posta hawkeye 10.01.2017 - 10:58
fonte

2 risposte

3

È vero che non puoi scrivere test utili se non comprendi i requisiti per il codice.

Ma puoi conoscere i requisiti mentre scrivi i test, leggendo la documentazione o cercando di estrarli dal codice stesso e documentandoli attraverso i test stessi.

E dovrai farlo comunque - in realtà non puoi apportare alcuna modifica sostanziale sul codice esistente senza comprendere i requisiti.

    
risposta data 10.01.2017 - 11:27
fonte
1

Quindi, di conseguenza, se faccio un piccolo cambiamento in alcune classi legacy, oltre al banale cambiamento e alle revisioni del codice, e ogni test manuale fatto, devo anche scrivere un gazillion di test unitari per venti anni vecchio codice

È abbastanza facile. L'effetto è che la mia stima per svolgere l'attività va da mezza giornata a tre settimane. Se il capo del mio team leader pensa che questo è un buon rapporto qualità-prezzo per l'azienda, così sia. Se il capo del mio capo squadra è uno spreco di tre settimane di orario di lavoro, allora no.

Puoi anche chiedermi una stima per scrivere test di unità utili , il che significa che deve capire che cosa dovrebbe fare il codice, il che significa che la mia stima sale ancora di più.

    
risposta data 10.01.2017 - 11:12
fonte

Leggi altre domande sui tag