Pruebas Unitarias [UTN - Tecnologías de desarrollo de software IDE] 2008 nUnit Ezequiel GhioneEzequiel Ghione [fecha][fecha]

Slides:



Advertisements
Presentaciones similares
Introducción a la programación
Advertisements

Introducción a C#.
ASP.NET CON C SHARP.
Sun Microsystems desarrolló, en 1991, el lenguaje de programación orientado a objetos que se conoce como Java. La intención de Sun era crear un lenguaje.
Curso de java básico (scjp)
Herencia en C#.
Creación y destrucción de objetos
Uso de variables de tipo referencia
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
Lenguaje de programación Java
Pruebas de Unidad y Refactorización
Desarrollo de Aplicaciones para Internet
Técnico en programación de Software
UNIT TESTING pruebas unitarias pruebas unitarias.
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
UNIVERSIDAD LATINA (UNILA)
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java
Herramientas QA Morax.
MATEMÁTICAS TEMAS: 6-7.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Free Pascal 1. Introducción 2. Instalación 3. Uso 4. Documentación 5. Información Adicional.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.

Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Clase Teórica No. 4 Programación IV
Programación con Assertions
Conversión cadena a número
Tema 11: Excepciones Antonio J. Sierra.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Computación II Unidad X Manejo de Excepciones. Presentación de la Unidad Objetivos: –Saber manejar situaciones inesperadas dentro de un programa –Comprender.
USO DE EXCEPCIONES EN JAVA LSC. Natalia Rodríguez Castellón.
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.
Módulo 8: Manejo de Errores y Excepciones
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) ESTRUCTURA DEL LENGUAJE.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Tipo de Errores.
Metodología de Programación Clase 1 Leonel Lagos V
PROGRAMACIÓN ORIENTADA A OBJETOS. introducción La unidad sobre Programación Orientada a Objetos, se centrará sobre sus definiciones y el pilar inicial:
Definición y cumplimiento de responsabilidades Giovanni Hernández P. Nivel 4.
Actividades en el Proceso de desarrollo de Software
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Desarrollador Profesional de Juegos Programación III Unidad I El manejador universal.
TEMA: Tipos de Errores Integrantes del equipo : Chávez Cholula Gisela Ramírez Valerio Ángeles Docente: L.I. Fuentes Cortes Miguel INSTITUTO TECNOLÓGICO.
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
Fundamentos de Ingeniería de Software Facultad de Ingenieria Universidad Distrital Francisco José de Caldas PROGRAMACION ORIENTADA A OBJETOS Asignatura:
Bachillerato Ingeniería en Informática Fundamentos de Computación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
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,
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
Test Driven Development
Transcripción de la presentación:

Pruebas Unitarias [UTN - Tecnologías de desarrollo de software IDE] 2008 nUnit Ezequiel GhioneEzequiel Ghione [fecha][fecha]

ContenidoContenido Definiciones Definiciones Que es una prueba unitaria ? Que es una prueba unitaria ? Que es nUnit ? Que es nUnit ? Beneficios de realizar pruebas unitarias Beneficios de realizar pruebas unitarias Facilitan las modificaciones Facilitan las modificaciones Facilitan la integración de Código Facilitan la integración de Código Conceptos Básicos Conceptos Básicos Atributos Atributos Clase Assert Clase Assert Definiciones Definiciones Que es una prueba unitaria ? Que es una prueba unitaria ? Que es nUnit ? Que es nUnit ? Beneficios de realizar pruebas unitarias Beneficios de realizar pruebas unitarias Facilitan las modificaciones Facilitan las modificaciones Facilitan la integración de Código Facilitan la integración de Código Conceptos Básicos Conceptos Básicos Atributos Atributos Clase Assert Clase Assert

