Test-Driven Development Juan Carlos Olivares Rojas MSN:

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

Ciclo de vida de desarrollo de software
Ciclo de Vida de Desarrollo de los Sistemas de Información
BizTalk Server 2006 & Test Driven Development Kabel Sistemas S.L.
Lecciones sobre ingeniería de software desde el Software Libre
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
Estructura de un Sistema Operativo
SOFTWARE DE PROGRAMACIÓN
Actividad 16. Estrategias para prueba del software
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
Desarrollo para Entorno Web
DESARROLLO E IMPLEMENTACIÓN DE UN PLUGIN DE GOOGLE WALLET PARA PAGOS ONLINE UTILIZANDO SOFTWARE OPEN SOURCE.
Presentación del estado del arte
Administración de Procesos de Pruebas
Modelo de Desarrollo XP
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Reingeniería del Software
TRADUCTOR DE UN PROGRAMA
Test Driven Development TDD
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.
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
Software Testing Juan Carlos Olivares Rojas MSN:
Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software.
Tema 1: Introducción al análisis y diseño de aplicaciones software
CONCEPTOS BÁSICOS Diseño de Sistemas.
PREPARACIÓN DE PRUEBAS EQUIPO DE TRABAJO: ISABEL MARTÍNEZ MARTÍNEZ Y ERIKA HERRERA HERRERA.
agile-tester-foundation- chapter-2-fundamental-agile-testing- principles-practices-and-processes-1-of-3-
Ingeniería del Software
Programación Extrema Leonardo Ramírez Z.. Contenido Motivación ¿Qué es Programación Extrema? La filosofía detrás de la Programación Extrema El proceso.
Desarrollo de Software Esbelto
Poker Planning Juan Carlos Olivares Rojas MSN:
Introducción a las pruebas del software.
Importancia en la efectividad del:
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
Ing. Noretsys Rodríguez. Definición de Conceptos  Falla: Ocurre cuando un programa no se comporta de manera adecuada. Es una propiedad estadística de.
Metodología de la programación
ASIGNACIÓN DE ROLES.
INGENIERIA DE SOFTWARE
Alexander Aristizabal Ángelo flores herrera
Juan Carlos Olivares Rojas
 Sara Isabel Osorio Alcaraz Ana Isabel Vallejo Grisales 10 Informática 1.
Ingeniería del Software 2002
IDENTIFICACIÓN DEL CICLO DE VIDA DEL SOFTWARE. POLITÉCNICO COLOMBIANO JAIME ISAZA CADAVID.
DISEÑO CURRICULAR Presentado por: Cesar Augusto Sáenz María Alejandra Hernández 1.contenidos curriculares de competencia.
Actividad 20. Métodos de prueba en entornos especializados M.C. Juan Carlos Olivares Rojas Syllabus June, 2009.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Ingeniería de Requerimientos
PROYECTO Algoritmos, Estructuras y Programación I.
Test Driven Development
“ NO HAY NADA MÁS DIFÍCIL DE CONSEGUIR, MÁS ARRIESGADO DE MANTENER NI MÁS INSEGURO DE TENER ÉXITO, QUE ESTAR A LA CABEZA EN LA INTRODUCCIÓN DE UN.
Ciclo de Vida del Software
Mejores Prácticas para el Desarrollo de Software Omar de Jesús Rosales Hernández.
UNIVERSIDAD TECNICA DE MANABI ESTUDIANTE KARINA TOALA CATEDRATICO ING.RENE GARCIA TEMA CASCADA.
Ciclo de desarrollo del software
SOFTWARE Conjunto de programas que le indican al computador qué hacer y cómo operar para generar los resultados esperados. Conjunto de programas que le.
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.
De Informaciòn Gerencial Lcda. Oly Mata.
Proceso de desarrollo de Software
Especificación del Problema Partimos del hecho de un programador no puede resolver un problema que no entiende. Por esta razón, la primera etapa en todo.
UNIVERSIDAD LATINA (UNILA)
Modelo de procesos de software
Tema 7: Ingeniería del software Definición de software El software es: 1. instrucciones (programas de computadora) que cuando se ejecutan proporcionan.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
El Conjunto de Datos de Prueba Auditoría Operativa y de Sistemas de Información.
ALUMNO ALUMNO: DIEGO URES LEGAJO LEGAJO: La prueba unitaria es la herramienta para la Calidad Presentación Trabajo Final de Grado.
Transcripción de la presentación:

