Introducción a la Computación. Testing en Python. Maximiliano Geier. Facultad de Ciencias Exactas y Naturales, UBA 17/06/2014



Documentos relacionados
Introducción a la Computación. Testing en Python. Maximiliano Geier. Facultad de Ciencias Exactas y Naturales, UBA 13/11/2017

Introducción a la Computación. Testing en Python. Facultad de Ciencias Exactas y Naturales, UBA 28/05/2013

Pruebas de unidad con JUnit

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Hoy terminamos caja blanca

Técnicas Avanzadas de Testing Automatizado

Euclides extendido y Test de primalidad probabiĺıstico

PROCESOS DE RAZONAMIENTO INVERSO: PATRÓN DE DISEÑO ADAPTER EN PYTHON Y PHP, LOS

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

Práctica 5. Curso

Actividades de Divulgación del Centro Atómico Bariloche. Qué hay detrás de un programa de computadora? Daniela Arnica Pablo E. Argañaras.

Matemáticas 1204, 2013 Semestre II Tarea 5 Soluciones

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Lenguaje Ruby y su entorno

Programación I: Funciones y módulos

Testing. Tipos, Planificación y Ejecución de Pruebas

Colegio Salesiano Don Bosco Academia Reparación Y Soporte Técnico V Bachillerato Autor: Luis Orozco. Subneteo

Ejemplos básicos de webmathematica para profesores

Tutorial de Subneteo Clase A, B, C - Ejercicios de Subnetting CCNA 1

mcd y mcm Máximo Común Divisor y Mínimo Común múltiplo José de Jesús Angel Angel jjaa@math.com.mx

Redes de área local: Aplicaciones y servicios WINDOWS

Curso de Python Inicial

Tutorial: Python + Soap Web Service. Daniel Montenegro Cordero

Clase Práctica Nº 1 ED 2015

MÓDULO 2. LEYES FINANCIERAS DE CAPITALIZACIÓN Y DESCUENTO SIMPLE

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Interoperabilidad de Fieldbus

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

En este caso presionamos ENTER para empezar nuestra instalación

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Benemérita Universidad Autónoma del Estado de Puebla

Estructuras de datos: Proyecto 2

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

CLASE # 5 TÉCNICAS DE CAJA BLANCA

Capitulo 3. Test Driven Development

SUBIR UNA PÁGINA WEB A UN SERVIDOR GRATUITO. Tenemos muchos servidores que nos dan su servicio de una forma gratuita, como pueden ser 000webhost.

Artesanía de So-ware y Desarrollo Dirigido por Pruebas

Encriptación en Redes

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS

Nota 2. Luis Sierra. Marzo del 2010

Técnicas de prueba 1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE

Prof. Dr. Paul Bustamante

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Computando lo áspero

Actividades de Divulgación del Centro Atómico Bariloche. Qué hay detrás de un programa de computadora? Daniela Arnica Pablo E. Argañaras.

DOCUMENTACIÓN DE LAS PRUEBAS DE INTEGRACIÓN

Funciones, x, y, gráficos

Transformaciones canónicas

Vínculos entre Word y Outlook

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

6ª Práctica. Matlab página 1

Introducción al Proceso de Pruebas.

Nano Taller de Python

Manual para la utilización de PrestaShop

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

IV. Implantación del sistema.

Inicio Programas Accesorios Explorador de Windows Archivo Nuevo Carpeta

Instalación del Escritorio SSC

Trabajo Opcional La Torre de Babel - Programar en Grupo

Automatización de Pruebas de Software con Herramientas Open Source. Henry Eduardo Carrión Cristóbal

CURSOS PRÁCTICOS SEDEN SEDEN

PowerPoint 2010 Hipervínculos y configuración de acciones

Mejor Framework PythonOO + SOLID. Vivir sin Frameworks

MODELOS DE RECUPERACION

UNIVERSIDAD DE SALAMANCA

Manual de instalación de UdelaRTEX

Sistemas de Programas Universidad Simón Bolívar

MANUAL DEL USUARIO Y GUÍA DE SOPORTE TÉCNICO

Pruebas de Unidad en BlueJ

Demo. TDD desde Cero. Acceptance Test Driven Development.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

RELACIONES DE RECURRENCIA

Política de la base datos WHOIS para nombres de dominio.eu

Porque hacemos Testing? BY: ALFREDO ALVAREZ

Recomendaciones para elaborar bases de datos

MANUAL BÁSICO PARA CLIENTES

Técnicas Avanzadas de Testing Automático

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

INSTALACIÓN Y CONFIGURACION DNS WINDOWS SERVER 2003

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows

Carlos Fontela

Modulo 1 El lenguaje Java

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Práctica 2 Gráficos Vectoriales con SVG (versión )

1.- Inicia outlook y busca el menu herramientas, despues de eso darle click

Parámetros de Configuración Acceso SPIRIT. Perfil BT22

Diagonalización de matrices

TUTORIAL DE PHP. M. en C. Erika Vilches. Parte 2.

Software Criptográfico FNMT-RCM

Internet aula abierta