DefinicionesDefiniciones Que es una prueba unitaria ? Que es una prueba unitaria ? Es un procedimiento usado para validar que un modulo de código fuente funciona apropiadamente. Es un procedimiento usado para validar que un modulo de código fuente funciona apropiadamente. Que es nUnit ? Que es nUnit ? Es un framework de software libre que sirve para realizar pruebas unitarias para.NET. Es un framework de software libre que sirve para realizar pruebas unitarias para.NET. Que es una prueba unitaria ? Que es una prueba unitaria ? Es un procedimiento usado para validar que un modulo de código fuente funciona apropiadamente. Es un procedimiento usado para validar que un modulo de código fuente funciona apropiadamente. Que es nUnit ? Que es nUnit ? Es un framework de software libre que sirve para realizar pruebas unitarias para.NET. Es un framework de software libre que sirve para realizar pruebas unitarias para.NET. Sintaxis

Beneficios de realizar pruebas unitarias Facilitan las modificaciones Facilitan las modificaciones Al permitir verificar que los módulos siguen trabajando correctamente después de haber realizado modificaciones. Al permitir verificar que los módulos siguen trabajando correctamente después de haber realizado modificaciones. Facilitan la integración de Código Facilitan la integración de Código Ya que elimina la incertidumbre que genera cada unidad, facilitando posteriormente las pruebas de integración que se realizan cuando se prueba que la interacción de varios módulos funciona correctamente. Ya que elimina la incertidumbre que genera cada unidad, facilitando posteriormente las pruebas de integración que se realizan cuando se prueba que la interacción de varios módulos funciona correctamente. Facilitan las modificaciones Facilitan las modificaciones Al permitir verificar que los módulos siguen trabajando correctamente después de haber realizado modificaciones. Al permitir verificar que los módulos siguen trabajando correctamente después de haber realizado modificaciones. Facilitan la integración de Código Facilitan la integración de Código Ya que elimina la incertidumbre que genera cada unidad, facilitando posteriormente las pruebas de integración que se realizan cuando se prueba que la interacción de varios módulos funciona correctamente. Ya que elimina la incertidumbre que genera cada unidad, facilitando posteriormente las pruebas de integración que se realizan cuando se prueba que la interacción de varios módulos funciona correctamente. Sintaxis

Conceptos Básicos Atributos: Atributos: TestFixture: Indica que una clase tiene métodos de prueba. TestFixture: Indica que una clase tiene métodos de prueba. Test: Marca un método como método de prueba. Test: Marca un método como método de prueba. TestFixtureSetUp / TestFixtureTearDown : El primero se encarga de los preparativos antes de ejecutar una prueba y el segundo se encarga de restaurar los cambios. TestFixtureSetUp / TestFixtureTearDown : El primero se encarga de los preparativos antes de ejecutar una prueba y el segundo se encarga de restaurar los cambios. ExpectedException: Indica que se espera una excepción en la ejecución de un método. ExpectedException: Indica que se espera una excepción en la ejecución de un método. Category: Permite trabajar con grupos de pruebas. Category: Permite trabajar con grupos de pruebas. Explicit: Indica que una prueba debe ser ignorada a menos que se especifique lo contrario. Explicit: Indica que una prueba debe ser ignorada a menos que se especifique lo contrario. Ignore: Indica que se debe ignorar una prueba determinada Ignore: Indica que se debe ignorar una prueba determinada Atributos: Atributos: TestFixture: Indica que una clase tiene métodos de prueba. TestFixture: Indica que una clase tiene métodos de prueba. Test: Marca un método como método de prueba. Test: Marca un método como método de prueba. TestFixtureSetUp / TestFixtureTearDown : El primero se encarga de los preparativos antes de ejecutar una prueba y el segundo se encarga de restaurar los cambios. TestFixtureSetUp / TestFixtureTearDown : El primero se encarga de los preparativos antes de ejecutar una prueba y el segundo se encarga de restaurar los cambios. ExpectedException: Indica que se espera una excepción en la ejecución de un método. ExpectedException: Indica que se espera una excepción en la ejecución de un método. Category: Permite trabajar con grupos de pruebas. Category: Permite trabajar con grupos de pruebas. Explicit: Indica que una prueba debe ser ignorada a menos que se especifique lo contrario. Explicit: Indica que una prueba debe ser ignorada a menos que se especifique lo contrario. Ignore: Indica que se debe ignorar una prueba determinada Ignore: Indica que se debe ignorar una prueba determinada Sintaxis

