Una nomenclatura para los Tests

Seguro que os habéis encontrado con el problema de cómo nombrar a cada tipo de test, yo ahora mismo me pongo a pensarlo y se me ocurren varias en función de cómo los categorice. De hecho lo normal es que cada proyecto/equipo tenga sus propias convenciones.

Siguiendo con el tema TDD la nomenclatura incluiría estos tipos de test:

Test de Aceptación

Es un test que permite comprobar que el software cumple con un requisito de negocio. En ATDD, un test de aceptación es un ejemplo escrito con el lenguaje del cliente pero que puede ser ejecutado por la máquina.

Algún ejemplo:

Los tests de carga y de rendimiento son de aceptaci´on cuando el cliente los considera requisitos de negocio. Si el cliente no los requiere, serán tests de desarrollo.

Test Funcionales

Todos los tests son en realidad funcionales, puesto que todos ejercitan alguna función del SUT5, aunque en el nivel más elemental sea un método de una clase.

Cuando se habla del aspecto funcional, se distingue entre test funcional y test no funcional.

Un test funcional es un subconjunto de los tests de aceptación. Es decir, comprueban alguna funcionalidad con valor de negocio.

Los tests de aceptación tienen un ámbito mayor porque hay requerimientos de negocio que hablan de tiempos de respuesta, capacidad de carga de la aplicación, etc.;

Test de Sistema

Es el mayor de los tests de integración, ya que integra varias partes del sistema.

Se trata de un test que puede ir, incluso, de extremo a extremo de la aplicación o del sistema.

Se habla de sistema porque es un término más general que aplicación.

Así pues, un test del sistema se ejercita tal cual lo haría el usuario humano, usando los mismos puntos de entrada (aquí sí la interfaz gráfica) y llegando a modificar la base de datos o lo que haya en el otro extremo.

Los tests de sistema son muy frágiles en el sentido de que cualquier cambio en cualquiera de las partes que componen el sistema, puede romperlos. No es recomendable escribir un gran número de ellos por su fragilidad.

Test Unitarios

Son los tests más importantes para el practicante TDD, los ineludibles.

Todo test unitario debe ser:

· Atómico

· Independiente

· Inocuo

· Rápido

Test de Integración

Los tests de integración son la pieza del puzzle que nos faltaba para cubrir el hueco entre los tests unitarios y los de sistema. Se pueden ver como tests de sistema pequeños.

Típicamente también se escriben usando herramientas xUnit y tienen un aspecto parecido a los tests unitarios, sólo que estos pueden romper las reglas.

Como su nombre indica, integración significa que ayuda a unir distintas partes del sistema.

Deja un comentario