Mengapa sebagian besar pengujian unit membuang-buang waktu? (terjemahan artikel)

Penulis: James O Coplien





Terjemahan: Epishev Alexander  





1.1 Hari-hari kita

Di zaman FORTRAN, ketika fungsi adalah fungsi yang terkadang membutuhkan pemeriksaan fungsional, pengujian unit adalah salah satu bahan utamanya. Komputer melakukan komputasi, sedangkan fungsi dan prosedur adalah unit komputasi. Pada masa itu, pendekatan desain yang dominan adalah menciptakan fungsionalitas eksternal yang kompleks dari potongan yang lebih kecil, yang, pada gilirannya, mengatur yang lebih kecil, dan seterusnya, hingga ke tingkat primitif yang dipahami dengan baik. Setiap lapisan mendukung lapisan di atasnya. Secara keseluruhan, Anda memiliki peluang besar untuk melacak bagaimana fungsionalitas di bagian paling bawah, yang disebut fungsi dan prosedurdikaitkan dengan persyaratan yang diekspresikan dalam antarmuka yang dapat diakses manusia. Seorang desainer yang baik diharapkan dapat memahami tujuan bisnis dari suatu fungsi tertentu. Hubungan di pohon panggilan, setidaknya dalam kode yang terstruktur dengan baik, sama mudahnya untuk dipahami. Anda dapat secara mental mensimulasikan eksekusi kode selama peninjauan kode.  





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





  • , .





  • : , , , , , .





  • , , . .





  • Bersikaplah rendah hati tentang kemampuan tes. Pengujian tidak meningkatkan kualitas: pengembang melakukannya.








All Articles