Pruebas de Unidad y Refactorización

Slides:



Advertisements
Presentaciones similares
Ciclo de vida de desarrollo de software
Advertisements

GESTION DE CALIDAD DE SW
Fundamentos de Diseño de Software INFT.1
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
DISEÑO DE EXPERIMENTOS
ANÁLISIS DE REQUERIMIENTOS
Resolución de Problemas Algoritmos y Programación
Diseño orientado al flujo de datos
DSOO - María Eugenia Valencia
Evaluando Competencias Profesionales a Través de Rúbricas
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
Administración de Procesos de Pruebas
Ingeniería del Software
Versión 2004 Enrique Bañuelos Gómez
Herramientas QA Morax.
Desarrollo Orientado a Objetos con UML
INTELIGENCIA DE NEGOCIOS
TRADUCTOR DE UN PROGRAMA
Test Driven Development
Diseño del Software Diseño de datos Diseño arquitectónico
DISEÑO DE LA INTERFAZ DE USUARIO
Sistema de Información
DISEÑO DE SOFTWARE 1ª. Parte
ASEGURANDO LA CALIDAD DEL CODIGO REFACTORING. Refactorizar (o Refactoring) es realizar una transformación al software preservando su comportamiento, modificando.
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
PROGRAMACIÓN PROCEDIMENTAL
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Material de apoyo Unidad 4 Estructura de datos
Unidad VI Documentación
Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Metodología para solución de problemas
Ingeniería del Software
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
FUNDAMENTOS DE PROGRAMACION
INGENIERÍA DE SOFTWARE
Ingeniería de Software
Representación de Algoritmos
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
Programación Orientada a Objeto
PROGRAMACION ORIENTADA A OBJETOS
Las Pruebas del Software y sus Fundamentos
Software El software permite comunicar al computador los problemas y hace posible que nos comunique las soluciones Los programas son el software del computador.
Elaboración de algoritmos usando lógica de programación
1.4 CLASIFICACION DE LA TECNOLOGIA EN EL DESARROLLO DEL SOFTWARE
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
TIPOS DE PRUEBAS DEL SOFTWARE
Actividad 20. Métodos de prueba en entornos especializados M.C. Juan Carlos Olivares Rojas Syllabus June, 2009.
Desarrollo de lógica algorítmica.
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Ciclo de Vida del Software
Tecnicas del Mantenimiento del Software
Carolina Rangel Felipe Montaño Alexis García
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
INGENIERIA DE SOFTWARE
INTEGRANTES: EVELYN PAYES SOFIA GARCIA DERICK ACEVEDO LEIDY VILLAFUERTE
DISEÑO DE COMPONENTES Y DESARROLLO BASADO EN COMPONENTES
Proceso de desarrollo de Software
Investigación preliminar  Entender la naturaleza del problema  Definir el alcance y las restricciones o limitaciones del sistema  Identificar los beneficios.
6.6 Administración de defectos
Las fases del ciclo de la vida de desarrollo de sistemas
UNIVERSIDAD LATINA (UNILA)
Bachillerato Ingeniería en Informática Fundamentos de Computación.
CICLO DE VIDA DE UN SOFTWARE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de.
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
Este material ha sido desarrollado para alumnos que cursan la asignatura de Programación Básica impartida en el primer semestre en la Facultad de Ingeniería.
Entregables del Proyecto
ALUMNO ALUMNO: DIEGO URES LEGAJO LEGAJO: La prueba unitaria es la herramienta para la Calidad Presentación Trabajo Final de Grado.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Pruebas de Unidad y Refactorización UNIVERSIDAD AUTONOMA DE TLAXCALA FACULTAD DE CIENCIAS BASICAS INGENIERIA Y TECNOLOGIA   2° SEMESTRE MAESTRIA EN CIENCIAS INGENIERIA EN COMPUTACION DISEÑO Y DESARROLLO DE APLICACIONES DE SOFTWARE Pruebas de Unidad y Refactorización Presenta: Germán Bernal Martínez Marzo 26, 2011

Pruebas de Unidad En programación, pruebas de unidad es una forma de probar la operación correcta del código de un módulo. Esto es para asegurar que cada uno de los módulos funcionan separadamente. Después, con las pruebas de integración, se puede asegurar la operación correcta del sistema o subsistema en cuestión. La idea es escribir casos de prueba para cada función o método no trivial en el modulo de tal forma que cada caso es independiente del resto.

Características Para que las pruebas de unidad sean buenas, ellas deben reunir los siguientes requerimientos: Automática: La intervención manual no debería ser requerida. Esto es especialmente útil para integración continua. Completas : deben cubrir la mayor cantidad de código. Repetible o reusable: Las pruebas no deberían ser creadas para que puedan ser ejecutadas solamente una vez. Esto también es útil para integración continua. Independiente: La ejecución de una prueba no debería afectar el desempeño de otra. Profesionales: La evidencia debe ser considerada como el código, con el mismo profesionalismo, documentación, etc.

