Pourquoi la plupart des tests unitaires sont-ils une perte de temps? (traduction de l'article)

Auteur: James O Coplien





Traduction: Epishev Alexander  





1.1 Nos jours

À l'époque de FORTRAN, lorsque la fonction était une fonction qui méritait parfois des vérifications fonctionnelles, les tests unitaires étaient l'un des principaux ingrédients. Les ordinateurs effectuaient des calculs, tandis que les fonctions et les procédures étaient des unités de calcul. À cette époque, l'approche de conception dominante consistait à créer des fonctionnalités externes complexes à partir de blocs plus petits, qui, à leur tour, régissaient les plus petits, et ainsi de suite, jusqu'au niveau de primitives bien comprises. Chaque couche supportait la couche au-dessus. Dans l'ensemble, vous avez eu une grande chance de suivre comment la fonctionnalité tout en bas, les soi-disant fonctions et procéduresétaient associés à des exigences exprimées dans une interface accessible à l'homme. On peut s'attendre à ce qu'un bon concepteur comprenne l'objectif commercial d'une fonction particulière. Les relations dans l'arbre d'appels, du moins dans un code bien structuré, étaient tout aussi faciles à comprendre. Vous pouvez simuler mentalement l'exécution du code pendant la révision du code.  





, , , . -, , , , . . , - . , , 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).





  • , .





  • : , , , , , .





  • , , . .





  • Soyez humble quant à la capacité des tests. Les tests n'améliorent pas la qualité: les développeurs le font.








All Articles