haciendo de las pruebas tus mejores aliadas

28
Johanna Mantilla Duque @senekis Tus mejores aliadas HACIENDO DE LAS PRUEBAS

Upload: johanna-duque

Post on 13-Jul-2015

1.018 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Haciendo de las pruebas tus mejores aliadas

Johanna Mantilla Duque@senekis

Tus mejores aliadas

HACIENDO DE LAS PRUEBAS

Page 2: Haciendo de las pruebas tus mejores aliadas

¿Y QUÉ SE ENTIENDE POR PRUEBAS?

Mecanismo de detección de:

Errores Regresiones

Page 3: Haciendo de las pruebas tus mejores aliadas

¿Y QUÉ SE ENTIENDE POR PRUEBAS?

Partes del códigoque no se utiliza

Facilita la refactorización

Page 4: Haciendo de las pruebas tus mejores aliadas

¿POR QUÉ UTILIZAR PRUEBAS?

Arreglar problemas pequeños cada pocas horas toma menos tiempo que arreglar problemas

enormes justo antes de la fecha limite.

Page 5: Haciendo de las pruebas tus mejores aliadas

¿POR QUÉ UTILIZAR PRUEBAS?

Permiten descubrir errores cometidos sin darse cuenta tanto en el diseño como en la

construcción del software.

Page 6: Haciendo de las pruebas tus mejores aliadas

¿POR QUÉ UTILIZAR PRUEBAS?

Verificación: ¿Estamos construyendo el producto correctamente?

Validación: ¿Estamos construyendo el producto correcto?

Page 7: Haciendo de las pruebas tus mejores aliadas

¿CÓMO UTILIZAR LAS PRUEBAS?

Page 8: Haciendo de las pruebas tus mejores aliadas

1. Pruebas unitarias○ Unidades de software: Clases, Modelos,

Helpers

2. Pruebas de integración○ Módulos del sistema

3. Pruebas del sistema○ El sistema en su integridad, interacción del

usuario

AGRUPACIÓN DE PRUEBAS

Page 9: Haciendo de las pruebas tus mejores aliadas

TECNOLOGÍA

Rspec

Test unit

Phan

tonjs

Cucumber

Capybara-webkit

Selenium

Faker

Fabricator

Page 10: Haciendo de las pruebas tus mejores aliadas

Ej. Guardar la dirección a partir de georefenciación

class Report field :address, :type => String ... def localize(lat, long) self.address = GeoDataService.address(lat, long) self.save endend

PRUEBAS UNITARIAS

Page 11: Haciendo de las pruebas tus mejores aliadas

describe "Report Model" do let(:report) { Report.new }

class GeoDataService def address(lat, long) Faker::Address.street_address end end...end

PRUEBAS UNITARIAS

Page 12: Haciendo de las pruebas tus mejores aliadas

Pruebas unitarias

it "Should save the address field" do GeoDataService.should_receive(:address). with('4.630024', '-74.094973'). and_return('Carrera 42 # 22BIS-2') report.localize('4.630024', '-74.094973') report.address.should == "Carrera 42 # 22BIS-2" end

PRUEBAS UNITARIAS

Page 13: Haciendo de las pruebas tus mejores aliadas

Pruebas unitarias

Test Unit

class TestDeMates < Test::Unit::TestCcase def test_suma assert_equal 4, Mates.run("2+2") assert_equal 4, Mates.run("1+3") assert_equal 5, Mates.run("5+0") assert_equal 0, Mates.run("-5 + 5") endend

PRUEBAS UNITARIAS

Page 14: Haciendo de las pruebas tus mejores aliadas

PRUEBAS DE INTEGRACIÓN

describe ReportsController do let(:report) { Fabricate(:report) }

describe "GET index" do it "Should render the reports index" do get :index assigns[:reports].should == [report] response.should render_template('index') end end

Page 15: Haciendo de las pruebas tus mejores aliadas

PRUEBAS DEL SISTEMA

describe "the signup process", :type => :request do let(:user) { Fabricate(:user, :email => '[email protected]', :password => 'caplin')}

it "signs me in" do within("#session") do fill_in 'Login', :with => '[email protected]' fill_in 'Password', :with => 'password' end click_link 'Sign in' endend

Page 16: Haciendo de las pruebas tus mejores aliadas

¿QUÉ SE DEBE TENER EN CUENTA?

Eliminar comportamientos aleatorios

Page 17: Haciendo de las pruebas tus mejores aliadas

No depender de la anterior ni de la siguiente

¿QUÉ SE DEBE TENER EN CUENTA?

Page 18: Haciendo de las pruebas tus mejores aliadas

Funcionar sin conexión a red

¿QUÉ SE DEBE TENER EN CUENTA?

Page 19: Haciendo de las pruebas tus mejores aliadas

Deben ser independientes del momento en que se ejecutan

¿QUÉ SE DEBE TENER EN CUENTA?

Page 20: Haciendo de las pruebas tus mejores aliadas

No detallar cada uno de los pasos de tu metodo

no decir cómo, sino qué hace

¿QUÉ SE DEBE TENER EN CUENTA?¿QUÉ SE DEBE TENER EN CUENTA?

Page 21: Haciendo de las pruebas tus mejores aliadas

FILOSOFÍAS DE DESARROLLO

Page 22: Haciendo de las pruebas tus mejores aliadas

Test Driven Development (TDD)

Escribir las pruebas primero, luego implementación y refactorización.

Page 23: Haciendo de las pruebas tus mejores aliadas

"El propósito del desarrollo guiado por pruebas es lograr un código limpio que funcione. La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará el software cumple con los requisitos que se han establecido."

Wikipedia

Test Driven Development (TDD)

Page 24: Haciendo de las pruebas tus mejores aliadas

● Evita escribir código innecesario

● Aplicación de mejor calidad en menos tiempo

● Permite al programador centrarse en la tarea actual

VENTAJAS TDD

Page 25: Haciendo de las pruebas tus mejores aliadas

Versión mejorada de TDD que responde las inquietudes, tales como:● Cuando iniciar el proceso● Que probar y qué no probar

BEHAVIOR DRIVEN DEVELOPMENT (BDD)

Page 26: Haciendo de las pruebas tus mejores aliadas

BDD

Scenario: Create a post under a category Given a category exists And I am signed in as an admin When I go to create a new post And I select "Category 1" from "Categories" And I press "Create" And I go to view all posts Then I should see a post with the category "Category 1"

BDD

Page 27: Haciendo de las pruebas tus mejores aliadas

RcovSimplecovCoverage

Imagen: https://github.com/colszowka/simplecov

COVERAGE

Page 28: Haciendo de las pruebas tus mejores aliadas

Gracias

@senekis

@nounproject