MANUAL DE INSTALACION PIT MOBILE

Definición de clases: Herencia, polimorfismo, ligadura dinámica

ENVÍO DE POR MEDIO DE SMTP

Introducción al lenguaje de programación java

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario

Pruebas de Programas. Introducción Errores de software. Julio Villena Román. Un error en un programa puede ser algo muy serio

Transcripción:

Introducción a la Computación Testing en Python Maximiliano Geier Facultad de Ciencias Exactas y Naturales, UBA 17/06/2014 Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 1 / 13

Qué era testing? Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 2 / 13

Qué era testing (funcional)? Técnica dinámica de verificación de software. Busca contrastar la salida del programa con un documento que diga lo que se supone que debe hacer (por ejemplo, la especificación). Permite encontrar errores, pero no demostrar su ausencia. Tres niveles: 1 Test de sistema 2 Test integración 3 Test de unidad Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 3 / 13

Test de unidad Test de caja negra: no sé cómo está implementado el módulo y pruebo con entradas que me parezcan interesantes, casos borde, etc. Test de caja blanca: miro la implementación y pruebo con casos representativos para intentar cubrir todo el dominio. Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 4 / 13

Testing en Python Cómo se escriben casos de test en Python? A mano unittest unittest es un módulo para hacer testing de unidad en Python, siguiendo una filosofía de diseño similar a la que tienen JUnit en Java y Beck s Testing Framework en Smalltalk. Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 5 / 13

Testing usando unittest Receta 1 Elegir una unidad de código para probar 2 Importarla import mi_modulo 3 Importar el módulo unittest import unittest 4 Definir una clase que herede de la clase unittest.testcase class TestsDeMiTAD(unittest.TestCase):... 5 Pensar algún caso de test interesante 6 Definir un método para ese caso de test e implementarlo def test_interesante(self):... 7 Volver a 5 mientras sea necesario 8 Terminar con el siguiente bloque de código: if name == " main ": unittest.main() Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 6 / 13

Ejemplo: clase Inversor Definimos una clase sencilla que devuelve el inverso multiplicativo de un número: class Inversor: def init (self, n): self.v = 1/n def valor(self): return self.v Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 7 / 13

Ejemplo: clase Inversor from inversor import Inversor import math import unittest class TestInversor(unittest.TestCase): def test_unidad(self): """Testea que el inverso de la unidad sea la unidad""" def test_cero(self): """Testea que falle cuando se pide el inverso de cero""" def test_otro(self): """Testea un valor que tiene un inverso distinto de si mismo""" def test_doble_inversion(self): """Testea que invertir el inverso de un numero de el numero original""" if name == " main ": unittest.main() Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 8 / 13

Métodos assert Al heredar de la clase unittest.testcase, tenemos acceso a varios métodos que nos hacen más fácil escribir los casos de test. Método assert self.assertequal(a, b) self.asserttrue(x) self.assertlessequal(a, b) self.assertraises(e, f, arg) self.assertitemsequal(a, b) Falla a menos que... a sea igual a b x sea verdadero a sea menor o igual a b llamar a f(arg) dé una excepción de tipo e a tenga los mismos elementos que b Lista completa: http://docs.python.org/3/library/unittest.html#assert-methods Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 9 / 13

Implementando los casos de test Vamos a escribir algunos de los casos de test para ver cómo funciona esto: def test_unidad(self): """Testea que el inverso de la unidad sea la unidad""" self.assertequal(inversor(1).valor(), 1) def test_cero(self): """Testea que falle cuando se pide el inverso de cero""" # llama a Inversor(0) self.assertraises(zerodivisionerror, Inversor, 0) Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 10 / 13

Testeando los tests Para correr los tests: mgeier@ws1:~$ python3.2 test_de_mi_tad.py También se puede ejecutar la siguiente ĺınea: mgeier@ws1:~$ python3.2 -m unittest discover Esta última ĺınea busca todos los casos de test de unittest definidos en la carpeta de trabajo y los ejecuta. Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 11 / 13

Bonus Algunos otros truquitos que les pueden resultar útiles: Para que Python muestre más mensajes cuando ejecuta los casos de test if name == " main ": unittest.main(verbosity=2) Para correr los casos de test desde el intérprete de Python >>> import unittest >>> unittest.main(module= mi_modulo_con_tests, exit=false) Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 12 / 13

Tarea Ejercicio: Implementar casos de test para el TP1 usando unittest. Ejemplos de cosas que pueden probar: 1 Ambos algoritmos calculan correctamente algún ejemplo hardcodeado (por ejemplo, el del enunciado). 2 Si hay un par de puntos con el mismo valor en ambas coordenadas, la distancia mínima es 0. 3 El algoritmo de ordenamiento implementado funciona correctamente para diferentes tamaños de entrada elegidos de forma aleatoria. 4 Ambos algoritmos devuelven pares que se encuentran a la misma distancia (quizás no el mismo) para distintos tamaños de entrada elegidos de forma aleatoria. 5 (Opcional) Cualquier otro caso de test que se les ocurra. Maximiliano Geier (UBA) Clase 25: Testing en Python 17/06/2014 13 / 13