TESTS UNITARIOS. keep the bar green to keep the code clean
|
|
|
- Cristóbal Raúl Aguilar Maidana
- hace 8 años
- Vistas:
Transcripción
1 TESTS UNITARIOS keep the bar green to keep the code clean
2 Para qué hacer tests unitarios? Es imposible hacer software libre de defectos. Tiempo del desarrollador: Diseño Análisis Debug Desarrollo Los tests unitarios aumentan la productividad, mejoran la calidad y hacen que el software sea más confiable.
3 Pruebas que podemos hacer Testing Tests del desarrollador Tests automatizados Tests unitarios
4 Los Tests Unitarios deben (I) Ayudar a mejorar la calidad Ayudar a entender el sistema bajo prueba (SUT) Reducir (no introducir) riesgos Tests como especificación Tests como documentación Tests como red de seguridad Repelentes de bugs No causar daño Localización de defectos
5 Los Tests Unitarios deben (II) Ser fáciles de ejecutar Ser fáciles de escribir y mantener Requerir mínimo mantenimiento, mie ntras el sistema evoluciona Automáticos Simples Robustos Self-Checking Expresivos Repetibles Separación de incumbencias
6 Principios (I) Escribir los tests primero (TDD) Diseñar para ser testeable Usar la puerta de entrada primero Comunicar intención No modificar el «sistema bajo prueba» (SUT) Mantener los tests independientes Aislar el SUT (evitar sensibilidad al contexto)
7 Principios (II) Minimizar la superposición de tests Minimizar el código no testeable Mantener la lógica del test fuera del código productivo Verificar una condición por test Separar incumbencias por test Asegurar esfuerzo y responsabilidad proporcionales
8 Qué tipos de tests podemos automatizar? Tests por funcionalidad De aceptación (Pruebas de cliente) De componentes (Diseño del sistema) Unitarios (Diseño del código) Tests transversales a la funcionalidad Usabilidad Exploratorios (Consistencia) De interfaces (Prototipos / Integración)
9 Con qué objetivos automatizamos? Deben estar alineados con todos los objetivos de Calidad. Deseamos automatizar las pruebas regresivas? Deseamos realizar Integración Continua en nuestro Proceso de Desarrollo? Estamos buscando resolver un ítem específico de Aseguramiento de Calidad?
10 Estrategias para automatizar tests Comenzar a automatizar tests desde el inicio del proyecto Elegir la herramienta adecuada xunit frameworks Robot user Scripted UI Seleccionar los casos de prueba a automatizar
11 Frameworks Java junit TestNG.Net MSTest MBUnit NUnit xunit.net Incorporada en Visual Studio Otros HttpUnit DBUnit
12 Organizando los Tests Unitarios xunit Test Suite Test Fixture
13 Test Fixture [Set Up] [Tear Down] Crear el SUT y sus dependencias Inicializarlas en el estado requerido Ejecutar el SUT Verificar Finalizar
14 Estrategias para el Test Fixture Estrategia Set Up Tear Down Set Up / Tear Down Triggering Transient Fresh X Persistent Fresh X X Shared X X X
15 El código es testeable? Dependencias Configuración Estados internos TDD
16 Cómo testear? Testear el camino feliz Verificar las salidas directas del camino feliz Set up de un estado pre-test simple del SUT Ejecutar el SUT, llamando al método a testear Llamar métodos de assert sobre las respuestas del SUT Llamar métodos de assert sobre el estado post-test Verificar caminos alternativos Verificar el comportamiento de las salidas indirectas Optimizar la ejecución y mantenibilidad Variar los argumentos del método SUT Variar el estado pre-test del SUT Controlar las salidas indirectas del SUT via un Test Stub Usar Mock Objects o Test Spies para interceptar y verificar las llamadas salientes a métodos Hacer que los tests corran rápido Hacer que sean fáciles de entender y mantener Diseñar el SUT para ser testeable Reducir el riesgo de bugs no percibidos
17 Organizando los tests Clase de Test por: Clase Funcionalidad Fixture Reutilización de código de test Test superclass Test helper Convenciones de nombres Minimizar tamaño de métodos de test Test Suites Independencia de tests en producción
18 Recursos de verificación Fakes Reemplazan componentes de los cuales depende el SUT, por una implementación liviana Mejoran la performance de los tests Mocks Reemplazan un objeto del SUT para verificar si esta siendo correctamente utilizado por el SUT Stubs Alimentan al SUT con entradas indirectas esperadas Permiten verificar salidas indirectas del SUT Dummies Objetos sin implementación que se pasan como parámetros de métodos del SUT
19 Frameworks NMock2 TypeMock Rhino Mocks
20 Al verificar los resultados Reducir duplicación de código de verificación Revelar la intención de la prueba Evitar la lógica condicional en los tests («ifs» y «loops»)
21 Integración continua Todo el equipo debe trabajar con la versión más reciente Permite detectar problemas de compatibilidad de manera temprana Reduce los riesgos y tiempos de integración Cada desarrollador es responsable de integrar su propio código
22 Code coverage Métrica del grado en que el código de un software es testeado Criterios de coverage Función Sentencia Decisión Condición (true/false) Condición / Decisión
23 Bibliografía xunit Test Patterns: Refactoring Test Code (Gerard Meszaros) Integración Continua (Martin Fowler)
24 FIN
Testing. Es el proceso orientado a demostrar que un programa no tiene errores.
Pruebas de Software Testing Es el proceso orientado a demostrar que un programa no tiene errores. 1. Imposible. 2. Tentación a diseñar tests que no detecten errores. Es la tarea de demostrar que un programa
Tema 5 - Pruebas del software Ingeniería del Software de Gestión II
escuela técnica superior de ingeniería informática Tema 5 - Pruebas del software Ingeniería del Software de Gestión II Objetivos Cuáles son las alternativas para verificar y validar software Qué son las
Pruebas de Software: Herramientas: Pruebas Unitarias. Elisa Herrmann Ingeniería del Software de Gestión
Pruebas de Software: Herramientas: Pruebas Unitarias Elisa Herrmann Ingeniería del Software de Gestión Contenido Qué son Pruebas Unitarias? Frameworks Ventajas Desventajas y limitaciones Mitos sobre Pruebas
Capítulo 1. Fundamentos de las pruebas de software...
l' Indice Prefacio... Capítulo 1. Fundamentos de las pruebas de software............ 1.1. Introducción... 1.2. Principios básicos... 1.2.1. Verificación y validación... 1.3. Tareasbásicas... 1.4. Inspeccionesdecódigo...
Pruebas de Software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008
Pruebas de Software Objetivos de las Pruebas Demostrar al desarrollador y al cliente que el software satisface los requerimientos. Descubrir defectos en el software en que el comportamiento de éste es
Propuesta framework de herramientas para el desarrollo de aplicaciones en un modelo colaborativo. Ricardo Borillo Domenech
Propuesta framework de herramientas para el desarrollo de aplicaciones en un modelo colaborativo Ricardo Borillo Domenech [email protected] Índice Introducción y objetivos Arquitectura básica del sistema
Tecnología hardware y software
Denominación: Desarrollo de software Código : J62.05 Nivel: 4 Sector: Familia: Eje tecnológico: Programación informática, consultoría de informática y actividades conexas. Tecnología hardware y software
Test Driven Development en la plataforma Salesforce
Test Driven Development en la plataforma Salesforce Mitos y verdades Abril 27, 2016 Aldo Fernandez Technical Architect @aldoforce Agenda Plataforma Salesforce Que es TDD? Proceso TDD Un ejemplo de TDD
a. Integración Top Down b. Integración Buttom Up c. Ninguna de las anteriores d. Módulo de integración.
Nombre: Puntaje: 1. Defectos Típicos que son más fáciles de encontrar en las revisiones que en las pruebas dinámicas son los siguientes: A. Desviaciones de las normas. B. Defectos en los requerimientos.
9/9/2009. Introducción. Introducción. Introducción. Métodos Secuenciales. Métodos Secuenciales. Pruebas y La Vida del Ciclo de Desarrollo del Software
Introducción y La Vida del Ciclo de Desarrollo del Software Usualmente las tareas realizadas como parte del desarrollo de un software son modeladas durante el Ciclo de Vida de Desarrollo del Software.
CICLO DE VIDA DEL SOFTWARE
CICLO DE VIDA DEL SOFTWARE 1 CICLO DE VIDA DEL SW Introducción Procesos del ciclo de vida del sw Modelos de proceso del sw 2 INTRODUCCIÓN Definir marco de trabajo A utilizar por todo el personal del proyecto
Estrategias de Pruebas de Software
Estrategias de Software Software Es el proceso de probar el sistema con el fin de encontrar errores antes de la entrega al usuario final. Qué muestran las pruebas errores Concordancia con los requerimientos
Pruebas unitarias en profundidad
Pruebas unitarias en profundidad Luis Alfonso Rey 9º Encuentro Danysoft en Microsoft Agenda Lo que ya sabemos Algunas cosas nuevas Despacito y buena letra Herencia de familia Lo que ya sabemos Qué es
Testing Unitario. Laboratorio de Testing y Aseguramiento de la Calidad del Software
Testing Unitario Laboratorio de Testing y Aseguramiento de la Calidad del Software Construcción de suites Caja blanca/caja negra Cobertura basada en flujo de control Complejidad ciclomática LCov Testing
Técnicas de Pruebas de
Técnicas de Pruebas de Software Lecturas Pruebas de Unidades Pruebas Integración Docente Beatriz E. Florián [email protected] Mayo 3 de 2005 Pruebas Reglas de oro para pruebas Límites de Pruebas: Probar
Plan de estudios ISTQB: Nivel Fundamentos
Plan de estudios ISTQB: Nivel Fundamentos Temario 1. INTRODUCCIÓN 2. FUNDAMENTOS DE PRUEBAS 3. PRUEBAS A TRAVÉS DEL CICLO DE VIDA DEL SOFTWARE 4. TÉCNICAS ESTÁTICAS 5. TÉCNICAS DE DISEÑO DE PRUEBAS 6.
Herramientas de Software para testing: WebInject
Herramientas de Software para testing: WebInject Equipo: Software Seekers Integrantes: Acosta, Marisel - Testing & Qa Ford, Sara - Testing & QA García, Eduardo - Project Leader Ibañez, Fabián - Developer
Desarrollo ágil basado en pruebas de aceptación
Desarrollo ágil basado en pruebas de aceptación Patricio Letelier [email protected] Qué resultados de I+D tenemos? TUNE-UP Process: enfoque y herramienta de apoyo para gestión ágil de proyectos (equipos
Estado del arte sobre el testeo de software en las Pymes de Aragón
Estado del arte sobre el testeo de software en las Pymes de Aragón 12 de Noviembre de 2015 Contenido Introducción Resultados #1 Perfil de la organización #2 Niveles de testing #3 Técnicas de testing #4
Software Tester QA. Programa de Estudio.
Software Tester QA Programa de Estudio Software Tester QA Aprende a construir Planes de Prueba para el Desarrollo de Software, y conviértete en un Software Tester QA participando en Proyectos de Testing
Pruebas de Software. Agenda. Pruebas de Programas Los Niveles de Prueba Diseño de Casos de Prueba
Pruebas de Software R. Casallas Dpto. de Ingeniería de Sistemas y Computación Universidad de los Andes 1 Agenda Pruebas de Programas Los Niveles de Prueba Diseño de Casos de Prueba 2 1 Pruebas de Programas
La ingeniería del software es una disciplina de ingeniería que comprende todos los aspectos de la producción de software.
Ingeniería del Software. Ian Sommerville Introducción. Preguntas de introducción. Qué es el software? Programas de ordenador y la documentación asociada. Los productos de software se pueden desarrollar
Introducción a la Ingeniería de Software. Tema 2: Modelos de Proceso
Introducción a la Ingeniería de Software Tema 2: Modelos de Proceso Agenda Significado del Proceso -seguir, escribir... Modelos de Proceso de Software Metodologías Ágiles Herramientas y Técnicas Modelado
Desarrollo Rápido de Software. Objetivos
Desarrollo Rápido de Software Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1 Objetivos Explicar como un proceso iterativo e evolutivo de desarrollo conduce a una entrega más
Implementación de Componentes
Implementación de Componentes Concepto Un componente es una parte no trivial, casi independiente, y reemplazable de un sistema que llena claramente una funcionalidad dentro de un contexto en una arquitectura
Descripción específica
Descripción específica NÚCLEO: Comercio y Servicios SUBSECTOR: Informática y Comunicación Nombre del Módulo: Planificación de pruebas de software Código: CSTI0192 total: 309 horas Objetivo General: Planificar
Pruebas de Software: Junit. Departamento de Sistemas y Computación Facultad de Ingeniería Universidad de los Andes
Pruebas de Software: Junit Departamento de Sistemas y Computación Facultad de Ingeniería Universidad de los Andes 1 Qué es Junit? Es un framework de pruebas para Java, utilizado para escribir y ejecutar
Certificado en Software Testing por BCS (Londres). Harvard Business School (Delhi).
Certificado en Software Testing por BCS (Londres). Harvard Business School (Delhi). CEO - Co-Founder de Cognitive S.A. CEO - Co-Founder de Bstriker (Ámsterdam). CEO de Nimbuzz Argentina S.A. Director de
ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO FACULTAD DE INFORMÁTICA Y ELECTRÓNICA ESCUELA DE INGENIERÍA EN SISTEMAS DESARROLLO DE UN PROTOTIPO DE PANEL DE CONTROL DE SERVICIO DE HOSTING JAVA PARA LA EMPRESA
CLASE 11: PRUEBAS DE SOFTWARE. Unversidad Simón Bolívar. Prof. Ivette Carolina Martínez
CLASE 11: PRUEBAS DE SOFTWARE Unversidad Simón Bolívar. Prof. Ivette Carolina Martínez Pruebas: Definición Prueba de Software es la ejecución del código usando combinaciones de entradas, en un determinado
Testing Ágil. Experiencia de aproximación 2.0 Junio de 2016
Testing Ágil Experiencia de aproximación 2.0 Junio de 2016 Hacemos un scrum? Índice Objetivos de pruebas Manifiesto ágil Estrategias de pruebas Skills del tester Organización del trabajo: inception y sprints
Verificación. Taller de Programación
Verificación Taller de Programación Error, Defecto y Falla puede generar Un defecto un error humano (interna) que puede generar?! una falla (externa) El software falla cuando No hace lo requerido o Hace
Solution Manager 7.2 Un cambio significativo
Solution Manager 7.2 Un cambio significativo SAP Solution Manager 7.2 es una plataforma integrada, provista por SAP, que permite alinear el negocio con el Área de IT en un único landscape de procesos de
Plan de Pruebas Proyecto: <Sistema de información web para la administración de gimnasio Flex Gym Center>
PAGINA 1-10 Plan de Pruebas Proyecto: Versión: Historial de Revisiones Versión Fecha Autor Descripción 1.0 22/10/15
Ingeniería del Software. Pruebas. Pruebas en el PUD. Las pruebas del software. Diseño de casos de prueba. Pruebas de SI OO
Pruebas Pruebas en el PUD Las pruebas del software Diseño de casos de prueba Pruebas de SI OO 1 Iteración en PUD Planificación de la Iteración Captura de requisitos: Modelo de casos de uso, Modelo de Dominio,...
NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO
PACK FORMATIVO EN DESARROLLO DE APLICACIONES CON TECNOLOGÍA WEB NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO - Identificar la estructura de una página web conociendo los lenguajes
Verificación y Validación (Proceso V&V) Asegurar que el sistema de software cumpla las necesidades del usuario
Verificación y Validación (Proceso V&V) Asegurar que el sistema de software cumpla las necesidades del usuario Objetivos Introducir la verificación y validación de software Describir las fases del proceso
Fundamentos de Pruebas de Software
Fundamentos de Pruebas de Software Referencias básicas Ingeniería de software. Un enfoque práctico. Pressman, R. Quinta edición. Mc. Graw Hill 2002 Ingeniería de software. Sommerville, I. Séptima edición.
Modelos de calidad. Técnicas de prueba del software Estrategias de prueba del software. Calidad del software. Factores de Calidad. producto.
Técnicas de prueba del software Estrategias de prueba del software 1 Modelos de calidad Calidad del software Factores de Calidad Criterios de calidad del proceso producto Métricas del proceso producto
Test de software embebido. Sistemas embebidos para tiempo real
Test de software embebido Sistemas embebidos para tiempo real Objetivos Definir los principales conceptos de test. Identificar las diferencias de test en PC. Explicar los métodos de test embebido: en host
ANEXO TÉCNICO SERVICIO DE PRUEBAS DE SOFTWARE
Contenido 1 INTRODUCCIÓN... 2 1.1 Concepto de calidad y pruebas del software... 2 1.2 Marco de referencia de los servicios a contratar... 2 2 SERVICIO PRUEBAS DE SOFTWARE... 3 2.1 Objetivo... 3 2.2 Características
Análisis de aplicación: Selenium IDE
Análisis de aplicación: Selenium IDE Este documento ha sido elaborado por el Centro de Apoyo Tecnológico a Emprendedores bilib, www.bilib.es Copyright 2011, Junta de Comunidades de Castilla La Mancha.
Automatización de Pruebas con Selenium
D Curso Automatización de Pruebas con Selenium 16 Horas A Coruña, 29 y 30 de Enero 2018 www.vitaedigital.com INTRODUCCIÓN En la actualidad, las herramientas de desarrollo han aumentado la productividad
Fase de Pruebas Introducción.
Fase de Pruebas Introducción. El desarrollo de sistemas de software implica una serie de actividades de producción en las que las posibilidades de que aparezca el fallo humano son enormes. Los errores
SISTEMATIZACIÓN DE LA GENERACIÓN DE PRESUPUESTOS PARA PROYECTOS DE OBRA: SISTEMA DE ADMINISTRACIÓN DE MATERIALES DE TUBERÍA
SISTEMATIZACIÓN DE LA GENERACIÓN DE PRESUPUESTOS PARA PROYECTOS DE OBRA: SISTEMA DE ADMINISTRACIÓN DE MATERIALES DE TUBERÍA PARA INARGOS LTDA. DOCUMENTO DE ARQUITECTURA DE SOFTWARE VERSIÓN 3.0 BOGOTÁ,
CICLOS DE VIDA Y METODOLOGIAS
INGENIERÍA DE SOFTWARE CICLOS DE VIDA Y METODOLOGIAS Rubby Casallas, Andrés Yie Departamento de Sistemas y Computación Facultad de Ingeniería Universidad de los Andes Agenda Contexto Ciclos de vida: Modelo
Matriz de Competencias THEME Mecatrónica con Competencias Parciales/ Unidades de Resultados de Aprendizaje
AREAS DE COMPETENCIA PASOS DE DESARROLLO DE COMPETENCIAS 1. Mantenimiento y garantía de la fiabilidad de los sistemas realizar el mantenimiento programado básico de máquinas y sistemas y seguir los planes
INGENIERÍA MECATRÓNICA EN COMPETENCIAS PROFESIONALES
INGENIERÍA MECATRÓNICA EN COMPETENCIAS PROFESIONALES ASIGNATURA DE SISTEMAS NEUMÁTICOS E HIDRÁULICOS PROPÓSITO DE APRENDIZAJE DE LA ASIGNATURA CUATRIMESTRE El alumno diseñará circuitos neumáticos, hidráulicos,
2.12 Control estadístico vs métricas.
2.12 Control estadístico vs métricas. PRODUCIR UN SISTEMAS, APLICACIÓN O PRODUCTO DE ALTA CALIDAD Para lograr este objetivo se deben emplear métodos efectivos junto con herramientas modernas dentro del
CAPÍTULO I Investigación Preliminar
CAPÍTULO I Investigación Preliminar 1.1 Introducción Según la descripción dada en la página web oficial, Go (conocido también como Golang), es un lenguaje de programación de código abierto que hace simple
Ingeniería de Software. Ingeniería de Requisitos Clase 4
Clase 4 Sebastián Pizard Universidad de la República Actividades de la ingeniería de requisitos Desarrollo de requisitos Gestión de requisitos Planificación Gestión de Cambios Trazabilidad Validación Stakeholders
Técnicas Avanzadas de Testing Automatizado
Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados
Curso: PRUEBAS DE SOFTWARE utilizando Integración Contínua
Curso: PRUEBAS DE SOFTWARE utilizando Integración Contínua PRUEBAS DE SOFTWARE UTILIZANDO INTEGRACIÓN CONTINUA... 1 OBJETIVO... 1 AUDIENCIA... 1 CONTENIDO... 2 BIBLIOGRAFÍA... 2 DOCENTE... 3 MODALIDAD
Unit Testing con PHPUnit y PyUnit
20 Unit Testing con PHPUnit y PyUnit EXTREME PROGRAMMING Hackers & Developers Magazine Año 0, Número 5 En la edición Nº3 de Hackers & Developers Magazine hicimos una introducción al desarrollo dirigido