Ventajas El objetivo de las pruebas de unidad es aislar cada parte del programa y mostrar que las partes individuales son correctas. Proveer un contrato escrito que la pieza de código deber satisfacer. Estas pruebas aisladas proveen cinco ventajas básicas: Promover cambio: Las pruebas de unidad facilitan al programador cambiar el código para mejorar su estructura (lo cual ha sido llamado refactorización), dado que ellas permiten pruebas de los cambios y así asegurar que los nuevos cambios no contienen errores. Simplifica la Integración: Dado que conduce a la fase de integración con un alto grado de seguridad de que el código esta funcionando apropiadamente. Esto facilitará las pruebas de integración. Documentar código: La propia evidencia es la documentación del código porque ahí tu puedes ver como usarlo.

Ventajas Separación de interface e implementación: Dado que solamente la interacción entre los casos de prueba y unidades bajo prueba son las interfaces de lo posterior, se puede cambiar cualquiera de los dos sin afectar lo otro, algunas veces unos objetos para simular el comportamiento de objetos complejos. Los errores son mas limitados y más fácil de localizar: Dado que tenemos pruebas de unidad que pueden exponerlos.

Limitaciones Es importante darse cuenta que la prueba de unidad no encuentra todos los errores en el código. Por definición, solamente unidades probadas por si mismas. Por lo tanto no encuentra errores de integración, problemas de desempeño y otros problemas que afectan al sistema entero. Además podría no ser trivial anticipar todos los casos especiales de las entradas que de hecho recibe la unidad de programa bajo estudio. Pruebas de unidad son solamente efectivas si son usadas en conjunción con otras herramientas de SW.

Refactorización La refactorización (del inglés Refactoring) es una técnica de la ingeniería de software para reestructurar un código fuente, alterando su estructura interna sin cambiar su comportamiento externo. A esta actividad se le conoce informalmente como limpiar el código. La refactorización se realiza a menudo como parte del proceso de desarrollo del software: los desarrolladores alternan la inserción de nuevas funcionalidades y casos de prueba con la refactorización del código para mejorar su consistencia interna y su claridad. Los tests aseguran que la refactorización no cambia el comportamiento del código.

Refactorización La refactorización es la parte del mantenimiento del código que no arregla errores ni añade funcionalidad. El objetivo, por el contrario, es mejorar la facilidad de comprensión del código o cambiar su estructura y diseño y eliminar código muerto, para facilitar el mantenimiento en el futuro. Añadir nuevo comportamiento a un programa puede ser difícil con la estructura dada del programa, así que un desarrollador puede refactorizarlo primero para facilitar esta tarea y luego añadir el nuevo comportamiento.

Refactorización El término se creó como analogía con la factorización de números y polinomios. Por ejemplo, x2 − 1 puede ser factorizado como (x + 1)(x − 1), revelando una estructura interna que no era visible previamente (como las dos raíces en -1 y +1). De manera similar, en la refactorización del software, el cambio en la estructura visible puede frecuentemente revelar la estructura interna "oculta" del código original.

Refactorización La refactorización debe ser realizada como un paso separado, para poder comprobar con mayor facilidad que no se han introducido errores al llevarla a cabo. Al final de la refactorización, cualquier cambio en el comportamiento es claramente un bug y puede ser arreglado de manera separada a la depuración de la nueva funcionalidad.

Refactorización Un ejemplo de una refactorización trivial es cambiar el nombre de una variable para que sea más significativo, como una sola letra 't' a 'tiempo'. Una refactorización más compleja es transformar el trozo dentro de un bloque en una subrutina. Una refactorización todavía más compleja es remplazar una sentencia condicional if por polimorfismo.

Refactorización Aunque la limpieza de código se lleva realizando desde hace décadas, el factor clave de la refactorización es realizar de manera intencionada la limpieza separándola de la adición de funcionalidad nueva, usando un catálogo conocido de métodos útiles de refactorización, para después comprobar el código ejecutando las pruebas unitarias, sabiendo que cualquier cambio en el comportamiento significa que se ha introducido un error. La refactorización es un aspecto importante de la programación extrema.

Refactorización El libro de Martin Fowler Refactoring es la referencia clásica. Aunque la refactorización de código se ha llevado a cabo de manera informal durante años, la tesis doctoral de William F. Opdyke (1993) es el primer trabajo conocido que examina específicamente esta técnica. Todos estos recursos proporcionan un catálogo de métodos habituales de refactorización. Un método de refactorización tiene una descripción de cómo aplicar el método e indicaciones sobre cuándo debería (o no debería) aplicarse.

Fin