4 pics 1 word las vegas jackpot
best slot machine fire red
3rd grade bingo games
casino theme party cape town
baccarat game online for money
5050 gambling games
best slot machines to play at beau rivage
astrology gambling
vegas online casino gambling
betsson casino gry
18 plus casinos in florida
1960s slot machines for sale
best sports betting casino in vegas
american slot machine manufacturers
best slot machines oklahoma
akwesasne mohawk casino general manager
bally bingo pinball machines for sale
american eagle slot machine bank
baccarat bebo blackjack
best payout casinos in washington state
casino games online book of ra
anime palace
best time to play slot machines in las vegas
betfair live casino android app
aztec gold casino game
best blackjack card counting strategy
address for mountaineer casino in wv
best canadian online bingo sites
atlantic city blackjack tournament schedule
7 casino games
1980s slot machines for sale
169 poker hand rankings
best offshore casino in goa
500 club casino clovis ca
beating bookies roulette machines
are there any real gambling apps
888 com poker download
absolute bonus deposit download poker
bally slot machine models
ancient riches cashdrop casino slots
bet365 american roulette strategies uk
32red sister casino
3d craps online
best payouts online casinos
50 cent roulette tables vegas
best rival slot games
which online casino uses paypal
blackjack cosh sap
bingo 6 online
baccarat online for android
best online blackjack simulator
5 million dollar promo codes for doubledown casino
casino x app
www casino kajot
best slot machines at hollywood casino columbus
4 pics 1 word roulette table
best casino in santa fe new mexico
europa casino recenze
azure continental slot machine
888 poker 88 bonus
ainsworth poker machines
back gammon online casinoonline slots
bingo hall live play
real money casino play
888 poker download client
online casino spiele kostenlos ohne anmeldung
best casino online for us players
actual casino game
admiral casino online games
24 7 casino eunice la
bast s gaming online casino gaming
best casino slots ios
best casinos in atlantic city for blackjack
advanced basic strategy blackjack
betsson casino besplatne igre
australian pokies online wheres the gold
barcelona casino online
best payout casinos in arizona
acrylic poker chip case
casino android apk
betting on colors in online roulette
accept account card credit casino merchant
5x odds craps
play bingo online in usa
argosi casino
11 5 orange clay poker chips
best australian online casino
best domination slots to play
4 bears casino 8ball classic
book of ra real
ashanti ho chunk casino december 7
blackjack 21 pro apk
age california gambling legal
audio guide charlottenberg palace berlin
best ios casino game
nz online casino paypal
best casinos in biloxi mississippi
aliante casino news
a gambling addiction
5000 royal flush poker chips
alphabet bingo card child printable
online roulette quick spin
bet365 american roulette hints uk
18 million poker payout
live online casinos usa
20p roulette odds
bell fruit slot machine
aristocrat slot machine manuals
blackjack dealer salary louisiana
albuquerque bingo supplies
legal age for casinos in macau
32 red casino wikipedia
alhambra casino aruba dress code
besplatne igrice casino slot
abzorba blackjack 21 hack
big fish casino android download
baccarat bird
72 oval poker table top
angel of the winds casino
best new mobile casinos
a1 bingo bonus code
agua caliente spa resort casino
big casino in oklahoma
antique slot machines las vegas nv
online blackjack live
aristocrat slot machines download
aladdin japanese slot machine
live online casino baccarat
casino web design
blackjack combiner wars
5dimes casino and sportsbook mobile
best casino slots google play
1996 igt slot machine
best paying slot machines in casinos
australia casino chips
mobile casino for android
gambling in the us states
best vegas casinos to work for
are bonus rounds on slot machines predetermined
338a casino games
award lovers online casino games
best slots at greektown casino
21 blackjack quotes
blackjack ballroom 500
belterra casino boat indiana
best casino resort in reno
topless poker dealer
baseball poker games
texas holdem poker game download
all casinos in australia
baccarat verres cristal ancien
baccarat game dragon
18 and over online casino
armor slots jeux gratuit casino jouer
4 pics 1 word slot machine bank loan
balmorial palace
bet 65 casino
antique game table with roulette
888 casino slot machine
best slot machine apps for android
bingo halls in woodbridge va
aria resort casino expedia
online casino bonus bez depozita
21 blackjack espanol latino
baccarat probabilities
best online slots casino
belterra casino resort kentucky
are blackjack automatic shufflers rigged
3d slot machines online
www casino zdarma
argosy casino aurora indiana
atlanta georgia casino resort
online roulette real money for mac
bellco slot machine key
apply online casino license
3 sets of numbers roulette
biggest lottery jackpot ever in vermont
age 18 casinos in ohio
best online poker payout sites
australia online casino roulette
best online poker game app
betfair casino bonus rules
bingo virtual para pc
besplatne igrice casino roulette
best online casino ipad
bingo cards everyone wins
baccarat betting software
best slots to play at riverwind casino

Cuantificando los beneficios de TDD

