BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
No hay eventos actualmente
¡ Bienvenido Invitado!

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte | .
 

 Comenzando con pruebas unitarias

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Ruke

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 288
Reputación Reputación : 57
Monedas de oro : 1602
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Comenzando con pruebas unitarias Vie Jun 13, 2014 7:42 pm

Muy buenas a todos. En este mini-tutorial voy a darles una breve introducción sobre las pruebas unitarias.


Indice

  • ¿Qué es una prueba unitaria?
  • ¿Qué es lo que me ofrece/por qué debería usarlas?
  • Las pruebas unitarias requieren un poco de tiempo
  • ¿Cómo utilizarlas?
  • ¿Dónde escribir las pruebas unitarias?
  • Algunos ejemplos



¿Qué es una prueba unitaria?
Una prueba unitaria es simplemente código que verifica el funcionamiento de otro código. Simplemente se tratan de verificaciones, verificar que el resultado arrojado por X función sea N, verificar que luego de llamar a Y función, la vida de la unidad E sea igual a 4, etc..


¿Qué es lo que me ofrece/por qué debería usarlas?
En proyectos pequeños, puede parecer una completa perdida de tiempo (tenemos que escribir el código y las pruebas unitarias, ¡casi el doble de trabajo!), pero resulta ser todo lo contrario. Esto es porque una prueba unitaria, garantiza que el código que estemos probando funcione como se le está indicando.

Probablemente se te cruce por la cabeza, "pero si mi proyecto es pequeño, ¡estaré bien!" o "yo ya lo he probado, tengo garantizado que mi código corre exactamente como lo deseo". El problema con la primera afirmación es, ¿qué pasa cuando el proyecto crezca?; el problema con la segunda afirmación es ¿qué pasa cuando cambies el funcionamiento de ese código que anteriormente funcionaba bien?. Las dos afirmaciones ademas comparten una pregunta en común, y ésta es, ¿verificarás que todo funcione correctamente manualmente cada vez que agregues/cambies algo?.

Otro punto muy (extremadamente) importante es además que debemos garantizar el funcionamiento de X código, puesto que otro(s) componente(s) podría(n) estar usándolo. Imagina qué pasaría si el código X funciona mal...


Las pruebas unitarias requieren un poco de tiempo
Completamente cierto, tardaremos un poco mas de lo que habitualmente nos tomaría, pero debemos ver qué es lo que ganamos a cambio de este tiempo extra, y por supuesto además preguntarse qué pasa a la larga, ¿realmente perdemos tiempo, o lo estamos ganando?.
Respondiendo a la primera pregunta, lo que ganamos es calidad, puesto que como mencioné ya reiteradamente, la prueba unitaria nos garantizará correcto funcionamiento (de lo que nosotros establezcamos). Ahora, ¿qué es lo que pasa a la larga?, esto es realmente interesante, puesto que en inicios, "perdemos" tiempo, pero a la larga lo ganamos (y no es una ganancia pequeña, es una gran ganancia de tiempo). Esto es posible, ya que lo bueno de las pruebas unitarias, es que automatizan el proceso de verificar que todo funcione bien. Así que no tendremos que ir manualmente, verificando componente por componente cuál falla (y en qué parte específica).


¿Cómo utilizarlas?
Podemos utilizar una simple función como la siguiente:

[jass]fuction assert takes boolean assertion, string message return nothing
   if ( not(assertion) ) then
       call BJDebugMsg("[Error] " + message)
   endif
endfunction[/jass]

Lo único que nos quedaría sería escribir una prueba unitaria:

[jass]call assert(2 - 1 == 1, "mensaje de error")[/jass]

En este caso, "mensaje de error" nunca será mostrado, ya que [ljass]2 - 1[/ljass] es igual a [ljass]1[/ljass].

Algo importante para recalcar, es que uses mensajes de error claros y útiles, ya que cuando se tenga un proyecto grande, será de gran utilidad.


¿Dónde escribir las pruebas unitarias?
Bueno esto depende de tus preferencias, ya que tranquilamente se pueden escribir directamente en el código que se quiere probar. Yo personalmente recomiendo que se escriban aparte, para mantener un poco mas el orden y no afectar legibilidad.


Algunos ejemplos
Ejemplo 1:
 

Y ya llegando al final de este mini-tutorial/faq (veo después de escribir acerca de un caso real de uso, el mío) solo queda despedirme Smile. Espero que ésta haya sido una lectura agradable y útil.

¡Saludos!
Volver arriba Ir abajo
Trigger.edge

avatar


Barra de Salud : Este usuario es invulnerable ¿Será que es fiel a las normas?

Mensajes Mensajes : 957
Reputación Reputación : 99
Monedas de oro : 1180
Monedas de Platino : 0

Inventario :
Cetro del Rey Armadura Mágica Daga Mística


Mensaje(#) Tema: Re: Comenzando con pruebas unitarias Lun Abr 13, 2015 2:06 pm

Apruebo Wink seria bueno una versión GUI


Volver arriba Ir abajo
muzk
Peón
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 38
Reputación Reputación : 4
Monedas de oro : 186
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Comenzando con pruebas unitarias Lun Abr 13, 2015 4:26 pm

Thelordmarshall escribió:
Apruebo Wink seria bueno una versión GUI

No vale la pena hacerlo en GUI Laughing necesitas tener un componente a ser testeado, x ejemplo, una función. En GUI quedan mejor los tests manuales, que si bien no pueden automatizarse, se pueden hacer de forma rigurosa y estándar para asegurar la calidad.

Y en el caso de JASS worth solo para librerías, y no para todas. Por ejemplo, es distinto testear una librería con funciones matemáticas, que una librería para manejar los daños de las unidades.
Volver arriba Ir abajo
Contenido patrocinado




Mensaje(#) Tema: Re: Comenzando con pruebas unitarias

Volver arriba Ir abajo
 

Comenzando con pruebas unitarias

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» Comenzando con pruebas unitarias
» TODAS LAS PRUEBAS NUCLEARES DE LOS GRANDES DEFENSORES DE LAS NACIONES DE 1945 A 1998
» Comenzando una nueva vida
» Un pequeña idea respecto a las pruebas de rol.
» piloto de pruebas trasgo

Permisos de este foro:No puedes responder a temas en este foro.
Warcraft III - WorldEditor :: Academia :: Area JASS :: Tutoriales Varios-