Una idea InsOlentE: No hacer tests de tu implementacion.
Buenas!
Que os parece la idea? una locura no? De que conyo vas a hacer tests si no?
Pues mira, hay un grupo de gente, que dice que hacer tests de tu implementacion esta mal, porque tu implementation cambia, mejora, y entonces tienes que cambiar tus tests. No pasa nada si solo tienes 5 o 6 tests, pero cuando tienes 500 tests y re-estructuras tu codigo porque estaba volviendose eso un chaos que no entendia nadia, pues has tenido que cambiar todos tus tests relacionados con las clases que has re-estructurado, porque estas haciendo tests de tu implementation. Bien, eso es el pan de cada dia para muchos testeros, es lo que hay, y punto, vives con ello.
Bien, por eso la mayoria de gente no hace tests, porque son un conyazo que te cagas, y para que, si dentro de dos meses los vas a cambiar todos!
Tiene que haber una manera mejor de comprobar que tu aplicacion funciona, que hace lo que se supone que tiene que hacer. Da igual, como lo hayas decidido implementar, y por favor cambia la implementation todas las veces que quieras, si haces test de el comporamiento de tu aplicacion, no pasa nada. Por ejemplo:
hago un "post" con cierta informacion de una reserva y en la base de datos se me habra guardado la reserva con esa informacion.
Eso si que mola, y el codigo para hacer tus tests es mucho mas bonito e intuitivo. No tienes que ir "verificando" cada paso de tu implementacion, solo hay que asegurarse que tenga el compartamiento esperado.
Bueno, pues esto, se puede hacer de manera muy bonita usando los Stories the rspec. Aqui va un link si os mola la idea.
http://blog.davidchelimsky.net/articles/2007/10/21/story-runner-in-plain-english
Ta Luek!


Luismi Cavallé dijo
Hey! insolente! Las especificaciones de alto nivel rollo story runner parece que molan un huevo. En eso estoy de acuerdo. En lo que no lo estoy tanto es lo de que los "otros" tests sean un rollo. Hay muchas razones por las que creo que es necesario testear a un nivel de grano más fino. Por ejemplo, podría decirte, así, al azar xD, que en un lenguaje dinámico como Ruby, donde no hay un compilador, simplemente para comprobar ya no que el comportamiento, sino que la sintaxis es correcta, los tests se hacen imprescindibles. Es la respuesta a los excepticos que viene de lenguajes estáticos y no toman en serio nada que puedas desarrollar en Ruby porque "no tiene compilador": "No necesito compilador, escribo pruebas".
Las historias de usuario, desde luego que ejercitan tu código y también pueden servir en este sentido. Sin embargo, son pruebas de muy alto nivel y para tener un nivel de coverage suficiente tendrías que probar todas las posibles entradas y todas las posibles salidas. Esto solo en algunos casos sencillos es posible (tus historias cubren todos los casos) pero a menudo es inviable.
Es solo una razón, de entre otras muchas. Ah! y el testing mola! y engancha!!
7 Enero 2008 | 11:10 PM