Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Ocurren accidentes

man ls's Diary
Por man ls
departamento el que no prueba no conose , Sección Diarios
Puesto a las Fri Jun 13th, 2003 at 01:39:35 AM CET
En la anterior entrada, pnongrata se preguntaba si hacer pruebas de su aplicación web en local. Conviene aclarar, para los que no gustan de mis historias ultra-específicas, que me lío a hablar de metodologías y pruebas unitarias; quedáis avisados.

 


Antes de nada, responder a una petición: los cv's (chiste malo pillado por fin) de Zemanova y Giovanni. Apto para menores, por supuesto.

El principio en que me voy a basar es el siguiente: cuanto más ligeras las pruebas, más se hacen. No sirve de nada tener un entorno super-complejo que controle las variables en un entorno virtual del copón, porque luego no se usa. Y más cuando están pasando a la historia los laboratorios de testing tradicionales.

Éstos funcionaban de la siguiente manera: cada programador se hacía primero sus pruebas unitarias, luego se pasaba a pruebas funcionales (idealmente hechas por un equipo aparte), y luego se juntaba todo en las pruebas de integración o sistemas (aquí el equipo aparte era una necesidad). Un coñazo tal que se solían saltar las dos primeras fases, y cuando se llegaba a integración, no era raro encontrarse con miles de errores. Y no es en sentido figurado: yo he visto, en una base de datos al efecto que no tenía ni dos años, el error número 10 000. (Sí abuelo sí, tómese su medicina.)

Gracias a la llegada de las metodologías ligeras, como Xtreme Programming, Test Driven Development o FDD, se vio a las claras que este proceso no funcionaba. Y es que estas pruebas unitarias son un coñazo que apenas sirve para nada; los tests de regresión (probar que todo lo anterior sigue funcionando) cuestan sudor y tinta china, y todo lo que no sea automático se hace mal o no se hace. Por eso conviene feriarse un conjunto de pruebas que se ejecuten solas, que funcionan como la red de seguridad en el circo: las cosas seguirán fallando, pero los errores se cazan antes de que sean mortales.

Así que, idealmente, no sólo hay que hacer pruebas en local (que serían equivalentes a las funcionales), sino que es mucho mejor currarse unas pruebas unitarias decentes... y guardarlas. El ser unitarias quiere decir que sólo hay que comprobar aspectos atómicos de una aplicación, no transacciones completas de cabo a rabo. El guardarlas, que el código no se tira; se sube al cvs. Para cada clase importante, conviene probar los métodos que interese, a ser posible en los escenarios chungos: casos límite, parámetros erróneos... Por ejemplo, si quisiera verificar que mi función de división va bien, haría un caso fácil (10/2), uno más complicado (5/7), uno negativo (-7 / 5) y uno con mala hostia (5 / 0 y comprobar que me tira una excepción).

Después, tras cada cambio se ejecutan todas juntas, con lo que te aseguras de que la aplicación sigue funcionando. La motivación de que las pruebas se guardan para otras ocasiones, y se ejecutan fácilmente, hace que lo que antes era un coñazo pase a ser una delicia: te da la seguridad de que tu trabajo funciona.

La librería JUnit para Java te permite hacer los tests de regresión en un momento, y está portada a muchos lenguajes. Cada TestCase contiene varios métodos de prueba, que verifican un aspecto específico de tu aplicación.

Sí, os estoy viendo ahí al fondo: os preguntáis que de dónde vais a sacar el tiempo para escribir estos tests. Muy fácil: del que antes usábais para arreglar los errores una y otra vez. Si a alguien le interesa, puedo dar cifras del tiempo que se gana basadas en mi experiencia, pero de eso que se preocupen los gerentes; lo importante es que la actividad del currito se vuelve mucho más gratificante.

La forma de hacer pruebas en una aplicación web es un poco más compleja que en una aplicación de escritorio normal, sólo hay que currárselo un pelín. Así que vamos a dejarlo para otra entrada, si os parece.

< ¡El año de GNU/Linux! Esto lo he oído antes. (22 comments) | Software libre y personas disminuidas (8 comments) >
Enlaces Relacionados
· escomposlinux.org
· si hacer pruebas de su aplicación web en local
· mis historias ultra-específicas
· una petición
· Zemanova
· Giovanni
· metodologías ligeras
· JUnit
· está portada a muchos lenguajes
· More on man ls's Diary
· Also by man ls

Encuesta
Cuando programo pruebo
· que compile 19%
· que arranque 0%
· que vaya así por encima 33%
· lo que se me ocurre 28%
· unitariamente 0%
· ... y regresivamente 9%
· pues yo pruebo a saltarme los coñazos de man ls 9%

Votos: 21
Resultados | Otras Encuestas

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Ocurren accidentes | 6 comentarios (6 temáticos, editoriales, 0 ocultos)
Pruebas unitarias: el mito (none / 0) (#1)
por jorginius ("jorginius" en Google Mail) a las Fri Jun 13th, 2003 at 01:15:30 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Por ejemplo, si quisiera verificar que mi función de división va bien, haría un caso fácil (10/2), uno más complicado (5/7), uno negativo (-7 / 5) y uno con mala hostia (5 / 0 y comprobar que me tira una excepción).

Eso es worderfuloso hasta que llegas y tienes que probar tu clase, perteneciente a la lógica de negocio, con los acoplamientos habituales con el resto de su mismo paquete, y para ello tienes que simular medio sistema para poder ver si funciona como piensas o no.

Yo lo que suelo hacer (vale, soy un vago y no sirvo de referente, pero de todas formas...) es escribir las pruebas, que además me sirven para ir viendo cómo voy a implementar los casos de uso, y hacer las pruebas sólo cuando tengo todas las piezas (o al menos todas las piezas que se interrelacionan para un caso de uso concreto).

De acuerdo que si falla, a veces no sabrás que es exactamente lo que está fallando, pero el esfuerzo es mucho menor %}.

En fin, que eso de probar los "aspectos atómicos", chungo lo veo... Al menos para lo que suelo escribir.



Esto me gustaría verlo en portada (none / 0) (#4)
por Ariel a las Sat Jun 14th, 2003 at 10:43:57 AM CET
(Información Usuario) http://www.milugar.net

Sí señor. Una de las cosas que más me gusta de Libertonia es que en portada no sólo aparecen noticias, si no artículos buenos y curraos que no tengan por qué ser noticia. Muestras podeis ver aquí, aquí, y también aquí.

Noticias como que sale una RedHat nueva o que el ayuntamiento de no sé donde va a poner Linux son importantes, pero se leen en cualquier sitio (aunque la calidad de los comentarios de aquí es mucho mayor).

Por eso me parece interesante que artículos como este vayan a portada. Y éste sin duda merece ir.
--
Un saludo,
Visita mi lugar


Ocurren accidentes | 6 comentarios (6 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda