Test Unitarios y F.I.R.S.T.
Son las bases de todos los tipos de tests y deben cumplir con un conjunto de características para ser considerado como un test unitario.
Características F.I.R.S.T
Fast (Rápido): Un test unitario debe ser rápido porque ejecutamos un gran número de tests cada pocos minutos y se ha demostrado que tener que esperar unos cuantos segundos cada rato, resulta muy improductivo. La rapidez es tan importante que Kent Beck ha desarrollado recientemente una herramienta que ejecuta los tests desde el IDE Eclipse mientras escribimos código, para evitar dejar de trabajar en código mientras esperamos por el resultado de la ejecución. Se llama JUnit Max14.
Independiente (Independent): Significa que un test no puede depender de otros para producir un resultado satisfactorio. No puede ser parte de una secuencia de tests que se deba ejecutar en un determinado orden. Debe funcionar siempre igual independientemente de que se ejecuten otros tests o no.
Repetible (Repeatable): Significa que no altera el estado del sistema. Al ejecutarlo una vez, produce exactamente el mismo resultado que al ejecutarlo veinte veces. No altera la base de datos, ni envía emails ni crea ficheros, ni los borra. Es decir, como si no se hubiera ejecutado.
Pequeño (Small): Significa que el test prueba la mínima cantidad de funcionalidad posible. Esto es, probará un solo comportamiento de un método de una clase. El mismo método puede presentar distintas respuestas ante distintas entradas o distinto contexto. El test unitario se ocupará exclusivamente de uno de esos comportamientos, es decir, de un único camino de ejecución. A veces, la llamada al método provoca que internamente se invoque a otros métodos; cuando esto ocurre, decimos que el test tiene menor granularidad, o que es menos fino. Debemos buscar que se prueben lo que es indivisible. La razón es que un test atómico nos evita tener que usar el depurador para encontrar un defecto en el SUT, puesto que su causa será muy evidente.
Transparente (Transparent): Quiere decir que el test debe comunicar perfectamente la intención del autor del test, es decir que al solo poder leer las líneas de código que conforman el test sabremos el objetivo del mismo sin la necesidad de excesivo análisis.
Last updated
Was this helpful?