Test Driven Development

Slides:



Advertisements
Presentaciones similares
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Advertisements

Introducción a C++ Sistemas Operativos
ASP.NET CON C SHARP.
Test-Driven Development
Curso de java básico (scjp)
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Pruebas Unitarias [UTN - Tecnologías de desarrollo de software IDE] 2008 nUnit Ezequiel GhioneEzequiel Ghione [fecha][fecha]
EXCEPCIONES UNIDAD 5.
Herencia en C#.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Uso de variables de tipo referencia
Ejemplo de Programa C++
5. Ingeniería de Pruebas LS4128: Ingeniería del Software II
UNIT TESTING pruebas unitarias pruebas unitarias.
Pruebas de programas Java mediante JUnit
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Tratamiento de listas en Java
Presentación del estado del arte
Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.
Herramientas QA Morax.
Marzo 2007 Lenguajes Visuales Clase III.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Lenguaje de Programación II Manejo de Paquetes Corporación Universitaria del Caribe CECAR.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
JAVA 1.5 Fernando Almeida Octubre Introducción Java Specification Request (JSR) 14Java Specification Request (JSR) 14 propone introducir tipos y.
TALLER DE PROGRAMACIÓN III
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Técnicas avanzadas de programación Interfaces
Colecciones.
Test Driven Development
Introducción a TDD. Enfoque de la Charla Presentar un ejemplo de principio a fin de una funcionalidad de un proyecto. Sin profundizar en las herramientas.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Software Testing: “Tres enfoques para un mismo problema”
1 Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Programación orientada a objetos Capítulo 6 Objetos con buen comportamiento.
Algoritmos y programación III (75.07)
Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software.
Un arreglo es un grupo de variables, llamadas elementos, que contienen valores del mismo tipo. Una representación lógica de un arreglo se muestra de la.
Arreglos de Objetos.
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
Testing en Python Por Cristian Suárez Sistemas Operativos 1 Año 2010.
Departamento de Lenguajes y Sistemas Informáticos escuela técnica superior de ingeniería informática Ingeniería del Software II Implementación metódica.
No es.... Mockito - Mockito es una librería Java para la creación de Mock Object. - Muy usados para el testeo unitario en Test Driven Development,
Diseño de esquema de pruebas Analisis y Diseño 2 Segundo Semestre 2008 Victor Leonel Orozco
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Polimorfismo en C++, ligado dinámico y Métodos Virtuales
Polimorfismo y Funciones Virtuales
EL MUNDO DE LOS OBJETOS PROGRAMANDO EN JAVA.
ECLIPSE.
Programación orientada a objetos
Metaprogramación?, qué es la …
Clases y Objetos en Java
Introducción a C#.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Manejo de Excepciones Agustín J. González ELO329.
Diseño y Programación Orientada a Objetos
Polimorfismo y Métodos Virtuales
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia en C#.
Manejo de Excepciones Agustín J. González ELO329.
Plantillas (Templates)‏
Fundamentos básicos del lenguaje C#. Parte 1 Introducción a C#
Características Generales y Entornos de Desarrollo
Manejo de Excepciones en C++
Objetos con linea de ejecucion propia
Templates (en español: Pantillas, modelos, patrones)‏
Clases abstractas e interfaces
Transcripción de la presentación:

Test Driven Development Bernd Biedermann Tomás Henriquez

Introducción Codificación Clásica TDD (Test Driven Development) Se programa y se prueba Exceso de errores y falta de tiempo TDD (Test Driven Development) Programar pruebas Codificar para la prueba

Que son las Test Units? Programas para probar clases No son pruebas de requerimiento o aceptación Kent Beck, Chrysler C3 Project, Smalltalk Portado a Java, JUnit …

NUnit Testing Framework Version para .NET Introduce los Attributes Utililiza Attributes para encontrar tests dentro del código

NUnit Testing Framework

Attributes TestFixture Test Setup & Teardown ExpectedExeption Ignore

Attributes Ejemplo namespace UnitTestingExamples { using System; using NUnit.Framework; [TestFixture] public class SomeTests [Test] [Ignore(“Nos saltamos esta.")] public void TestOne() // Aquí ponemos codigo de prueba }

Assertion Class Clase para hacer Asserts Contiene un set de funciones para usar en los tests

Assertion Class Ejemplo namespace UnitTestingExamples { using System; using NUnit.Framework; [TestFixture] public class SomeTests [Test] public void TestOne() int i = 4; Assertion.AssertEquals( 4, i ); }

NUnit con TDD Escribir un test. Correr el test. Falla por que el codigo aun no existe! Escribir un esqueleto vacio para que el test compile. Correr el Test. Deberia fallar, o el test no esta bien diseñado. Implementar el codigo que pasa el test. Correr el test. Deberia pasar. Si no lo hace, revisar el codigo Comenzar de nuevo con otro test

Diagrama de Integración

Mock Objects Tests prueban más de una clase Mock Objects aíslan las clases para las pruebas Obtención de feedback

Mock Objects Fáciles de hacer Fáciles de instalar Rápidos Determinísticos (producen resultados predecibles) Permiten una fácil verificación de que se hicieron las llamas correctas en el orden correcto

Mock Objects en la Arquitectura

Un Primer MockObject [Test] public void MiTest () {     Declaracion del Objeto     Creacion de una instancia del Mock     Inicializar el objeto como MockObject     Declarar lo que se espero que pase      Llamar el Metodo;    Verificar }

Mock Object con NMock Para declarar un Mock Object DynamicMock MiMock = new DynamicMock (typeof (Interface));     

Verificar la llamada Declaramos un objeto: Objeto miObjeto = new Objeto(); Lo llamamos con el MockObject: clase.Metodo ((Interface) MiMock.MockInstance); Declaramos lo que esperamos que pase: MiMock.Expect (“MetodoEsperado",valor esperado); llamada al metodo Verificacion: MiMock.Verify ();

Ejemplo Los Gatos interface ICat {     string Name     {         get; set;     }     void Eat ();     void Sleep ();     void Meow (); }

Primera Clase class CatSitter {     ArrayList _cats = new ArrayList ();     public void TakeCareOf(ICat cat)     {         _cats.Add (cat);     }     public virtual void DoWork ()     {         foreach (ICat cat in _cats)         {             FeedCat (cat);         }     }     private void FeedCat (ICat cat)     {         cat.Eat ();     } }

Segunda Clase class LazyCatSitter : CatSitter {     public override void DoWork()     {             // no hace nada     } }

Primer Test [Test] public void LazyCatSitterTest () {     LazyCatSitter lazyCatSitter = new LazyCatSitter();          DynamicMock funnyBunny = new DynamicMock (typeof (ICat));     DynamicMock baerchen = new DynamicMock (typeof (ICat));     lazyCatSitter.TakeCareOf ((ICat) funnyBunny.MockInstance);     lazyCatSitter.TakeCareOf ((ICat) baerchen.MockInstance);     funnyBunny.Expect ("Eat", null); // esperamos que sea invocado      baerchen.Expect ("Eat", null); // el metodo Eat.     lazyCatSitter.DoWork ();     funnyBunny.Verify (); // Verificamos que se haya llamado     baerchen.Verify (); // el metodo }