MODULO TDD (Test Driven Development)
Frameworks a utilizar: TestNG, Mockito, Selenium, Cactus
Objetivo:
Utilizar la metodología TDD para desarrollar una aplicación Java.
Tipos de pruebas:
- Pruebas unitarias
- Pruebas de caja negra/blanca
- Pruebas de integración
Ciclo de TDD:
1.- Elegir un requerimiento que queramos probar
2.- Escribir la prueba correspondiente
3.- Verificar que la prueba falle
4.- Escribir la implementación (código donde está la funcionalidad probada)
5.- Ejecutar las pruebas automatizadas
6.- Eliminación de la duplicación (refactorización)
7.- Actualizar la lista de requerimientos
Características de las pruebas:
- Variables y métodos deben nombrarse de forma inteligible. Además los métodos deben ser breves y concisos por necesidad.
- Cada prueba debe ser reducida de forma que lo que se pruebe sea un único requerimiento concreto del programa. Para facilitar esta tarea hay que procurar que la responsabilidad del programa se reparta en el código entre los distintos métodos y clases.
- Las pruebas deben lanzarse de manera automática siempre. Para que esto sea posible a veces necesitamos crear una interfaz gráfica de usuario (GUI's -> Selenium).
- Las pruebas son reutilizables e independientes, una prueba no debe verse repercutida por la "memoria" de una prueba anterior.
- Cada prueba incluye distintos "escenarios".
TestNG:
Creamos dos carpetas en cada proyecto:
- src -> contiene el código del programa
- Test -> contiene las pruebas asociadas al código
Los directorios que contienen el fichero de código y la prueba deben ser simétricos por lo que ambos archivos no podrán llamarse igual.
Un clase de prueba está relacionada con una implementación y suele contener muchos métodos de prueba.
Ejemplo 1:
@Test
public void pruebaVentaBilletesTerminal{
//Objeto a probar
TerminalAeropuerto ta = new TerminalAeropuerto();
//Escenario de prueba
String destino = "Cádiz";
int nBilletes= 3;
//Invocación
Resultado r= ta.vendeBillete(destino, nBilletes);
//Comprobación mensaje
assert (r==x): "esto no funciona";
}
Ejemplo 2:
@Test
public void ______________(Object o1, Object o2, ..., Object resultadoEsperado){
Object resultadoReal = ta._________();
assert(resultadoReal == resultadoEsperado): "_____________";
}
No hay comentarios:
Publicar un comentario