Conceptos Básicos Clase Assert: Clase Assert: Assert.AreEqual: Prueba que 2 valores son equivalentes. Assert.AreEqual: Prueba que 2 valores son equivalentes. Assert.AreSame: Prueba si 2 objetos hacen referencia a la misma instancia. Assert.AreSame: Prueba si 2 objetos hacen referencia a la misma instancia. Assert.IsTrue: Prueba si una condición es evaluada como Verdadero. Assert.IsTrue: Prueba si una condición es evaluada como Verdadero. Assert.isFalse: Prueba si una condición es evaluada como Falso. Assert.isFalse: Prueba si una condición es evaluada como Falso. Assert.isNull: Prueba por un objeto nulo. Assert.isNull: Prueba por un objeto nulo. Assert.IsNotNull: Prueba por un objeto no nulo. Assert.IsNotNull: Prueba por un objeto no nulo. Hay más métodos en la clase Assert, estos son los principales Hay más métodos en la clase Assert, estos son los principales Clase Assert: Clase Assert: Assert.AreEqual: Prueba que 2 valores son equivalentes. Assert.AreEqual: Prueba que 2 valores son equivalentes. Assert.AreSame: Prueba si 2 objetos hacen referencia a la misma instancia. Assert.AreSame: Prueba si 2 objetos hacen referencia a la misma instancia. Assert.IsTrue: Prueba si una condición es evaluada como Verdadero. Assert.IsTrue: Prueba si una condición es evaluada como Verdadero. Assert.isFalse: Prueba si una condición es evaluada como Falso. Assert.isFalse: Prueba si una condición es evaluada como Falso. Assert.isNull: Prueba por un objeto nulo. Assert.isNull: Prueba por un objeto nulo. Assert.IsNotNull: Prueba por un objeto no nulo. Assert.IsNotNull: Prueba por un objeto no nulo. Hay más métodos en la clase Assert, estos son los principales Hay más métodos en la clase Assert, estos son los principales Sintaxis

Laboratorio Ejemplo de nUnit Ejemplo de nUnit