Test-Driven Development Juan Carlos Olivares Rojas MSN: Social Network: Facebook, LinkedIn. Hi5

Escribir una clase de test de forma conjunta a la clase que queremos implementar nos ayuda a pensar en los requisitos que deben cumplir los métodos antes de escribirlos. Un test unitario es además la mejor documentación que podemos dar a una clase, no solo muestra como se espera que se use, si no que además puede ejecutarse. Test-Driven

Mientras que los documentos de texto suelen quedar rápidamente obsoletos un test siempre estará actualizado. Corregir un fallo durante la fase de aceptación del producto cuesta varias veces más que corregirlo durante la fase de desarrollo. Test-Driven

Solo hay 3 reglas: No se permite escribir código de producción al menos que sea con el objetivo de escribir una prueba que esta fallando. No se permite escribir más código de prueba del que sea necesario para que la prueba falle. Test-Driven

No se permite escribir más código de producción del que es suficiente para pasar la prueba que falla. TDD realmente funciona pero: Es muy difícil de hacer TDD de manera correcta. Muchos terminan conformándose con hacer pruebas unitarias, pero no TDD. Test-Driven

TDD no es una técnica de prueba!!! Es una técnica de diseño y construcción BDD es una técnica de diseño y codificación que integra tanto pruebas unitarias como de aceptación. Tiene un enfoque desde fuera hacia a dentro. Utiliza un DSL (Lenguaje de Dominio Específico). Test-Driven

Ejemplo Test-Driven Feature: Search In order to learn more As an information seeker I want to find more information when I need it Scenario: Find what I’ looking for Given I am on the Kvasir search page When I search for “cucumber github” Then I should see “”” Behavior Driven Development “”” Feature: Search In order to learn more As an information seeker I want to find more information when I need it Scenario: Find what I’ looking for Given I am on the Kvasir search page When I search for “cucumber github” Then I should see “”” Behavior Driven Development “””

Los DSL aun no están estandarizados del todo se puede utilizar Cucumber junto con Groovy. Test-Driven Given /^I am on the Kvasir search page$/ do visit(‘ end When /^I search for “cucumber github”$/ do fill_in(‘q’, :with => query) click_button(‘go’) end Then /^I should see $/ do |text| response_body.should contain(text) end Given /^I am on the Kvasir search page$/ do visit(‘ end When /^I search for “cucumber github”$/ do fill_in(‘q’, :with => query) click_button(‘go’) end Then /^I should see $/ do |text| response_body.should contain(text) end

Java es actualmente una plataforma multilenguaje. Test-Driven Máquina Virtual Java Java GroovyJRubyJythonScalaClojure???

Razones por las que no se hacen testing: El código es demasiado difícil de testear. El desarrollo de los test está despriorizado y no forma parte integral del proceso de desarrollo. Los programadores no quieren escribir test. Test-Driven

Para la realización de pruebas unitarias en muchos casos se recomienda el uso de “mock” Los mocks son objetos simulados muy parecidos a los “crash dummies” en pruebas de auto. Los mocks se utilizan en “pruebas sintéticas” cuando el objeto real no puede emplearse o es sumamente complejo. Test-Driven

Un ejemplo de mock podría darse en pruebas de integración: un módulo depende de datos proporcionados por la interfaz que aun no está disponible. Otro ejemplo podría ser el acceder a datos que se encuentran en una base de datos. Para fines prácticos se manejan desde un archivo o bien de manera directa. Un mock implementa las mismas funcionalidades que un objeto real. Test-Driven

Los mocks pueden catalogarse como “Fake” cuando devuelven un arreglo de respuestas predeterminadas. En general el ciclo de desarrollo se recomienda que sea: Escuchar al cliente Transcribir los requisitos en historias de usuario Test-Driven

Concretar escribiendo criterios para los test de aceptación Probar/Implementar: Sí, primero las pruebas Entregar y evolucionar. Test-Driven

Para realizar las pruebas se realiza el siguiente ciclo repetitivo: Agregar un test Correr el test y ver las fallas Escribir código Correr de nuevo y ver que todas las pruebas pasen Refactorizar Test-Driven

Para mejorar las historias de usuario se recomienda colocar ejemplo: Example Driven Development. Ejemplo: Test-Driven

Con este enfoque ya sabemos lo que quiere el cliente, por lo tanto ya podemos construir el software adecuado. No se implementa lo que no será usado. Minimizamos errores. Está diseñado para cambiar. Test-Driven

¿Preguntas?