MedirSegún un estudio reciente, el uso de Test Driven Development (TDD) incrementa el tiempo de codificación en un 15-30%, y resulta en un 40-90% menos de defectos. El estudio se hizo en 4 equipos de desarrollo diferentes (1 de IBM y 3 de Microsoft). Esto confirma lo que cualquier practicante de TDD te puede decir: se gasta un poquito más de tiempo en escribir las pruebas, pero la calidad del código resultante es muy superior.

Y no es el único estudio en esta área. Hay muchos más. Bob Martin resumen varios en un post de su blog. Por otro lado, Misko Hevery pasó dos semanas hace poco haciendo un seguimiento del tiempo que lleva escribir las pruebas, y llegó a la conclusión que su equipo usaba un 10% del tiempo para escribir pruebas.

Es interesante destacar que este incremento del 15-30% se refiere a la fase de codificación. Luego, los testers encontraron un 40-90% menos de bugs. Esto es 40-90% menos bugs que necesitan arreglarse. Ahora, estos bugs que necesitan arreglararse se los encontraba en la fase de test funcional. Los números exactos varian, pero es frecuente observar que los bugs que se encuentran en esta fase requieren al menos 10 veces más de tiempo para arreglarlos que si hubieran sido encontrados al momento de desarrollo. Cuando tenemos esto en cuenta, tiene mucho sentido invertir un 15-30% de tiempo extra para escribir pruebas unitarias.

Un ejemplo concreto: el otro día me enteré de un estudio interno en una empresa que usa un enfoque más "tradicional" (léase, "cascada"). El tiempo que gastaban en cada fase era: 5 meses de análisis, 2 meses de codificación, y 7-8 meses de debug. Entonces, gastaban 4 veces más tiempo haciendo debug que escribiendo ese mismo código! ¿Qué pasaría si pudieran disminuirse esos 7-8 meses en un 40-90% (ahorrando así entre 3 y 7 meses), a costo de pasar un par de semanas escribiendo pruebas unitarias con un enfoque TDD?

Y esto ni siquiera tiene en cuenta los beneficios más importantes de TDD y Behavior Driven Development (BDD). Recuerden, TDD no es una técnica de pruebas, sino una estrategia de diseño. El código de TDD casi siempre es de más alta calidad, más flexible y facil de mantener que el mismo código desarrollado usando métodos tradicionales. Además de fomentar prácticas de diseño limpio,  TDD tiene otro efecto importante en los desarrolladores: los ayuda a enfocarse en los requerimientos. Otro estudio interno mostró que un proyecto grande en Cascada implementó menos del 50% de los requerimientos documentados, y más de la mitad de los requerimientos implementados nunca fueron usados.

Otras lecciones interesantes que muestra el estudio (que de hecho refleja las mejores prácticas en el espacio de TDD) son: 

  • Es importante empezar con TDD desde el inicio de los proyectos
  • Escribir una prueba unitaria cada vez que se necesita arreglar un bug
  • Usar Integración Continua
  • Fomentar las pruebas unitarias rápidas

Todos estos principios son bien conocidos por los practicantes de TDD; igualmente siempre es bueno verlos confirmados en un estudio.

Sin embargo, TDD no es mágico. A muchos desarrolladores les resulta dificil de aprender - es dificil desaprender hábitos viejos. Los menos experimentados con TDD a menudo se olvidan de la parte de refactor en el ciclo probar-codificar-refactor, lo que significa que el proceso de TDD no puede hacer su trabajo como práctica de diseño. Y además todos necesitan estar haciendo TDD, incluyendo la gestión. Es dificil (no imposible, pero si dificil) hacer TDD uno sólo cuando el resto está trabajando de la manera tradicional.

Y TDD tampoco es apropiado para todas las situaciones de desarrollo, ni es un reemplazo para la arquitectura o el diseño de alto nivel. Bob Martin escribió un excelente artículo sobre el tema.

Entonces, TDD no es la bala de plata. Pero es una práctica confirmada que funciona muy bien, en muchas situaciones. La inversión es mínima, las ganancias son enormes. Así que si todavía no hacen TDD, deberían empezar. Un buen punto de inicio es el libro Test Driven: TDD and Acceptance TDD for Java Developers de Lasse Koskela. O, en el mundo .NET, el libro Test-Driven Development in Microsoft .NET de James Newkirk y Alexei Vorontsov.

Traducido de For a fistful of dollars: quantifying the benefits of TDD, por John Ferguson Smart.
Compartir
  • Muy buenas observaciones. Hay veces que en lugar de pretender TDD donde mas que posible lo veo indispensable (en todo lo que son clases de base y temas de infrastructuras) yo me acontento tambien que se escriban tests en lugar de apretar F5.

Deja tus comentarios

Post comment as a guest

0

El nuevo Dos Ideas.

Nuevo logo, nuevo buscador, nueva portada, podcast mensual... ¡y muchas novedades más!

Más novedades en Dos Ideas

Los Comentarios.

amazon
i have found a right place to get free amazon gift card code . these code are real and working .
Diego
Estimado amigo, desde el punto de vista que lo pones toda prueba es una farsa, ( y en el sentido que...
I am so happy to read this. This is the kind of manual that needs to be given and not the random mis...
Know aadhar card status by name Aadhar card status by name
This article is very informative and useful.

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw