Lenguaje Ruby y su entorno



Documentos relacionados
Práctica 7. Pruebas. Introducir conceptos básicos de pruebas unitarias en sistemas orientados a objetos.

Capitulo 3. Test Driven Development

Pruebas de unidad con JUnit

Framework para el desarrollo ágil de aplicaciones

Curso de Python Inicial

Clase Práctica Nº 1 ED 2015

Demo. TDD desde Cero. Acceptance Test Driven Development.

Aseguramiento de la calidad y pruebas de software

Lenguaje Java Avanzado

Introducción al Proceso de Pruebas.

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

MANUAL DE INSTALACIÓN Y CONFIGURACIÓN

Carlos Fontela

Tutoriales de Ayuda al docente: Copias de Seguridad

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

Taller de SELENIUM. Vamos a cacharrear un rato

Opciones Bandeja de Entrada Workflow. Mantenimiento Proyecto Génesis. Universidad Complutense de Madrid

Conectar a unidad de red

Descripción del tutorial. Contenidos.

Ingresar y Reponer Repuestos (Artículos)

WINDOWS : COPIAS DE SEGURIDAD

MANUAL COPIAS DE SEGURIDAD

Estimado usuario. Tabla de Contenidos

Practica creación de tesauros

Herramientas Libres para Desarrollo de Aplicaciones en la Industria del Software. Por Gustavo González

Módulo mod_banners para insertar y visualizar anuncios o publicidad (banners) en Joomla. Contador. (CU00446A)

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.

CONDICIONES PARA EL BUEN FUNCIONAMIENTO DE LOS SERVICIOS ELECTRÓNICO

CONDICIONES FUNDAMENTALES DE LOS SERVICIOS ELECTRÓNICO

Desarrollo de aplicaciones para dispositivos ios Un cliente Twitter

Manual de Instalación del Certificado ACA en Windows 8.1

Manual de usuario sitio web Daruchi

Procedimiento y Pautas básicas a tener en cuenta para la puesta en producción de un sistema

Servicio de Informática

PRINTA Gestión de cuotas de impresión

Desarrollo de Sage Como modificar y mejorar el programa. Miguel Angel Marco Buzunariz Jarandilla de la Vera 1 de Junio de 2014

1. Copias de seguridad.

Elastix Web Services (WSDL) Manual de Usuario

NUEVAS TENDENCIAS EN LA CALIDAD DEL SOFTWARE IGNACIO BAYUGAR

Generación de código para Hibernate desde modelos UML

MIGRACIÓN DEL MOODLE A MESTRE A CASA

I.G.A.E. SOROLLA2 SOROLLA2 MANUAL DE APERTURA. Nota Informativa Nº 1 / de enero de 2013

Desarrolladores: Christian David Merino Cruz. Bryan Alexis Peraza Navas. Erik Alberto Renderos Morales.

Mejor Framework PythonOO + SOLID. Vivir sin Frameworks

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

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Introducción a Protégé

Versión 4 - Tutoriales

Crear usuario en XP. Redes Paso a Paso. Introducción Explicación Paso 1 Paso 2 Paso 3 Paso 4 Paso 5 Paso 6 Paso 7 Paso 8 Paso 9 Paso 10. Descripción.

MODULO 2. WIKIS. 1. Wikis: concepto y características. Curso IAAP Alfabetización en Bibliotecas

Utilización de tarjetas sintonizadoras de radio y TV

Control de Calidad en Desarollo y Implementaciones del FlexiCadastre. Renan Debarry Business Analyst Jr.

2. Ejecutando JMeter en el laboratorio

Manual de NVU Capítulo 5: Las hojas de estilo

Práctica 5. Curso

Es recomendable hacer una primera lectura del Manual de Instrucciones antes de comenzar para tener una visión global del programa.

PS.Vending Almacén Pocket PC

MANEJO DE FICHEROS XML Versión 1.0

Haciendo pruebas sobre Splinter

Instalación de Fedora Core 18 junto a Windows 7.

BDD y Behat. Ricardo tunic en d.o.

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

MEMORIA. Proyecto: zenphp. Resumen de la planificación

Manual de NetBeans y XAMPP

CLASE # 5 TÉCNICAS DE CAJA BLANCA

Recuva funciona muy bien, siempre y cuando se cumplan dos factores fundamentales que son:

Práctica: Compartición y seguridad de los recursos de red

Sage Eurowin Manual de instalación de RECC (Régimen especial de Criterio de Caja)

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

Cobian Backup. Inguralde [Enero 2011]

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

INFORMACIÓN DE NAVEGADORES

comunidades de práctica

TRABAJO DE GRADO PROYECTO PROGRAMA BASE DE DATOS SITUACION ACADEMICA DE LOS ESTUDIANTES DE LA FACULTAD DE CIENCIAS DE LA SALUD UNIVERSIDAD DE LA SALLE

Manual de Usuario. Generador de Pólizas de Sizes & Colors para CONTPAQi Contabilidad

BETA. Sacándole Partido a JUnit. Mocking. formacion@iwt2.org

Programando con Enchanting

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Qué. rol tienes. en clase? en casa? con los amigos?

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

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

Técnicas Avanzadas de Testing Automatizado

Refactoring: otra práctica de la Programación extrema

Manual de rol gestor de GAV para moodle 2.5

2 EL DOCUMENTO DE ESPECIFICACIONES

MANUAL DE INSTALACIÓN DEL COMPONENTE WEBSIGNER JAVA. Versión 4.0

Instituto Politécnico Nacional

CURSO INSTALACION E IMPLEMENTACION ALOJA SOFTWARE HOTEL MODULO 01: Instalación- Datos Generales- Datos Particulares [1]

DBSURE. Disponemos de una copia de la base de datos de forma remota, que podemos contabilizar como segundo juego de copias.

Ejemplos básicos de webmathematica para profesores

Porque hacemos Testing? BY: ALFREDO ALVAREZ

ITLA Tecnólogo en Desarrollo de Software Programación II. Proyecto Final (Sistema de Bancas de Apuestas) Profesor: Raydelto Hernández Perera.

IIC Introducción a la Programación -

3. Qué necesitamos para usar Wordpress?

U.E JUAN DE VELASCO CREAR DATOS EN SQL

Cómo convertir texto de Word en una tabla de datos en Excel (todas las versiones)

all: doctrine: class: sfdoctrinedatabase param: dsn: mysql:host=localhost;dbname= bdd_erhaj username: erhaj password: admin

Construcción y Pruebas de Software

Transcripción:

Lenguaje Ruby y su entorno Curso de Ruby IV: Rspec Pedro Navajas Modelo Laboratorio de Software Libre Escuela Politécnica Superior Universidad de Córdoba 24 de Marzo de 2011 Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 1 / 12

Tabla de contenidos 1 Tests Ejemplo de tests Rspec Rspec: ejercicio práctico Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 2 / 12

Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 3 / 12

Rspec Sección Actual: Tests 1 Tests Ejemplo de tests Rspec Rspec: ejercicio práctico Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 3 / 12

Los tests automátizados no son nada nuevo Tratan de ayudar en el desarrollo Permiten que la dificultad de mantener el código no sea directamente proporcional a la antigüedad del mismo Forman lo que se denomina en muchos casos documentación ejecutable Forman parte del paradigma Test Driven Development, que a su vez forma parte del Behaviour Driven Development Son parte esencial del patrón de diseño red/green/refactor Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 4 / 12

Los tests automátizados no son nada nuevo Tratan de ayudar en el desarrollo Permiten que la dificultad de mantener el código no sea directamente proporcional a la antigüedad del mismo Forman lo que se denomina en muchos casos documentación ejecutable Forman parte del paradigma Test Driven Development, que a su vez forma parte del Behaviour Driven Development Son parte esencial del patrón de diseño red/green/refactor Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 4 / 12

Los tests automátizados no son nada nuevo Tratan de ayudar en el desarrollo Permiten que la dificultad de mantener el código no sea directamente proporcional a la antigüedad del mismo Forman lo que se denomina en muchos casos documentación ejecutable Forman parte del paradigma Test Driven Development, que a su vez forma parte del Behaviour Driven Development Son parte esencial del patrón de diseño red/green/refactor Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 4 / 12

Los tests automátizados no son nada nuevo Tratan de ayudar en el desarrollo Permiten que la dificultad de mantener el código no sea directamente proporcional a la antigüedad del mismo Forman lo que se denomina en muchos casos documentación ejecutable Forman parte del paradigma Test Driven Development, que a su vez forma parte del Behaviour Driven Development Son parte esencial del patrón de diseño red/green/refactor Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 4 / 12

Los tests automátizados no son nada nuevo Tratan de ayudar en el desarrollo Permiten que la dificultad de mantener el código no sea directamente proporcional a la antigüedad del mismo Forman lo que se denomina en muchos casos documentación ejecutable Forman parte del paradigma Test Driven Development, que a su vez forma parte del Behaviour Driven Development Son parte esencial del patrón de diseño red/green/refactor Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 4 / 12

Los tests automátizados no son nada nuevo Tratan de ayudar en el desarrollo Permiten que la dificultad de mantener el código no sea directamente proporcional a la antigüedad del mismo Forman lo que se denomina en muchos casos documentación ejecutable Forman parte del paradigma Test Driven Development, que a su vez forma parte del Behaviour Driven Development Son parte esencial del patrón de diseño red/green/refactor Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 4 / 12

Hay una gran cantidad de frameworks para las pruebas unitarias 1 El framework de testeo más utilizado es JUnit, existente para una gran cantidad de lenguajes: Java, c++, php, python, ruby etc. Sin embargo aquí vamos a usar RSpec, que hace lo mismo pero......con una semántica diferente 1 http://en.wikipedia.org/wiki/list_of_unit_testing_frameworks Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 5 / 12

Hay una gran cantidad de frameworks para las pruebas unitarias 1 El framework de testeo más utilizado es JUnit, existente para una gran cantidad de lenguajes: Java, c++, php, python, ruby etc. Sin embargo aquí vamos a usar RSpec, que hace lo mismo pero......con una semántica diferente 1 http://en.wikipedia.org/wiki/list_of_unit_testing_frameworks Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 5 / 12

Hay una gran cantidad de frameworks para las pruebas unitarias 1 El framework de testeo más utilizado es JUnit, existente para una gran cantidad de lenguajes: Java, c++, php, python, ruby etc. Sin embargo aquí vamos a usar RSpec, que hace lo mismo pero......con una semántica diferente 1 http://en.wikipedia.org/wiki/list_of_unit_testing_frameworks Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 5 / 12

Hay una gran cantidad de frameworks para las pruebas unitarias 1 El framework de testeo más utilizado es JUnit, existente para una gran cantidad de lenguajes: Java, c++, php, python, ruby etc. Sin embargo aquí vamos a usar RSpec, que hace lo mismo pero......con una semántica diferente 1 http://en.wikipedia.org/wiki/list_of_unit_testing_frameworks Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 5 / 12

Sección Actual: Tests Ejemplo de tests 1 Tests Ejemplo de tests Rspec Rspec: ejercicio práctico Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 6 / 12

Ejemplo de tests A continuación vamos a ver el ejemplo en el que se prueba una clase User que tiene un accessor para el nombre class UserTest < Test::Unit::TestCase def setup @user = User.new def test_name_setter assert_nil @user.name, "Nombre no inicializado debe ser nulo." @user.name = "Chuck" assert_equal @user.name, "Chuck", "El nombre debería ser Chuck." Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 7 / 12

Ejemplo de tests A continuación vamos a ver el ejemplo en el que se prueba una clase User que tiene un accessor para el nombre class UserTest < Test::Unit::TestCase def setup @user = User.new def test_name_setter assert_nil @user.name, "Nombre no inicializado debe ser nulo." @user.name = "Chuck" assert_equal @user.name, "Chuck", "El nombre debería ser Chuck." Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 7 / 12

Ejemplo de tests Lo mismo, en RSpec define "User" do before(:each) do @user = User.new it "deberia asignar un valor al nombre mediante el accessor" do @user.name.should be_nil @user.name = "Chuck" @user.name.should equal "Chuck" Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 8 / 12

Ejemplo de tests Lo mismo, en RSpec define "User" do before(:each) do @user = User.new it "deberia asignar un valor al nombre mediante el accessor" do @user.name.should be_nil @user.name = "Chuck" @user.name.should equal "Chuck" Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 8 / 12

Sección Actual: Tests Rspec 1 Tests Ejemplo de tests Rspec Rspec: ejercicio práctico Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 9 / 12

Rspec Un test en Rspec trata de describir la funcionalidad de una clase con una semántica legible En los usos normales de Rspec, dentro del propio test se require la clase que queremos testear Cada fichero en Rspec, hará todas las comprobaciones de funcionalidad necesarias para una única clase Rspec tiene jerarquía dentro de las definiciones de tests, definidas mediante describe, context y it Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 10 / 12

Rspec Un test en Rspec trata de describir la funcionalidad de una clase con una semántica legible En los usos normales de Rspec, dentro del propio test se require la clase que queremos testear Cada fichero en Rspec, hará todas las comprobaciones de funcionalidad necesarias para una única clase Rspec tiene jerarquía dentro de las definiciones de tests, definidas mediante describe, context y it Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 10 / 12

Rspec Un test en Rspec trata de describir la funcionalidad de una clase con una semántica legible En los usos normales de Rspec, dentro del propio test se require la clase que queremos testear Cada fichero en Rspec, hará todas las comprobaciones de funcionalidad necesarias para una única clase Rspec tiene jerarquía dentro de las definiciones de tests, definidas mediante describe, context y it Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 10 / 12

Rspec Un test en Rspec trata de describir la funcionalidad de una clase con una semántica legible En los usos normales de Rspec, dentro del propio test se require la clase que queremos testear Cada fichero en Rspec, hará todas las comprobaciones de funcionalidad necesarias para una única clase Rspec tiene jerarquía dentro de las definiciones de tests, definidas mediante describe, context y it Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 10 / 12

Rspec Tomando como ejemplo el módulo de log desarrollado en la clase anterior, vamos a definir tests para las clases que lo incluyan Vamos a empezar por comprobar el chequeo de errores: require logger-class describe ClaseA do context "medidas de seguridad" do # Esto se ejecutará antes de cada test dentro de este contexto before(:each) do # Esto se ejecutará despues de cada test dentro de este contexto after(:each) do it "debe levantar ArgumentError si el nivel no existe" do it "debe levantar una excepcion si no hay permisos" do Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 11 / 12

Rspec Tomando como ejemplo el módulo de log desarrollado en la clase anterior, vamos a definir tests para las clases que lo incluyan Vamos a empezar por comprobar el chequeo de errores: require logger-class describe ClaseA do context "medidas de seguridad" do # Esto se ejecutará antes de cada test dentro de este contexto before(:each) do # Esto se ejecutará despues de cada test dentro de este contexto after(:each) do it "debe levantar ArgumentError si el nivel no existe" do it "debe levantar una excepcion si no hay permisos" do Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 11 / 12

Rspec Tomando como ejemplo el módulo de log desarrollado en la clase anterior, vamos a definir tests para las clases que lo incluyan Vamos a empezar por comprobar el chequeo de errores: require logger-class describe ClaseA do context "medidas de seguridad" do # Esto se ejecutará antes de cada test dentro de este contexto before(:each) do # Esto se ejecutará despues de cada test dentro de este contexto after(:each) do it "debe levantar ArgumentError si el nivel no existe" do it "debe levantar una excepcion si no hay permisos" do Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 11 / 12

Rspec Lo primero es indicar que para cada test, queremos tener una instancia de nuestra clase ClaseA que incluye el módulo require logger-class describe ClaseA do context "medidas de seguridad" do # Esto se ejecutará antes de cada test dentro de este contexto before(:each) do @obj = ClaseA.new # Esto se ejecutará despues de cada test dentro de este contexto after(:each) do it "debe levantar ArgumentError si el nivel no existe" do it "debe levantar una excepcion si no hay permisos" do Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 12 / 12

Rspec Definimos el comportamiento que esperamos de la clase cuando reciba etiquetas no válidas require logger-class describe ClaseA do context "medidas de seguridad" do # Esto se ejecutará antes de cada test dentro de este contexto before(:each) do @obj = ClaseA.new # Esto se ejecutará despues de cada test dentro de este contexto after(:each) do it "debe levantar ArgumentError si el nivel no existe" do expect { @obj.log(:warnrn, "x") }.to raise_error(argumenterror) it "debe levantar una excepcion si no hay permisos" do Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 12 / 12

Rspec Y definimos el comportamiento que esperamos cuando no se pueda abrir el fichero de logs require logger-class describe ClaseA do context "medidas de seguridad" do # Esto se ejecutará antes de cada test dentro de este contexto before(:each) do @obj = ClaseA.new # Esto se ejecutará despues de cada test dentro de este contexto after(:each) do it "debe levantar ArgumentError si el nivel no existe" do expect { @obj.log(:warnrn, "x") }.to raise_error(argumenterror) it "debe levantar una excepcion si no hay permisos" do @obj.logfile = "/fichero" expect { @obj.log(:warn, "x") }.to raise_error(exception) Pedro Navajas Modelo (UCO) Curso de Ruby Aula de Software Libre 12 / 12