Warum sind die meisten Unit-Tests Zeitverschwendung? (Übersetzung des Artikels)

Verfasser: James O Coplien





Übersetzung: Epishev Alexander  





1.1 Unsere Tage

In den Tagen von FORTRAN, als die Funktion eine Funktion war, die manchmal Funktionsprüfungen verdiente, war das Testen von Einheiten einer der Hauptbestandteile. Computer führten Berechnungen durch, während Funktionen und Prozeduren Recheneinheiten waren. In jenen Tagen bestand der vorherrschende Entwurfsansatz darin, komplexe externe Funktionen aus kleineren Blöcken zu erstellen, die wiederum noch kleinere Blöcke usw. bis hin zur Ebene gut verstandener Grundelemente beherrschten. Jede Ebene unterstützte die darüber liegende Ebene. Insgesamt hatten Sie eine große Chance, die Funktionalität ganz unten, die sogenannten Funktionen und Prozeduren, aufzuspürenwurden mit Anforderungen in Verbindung gebracht, die in einer für Menschen zugänglichen Schnittstelle ausgedrückt wurden. Von einem guten Designer kann erwartet werden, dass er den Geschäftszweck einer bestimmten Funktion versteht. Beziehungen im Aufrufbaum, zumindest in gut strukturiertem Code, waren ebenso leicht zu verstehen. Sie können die Ausführung des Codes während der Codeüberprüfung mental simulieren.  





, , , . -, , , , . . , - . , , FORTRAN. - . , , .  





, “ ”. - - “ ”. - , , . , , - . - . , . , “”, -. - , , - , , , -, . 





, , , . CRC- ( , ), . . , , , , . , FORTRAN, (, , , , ). . - () , . , . 





1.2

, - - , de rigueur (. " "), , -, , , . , -, , (Richard Jacobs) Sogeti (Sogeti Nederland B.V.):  





-. , , - - . -, . , , , . ( , . . .) , , ... , , , . . , ?





, , , , - . , , , : , , .





, , , , . , , , , , . “ ”, , , , , , . . , , , .  





, , . , . . 





(, - , , , , , , , 16- ).





1.3  

, 40% , , , 1- , 60% 2- 80% 3-, 100%. ! , , , divide et impera ( ). , 80% , , 80% . , , . , , . , , , , . - - GOTO. , , - (branch coverage), . 





, , , , , . .





. , , “ ” , . , , , , . , . .





. 100% , , , , , . - , . : , 10. ( , ) . -. , , , , 1 1012.





- - . : , , -, .   





, 24/7.





, , - . , Lean-, , Toyota, Scrum, (http://www.computer.org/portal/web/buildyourcareer/Agile Careers/-/blogs/autonomation). - , . - , - . . , , , , , , .





: , , - .. , . : “ ”, c J-Tag , - , . , ; , - . - .





, , , , , . . . 





. , . , “” .  





1.4 , ,  

, (, , ), , , , - , , . . , , - , .





- , , , , . ; , . , , . , - . , - . , , - . 





-, . ; ; .  





: , . , , , , , - . , , , . , .





☞ , - , ( -, ). , . 





, , . .  





1.5 ( )  

, . , - - X 5, , , , , , X 5. , , , . ; (, , ) , , , .





. - . ( ; . .) “” “” , . , , . . : “ ?” , “1” - , “0” - , :  





 11111111111111111111111111111111  
      
      



, , . - 32, , , . , , , 5. , : , . . 100%, , , . . ( , .) 





, ?





 1011011000110101101000110101101  
      
      



... . , 32. , . , , , - . , , , . ,   . ( , : 





 00000000000000000000000000000000  
      
      



, , , , .)  





, , , - , , . , , , . . - , , , .





. , , . , , . , , , , , . 





, . , , , , . - . , , .





- .  





- . , , , , (TDD). (, “this” / (non-null) , , . , , , . .)





, - - , -. , : , , , . . 1970- 1980- , (tracebility), . , NP- ( ) ( ), , , . , , : “ , - ?” , : “ ”. , , , . : , , . , . , . , - , .





, - , . , , -. ( , , .) . 





, , , . - ; , , , - . , , . , , , API. , API , . .





☞ , , , “ ”, , . “” -, , , , “”, , . , , . 





1.6 -  

: , , , , . , 99,99% , , . , “”, , (WCA). WCA “” , : 100 . , , (FIT rate) 10 - (Failures In a Trillion).





, , , . , : 





, ( ). , , , , , , . , , . ( : 3- - ( , ) - ( ). , , , , , .. .)





, , WCA , - - : . (side effects) , , , , . . , , . 





, , , , . . , , , - . ( , : , - , , . : (Perry and Kaiser), “ - ” (“Adequate  Testing and Object–oriented Programming”), - 2 (5), 1990 ., . 13). , , . ( “ ” - , { , }, ; - , , , - ). (Halting Problem) , .





1.7 -  

, . , ; , , ( “---”) . - . - . . , , , . , , , , , , ! 





, , , . -, . ( , , , , , , , . , .) , -: , (, Agile ). , XP . , Maven , -, . , , - . , : “, Maven , - - , ”.





200, 2000, 10 000 , (-) , . , , 2005 , - ( ) . , - . ; . , , , , , , , , , , , , , . . , - , , - . , . 





-, , , , - , , , .





1.8 !  

, - . - . , - , . , -, - (TDD). , (coupling and coherence), , ( , (Janzen and Saledian), “ ?” IEEE Software 25(2), / 2008 ., . 77 - 84.) , , , (coupling) . . , . ( , .)  





, -, JUnit,   (assertions). - , , , , , , - . , . .





- , , , , . , , . , : - “ ”, , , . , 5 . : “ - , .” . , . 





- (assertions). . , () () ; -. - , : , , -, . 





, -, , . , , , , - , . , , . , Scrum Knowsy, . , , - , . -, , . , . (Rex) , “ , , ”.





; (Lean) . , ( ) - , .





: - () -, - . , , , , , , ... ! , . , .





1.9 “ , ”  

, - , , . - , , , , , “” . , , , , . -, , - .





. - : , . - . , : - , - . , , .





. “ ” , , . , . , .





. , , (debugging). - , . - . -, ad-hoc ( ) , -, . . , , , . 





1.10

Sogeti. , :  





, , . . , ?





, - , , , , - . , . . 2004 , ( ) . : , , . 





, , , , , , . - , . Sogeti : . . , , , , . : “ , ”. (fail-fast), , . , - , , ; , , , . , , JUnit .





, , , (Nancy Githinji), IT- ; Microsoft. , ( ), , . , . !





, ( ), , , , - , : “ “ ” (fail fast) , , … , - , -”. “ ” , , IT-. , , , “ ”. : “ , …”





, : , . . , - Scrum: , , , , ( ) .





: , . , , , . . : , , . , .





jcoplien@gmail.com .





:  





  • , , -.





  • -, , , , , -.





  • , X - X -, : - .





  • , . 





  • - (assertions).





  • , .





  • : , , , , , .





  • , , . .





  • Seien Sie demütig über die Fähigkeit der Tests. Tests verbessern die Qualität nicht: Entwickler schon.








All Articles