¿Por qué la mayoría de las pruebas unitarias son una pérdida de tiempo? (traducción del artículo)

Autor: James O Coplien





Traducción: Epishev Alexander  





1.1 Nuestros días

En los días de FORTRAN, cuando la función era una función que a veces merecía controles funcionales, las pruebas unitarias eran uno de los ingredientes principales. Las computadoras realizaban cálculos, mientras que las funciones y los procedimientos eran unidades computacionales. En aquellos días, el enfoque de diseño dominante era crear una funcionalidad externa compleja a partir de fragmentos más pequeños, que, a su vez, gobernaban incluso a los más pequeños, y así sucesivamente, hasta el nivel de primitivas bien entendidas. Cada capa sostenía la capa superior. En general, tuvo una gran oportunidad de rastrear cómo la funcionalidad en la parte inferior, las llamadas funciones y procedimientosse asociaron con requisitos expresados ​​en una interfaz accesible para humanos. Se puede esperar que un buen diseñador comprenda el propósito comercial de una función en particular. Las relaciones en el árbol de llamadas, al menos en un código bien estructurado, eran igualmente fáciles de entender. Podría simular mentalmente la ejecución del código durante la revisión del código.  





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





  • , .





  • : , , , , , .





  • , , . .





  • Sea humilde sobre la capacidad de las pruebas. Las pruebas no mejoran la calidad: los desarrolladores sí.








All Articles