Acabo de darme cuenta de porque casi nadie hace baterías de test de casi nada, y no es porque no lo enseñan en la universidad... Acabo de hacerme la batería de test de la función ftruncate (es en la que mas modificaciones he hecho ultimamente con las optimizaciones. Ademas, por algun sitio tenia que empezar...) siguiendo las indicaciones de funcionalidad y errores de OpenGroup y me ocupa 254 lineas... y eso que solo he comentado lo que hace cada test, que ahora me toca programarlo :-/ Ahora bien, con la paliza que me voy a pegar, ¿que deberia hacer, acceder a las funciones a bajo nivel, o hacerlo rollo shell script y que ya que me pego la paliza con los test al menos que sirva para que otros no tengan que implementarselos tambien?
Y en plan recursivo... ¿deberia hacer una bateria de test para la bateria de test para testear que la bateria de test testea correctamente? X-D
Las baterias de test tienen por objeto verificar las entradas de datos y que las salidas producidas son las esperadas.
ResponderEliminarPara ello tienes que coger los casos extremos o casos límites y verificar que lo hace bien... y luego coger valores intermedios conocidos y comprobarlo.
Las pruebas puedes hacerlas bien mediante caja blanca, bien mediante caja negra. Te recomiendo la segunda... ya que puedes ir ir aplicando la bateria de forma recursiva.. cuando falle un modulo del nivel superior, puedes descender por él para encontrar donde falla.
Yo estuve pensando anoche dos cosas:
ResponderEliminar* por un lado el usar las especificaciones de OpenGroup como base, con lo que al menos tendré completitud en la funcionalidad del sistema de archivos y si lo hago bien tambien me servira para luego tener una bateria de test para sistemas de archivos completa y generica y poder publicarla
* y por otro puesto que FUSE al fin y al cabo lo único que hace es de interfaz con una serie de funciones definidas (y que son las tengo que sobrescribir) hacer los test llamándolas directamente a ellas tal y como lo haria el propio FUSE y luego ir añadiendo casos de prueba en las funciones internas a medida que me vaya encontrando fallos. ¿Es a esto a lo que te refieres con hacer las pruebas mediante caja negra?