Crear la clase OperacionesMatemáticas using System; using System.Collections.Generic; using System.Text; namespace PruebasUnitarias { class operacionesMatematicas class operacionesMatematicas { public double Suma(double valor1, double valor2) { return valor1 + valor2; } public double Suma(double valor1, double valor2) { return valor1 + valor2; } public double Resta(double valor1, double valor2) { return valor1-valor2; } public double Resta(double valor1, double valor2) { return valor1-valor2; } public double Multiplica(double valor1, double valor2) { return valor1*valor2; } public double Multiplica(double valor1, double valor2) { return valor1*valor2; } public double Divide(double valor1, double valor2) { public double Divide(double valor1, double valor2) { if (valor2 == 0) if (valor2 == 0) { throw new DivideByZeroException(); throw new DivideByZeroException(); } return valor1 / valor2; return valor1 / valor2; } using System; using System.Collections.Generic; using System.Text; namespace PruebasUnitarias { class operacionesMatematicas class operacionesMatematicas { public double Suma(double valor1, double valor2) { return valor1 + valor2; } public double Suma(double valor1, double valor2) { return valor1 + valor2; } public double Resta(double valor1, double valor2) { return valor1-valor2; } public double Resta(double valor1, double valor2) { return valor1-valor2; } public double Multiplica(double valor1, double valor2) { return valor1*valor2; } public double Multiplica(double valor1, double valor2) { return valor1*valor2; } public double Divide(double valor1, double valor2) { public double Divide(double valor1, double valor2) { if (valor2 == 0) if (valor2 == 0) { throw new DivideByZeroException(); throw new DivideByZeroException(); } return valor1 / valor2; return valor1 / valor2; }

Pasos antes de crear la clase Test Se debe agregar una referencia a nUnit.framework Se debe agregar una referencia a nUnit.framework Se debe compilar la clase operaciones matemáticas, ya que nUnit trabaja sobre archivos.exe Se debe compilar la clase operaciones matemáticas, ya que nUnit trabaja sobre archivos.exe Se debe agregar una referencia a nUnit.framework Se debe agregar una referencia a nUnit.framework Se debe compilar la clase operaciones matemáticas, ya que nUnit trabaja sobre archivos.exe Se debe compilar la clase operaciones matemáticas, ya que nUnit trabaja sobre archivos.exe

Crear la clase TestOperacionesMatemáticas using System; using System.Collections.Generic; using System.Text; namespace PruebasUnitarias { using NUnit.Framework; using NUnit.Framework; [TestFixture()] //Este atributo indica que es una clase de prueba [TestFixture()] //Este atributo indica que es una clase de prueba public class TestOperacionesMatematicas public class TestOperacionesMatematicas { [Test()] //Este atributo indica que es un método de prueba [Test()] //Este atributo indica que es un método de prueba public void pruebaSuma() { public void pruebaSuma() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(10, op.Suma(5, 5), "Prueba suma =10"); Assert.AreEqual(10, op.Suma(5, 5), "Prueba suma =10"); } [Test()] [Test()] public void pruebaResta() public void pruebaResta() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(0, op.Resta(5, 5), "Prueba resta =0"); Assert.AreEqual(0, op.Resta(5, 5), "Prueba resta =0"); } // SIGUE // SIGUE using System; using System.Collections.Generic; using System.Text; namespace PruebasUnitarias { using NUnit.Framework; using NUnit.Framework; [TestFixture()] //Este atributo indica que es una clase de prueba [TestFixture()] //Este atributo indica que es una clase de prueba public class TestOperacionesMatematicas public class TestOperacionesMatematicas { [Test()] //Este atributo indica que es un método de prueba [Test()] //Este atributo indica que es un método de prueba public void pruebaSuma() { public void pruebaSuma() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(10, op.Suma(5, 5), "Prueba suma =10"); Assert.AreEqual(10, op.Suma(5, 5), "Prueba suma =10"); } [Test()] [Test()] public void pruebaResta() public void pruebaResta() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(0, op.Resta(5, 5), "Prueba resta =0"); Assert.AreEqual(0, op.Resta(5, 5), "Prueba resta =0"); } // SIGUE // SIGUE

[Test()] [Test()] public void pruebaMultiplicacion() public void pruebaMultiplicacion() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(81, op.Multiplica(9, 9), "Prueba multiplicacion 1 - 9*9=81"); Assert.AreEqual(81, op.Multiplica(9, 9), "Prueba multiplicacion 1 - 9*9=81"); } [Test()] [Test()] public void pruebaDivision() public void pruebaDivision() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(1, op.Divide(5, 5), "Prueba division 1 - 5/5=1"); Assert.AreEqual(1, op.Divide(5, 5), "Prueba division 1 - 5/5=1"); } [Test] [Test] [ExpectedException(typeof(DivideByZeroException))]//Este atributo indica que se espera una Excepcion [ExpectedException(typeof(DivideByZeroException))]//Este atributo indica que se espera una Excepcion public void pruebaDivisionPorZero() public void pruebaDivisionPorZero() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); op.Divide(5, 0); op.Divide(5, 0); } } //FIN CLASE } //FIN CLASE } //FIN NAME PACE [Test()] [Test()] public void pruebaMultiplicacion() public void pruebaMultiplicacion() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(81, op.Multiplica(9, 9), "Prueba multiplicacion 1 - 9*9=81"); Assert.AreEqual(81, op.Multiplica(9, 9), "Prueba multiplicacion 1 - 9*9=81"); } [Test()] [Test()] public void pruebaDivision() public void pruebaDivision() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(1, op.Divide(5, 5), "Prueba division 1 - 5/5=1"); Assert.AreEqual(1, op.Divide(5, 5), "Prueba division 1 - 5/5=1"); } [Test] [Test] [ExpectedException(typeof(DivideByZeroException))]//Este atributo indica que se espera una Excepcion [ExpectedException(typeof(DivideByZeroException))]//Este atributo indica que se espera una Excepcion public void pruebaDivisionPorZero() public void pruebaDivisionPorZero() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); op.Divide(5, 0); op.Divide(5, 0); } } //FIN CLASE } //FIN CLASE } //FIN NAME PACE

RecomendacionesRecomendaciones No escribas una prueba que pase a la primera. No escribas una prueba que pase a la primera. Comienza por los métodos que pueden devolver null o donde puedan ocurrir excepciones. Comienza por los métodos que pueden devolver null o donde puedan ocurrir excepciones. Empieza escribiendo las pruebas para los métodos donde creas que es más probable que exista una falla. Empieza escribiendo las pruebas para los métodos donde creas que es más probable que exista una falla. Cuando tengas que agregar una nueva funcionalidad a tu código, empieza por realizar las pruebas. Cuando tengas que agregar una nueva funcionalidad a tu código, empieza por realizar las pruebas. Cuando encuentres un error en tu aplicación, aprovecha a escribir una prueba, que exponga el error. Cuando encuentres un error en tu aplicación, aprovecha a escribir una prueba, que exponga el error. No escribas una prueba que pase a la primera. No escribas una prueba que pase a la primera. Comienza por los métodos que pueden devolver null o donde puedan ocurrir excepciones. Comienza por los métodos que pueden devolver null o donde puedan ocurrir excepciones. Empieza escribiendo las pruebas para los métodos donde creas que es más probable que exista una falla. Empieza escribiendo las pruebas para los métodos donde creas que es más probable que exista una falla. Cuando tengas que agregar una nueva funcionalidad a tu código, empieza por realizar las pruebas. Cuando tengas que agregar una nueva funcionalidad a tu código, empieza por realizar las pruebas. Cuando encuentres un error en tu aplicación, aprovecha a escribir una prueba, que exponga el error. Cuando encuentres un error en tu aplicación, aprovecha a escribir una prueba, que exponga el error. Sintaxis

Links de Interes ZaneBug Página de otro testUnitario, que utiliza una sintaxis muy parecida a nUnit ZaneBug Página de otro testUnitario, que utiliza una sintaxis muy parecida a nUnit ZaneBug Definiciones, sintaxis y ejemplos Definiciones, sintaxis y ejemplos PDF con un ejemplo simple paso a paso PDF con un ejemplo simple paso a paso Colabora.Net Un ejemplo un poco más elaborado Colabora.Net Un ejemplo un poco más elaborado Colabora.Net Descripción de los distintos atributos de nUnit Descripción de los distintos atributos de nUnit ZaneBug Página de otro testUnitario, que utiliza una sintaxis muy parecida a nUnit ZaneBug Página de otro testUnitario, que utiliza una sintaxis muy parecida a nUnit ZaneBug Definiciones, sintaxis y ejemplos Definiciones, sintaxis y ejemplos PDF con un ejemplo simple paso a paso PDF con un ejemplo simple paso a paso Colabora.Net Un ejemplo un poco más elaborado Colabora.Net Un ejemplo un poco más elaborado Colabora.Net Descripción de los distintos atributos de nUnit Descripción de los distintos atributos de nUnit Sintaxis