De kosten van unit tests
Unit testing is een terugkerend thema voor mij de laatste weken; tussen praten over StackOverflow en andere fora en de tests die ik schrijf voor twee lopende projecten, Ik vroeg een paar vragen over de werkelijke kosten van de unit tests.
Dit is vooral een artikel van Thomas Brandt (Duitse: “TDD in der (mijn) Praktijk - wens en werkelijkheid”) dat maakte me aan het denken serieus. Brandt beschrijft in zijn artikel heel goed inderdaad deze kloof tussen theorie en praktijk van Test Driven Development. Point Blank, Integendeel, het voldoet aan de beginselen van TDD;
Ik moet eerst zeggen dat Test Driven Development, met name het beginsel van de "eerste test", is een vrij “sexy” te ontwikkelen. Het kan zeker de software architectuur en verhindert ons het doen van bepaalde (kleine) fouten.
— Relatief vrije vertaling van over T. Brandt
Hij is daarom van mening TDD als een krachtig instrument – althans vanuit een louter academische. Maar het onmiddellijke resultaat is een twijfel;
De vraag is gewoon: tegen welke prijs?
Zoals vermeld, met uitzondering van T. Brandt en ik, vele andere mensen lijken te vragen, en de meest gestelde vraag is als volgt: Is dat het gebruik van unit tests doet ze echt betere software, en is dat de inspanningen om te investeren zijn ze realistisch?
Gecondenseerde, de vraag komt neer op een eenvoudige:
Het kostte me hoeveel de unit tests?
Vaak is de vraag gaat, dat hij die doet denken unit tests zijn te duur om consistent toepassen. Ik herinner me een discussie die ik over de waarde van een totaal testdekking had dan de theoretisch ideale. Gerapporteerde inspanningen om te zorgen zei ik “niet” op het moment.
Vanaf vandaag vind ik al deze vragen gesteld worden gewoon kwaad, want het is niet weten de kosten van de unit testen is het van belang, meer:
Hoe betaal ik het weglaten van unit tests?
En hier is mijn antwoord, geïllustreerd aan de hand van een concreet voorbeeld;
Een van mijn huidige projecten omvatten een groot aantal van gedistribueerde componenten. Ik ontdekte een fout in het ontwerp, waarin ik me genoodzaakt om refactoren beide klassen. Alle kostte me ongeveer 1 uur. Start unit tests? Over 30 tweede. 30 seconden, ontdekte ik dat sommige gedragingen waren niet zoals oorspronkelijk gepland. Het kostte me ongeveer 20 minuten voor correcties. Het schrijven van tests mij kost ongeveer 45min.
De balans is ongeveer twee uur.
Zonder unit tests, Ik zou waarschijnlijk niet direct opvallen dat sommige van de fouten. Ik had 1 tijd refactoring, over een meer of minder bepaalbare, zeker verdeeld over meerdere dagen, om de problemen verhelpen onopgemerkt bij het wisselen van. De kans dat deze keer veel verder gaat dan een uur is relatief hoog (debug “de hand”, recreëren voorwaarden in multi-threaded applicaties, enz.…).
Voor mijn part, Ik vind dat op een bepaalde tijd te berekenen (met proeven met betrekking tot een realistisch deel van de software – niet 100%) Interessanter is dat de navigatie in het donker zoals beoefend.
Experiment!



