Haciendo de las pruebas tus mejores aliadas

1,266 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,266
On SlideShare
0
From Embeds
0
Number of Embeds
533
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Haciendo de las pruebas tus mejores aliadas

  1. 1. HACIENDO DE LASPRUEBASTus mejores aliadasJohanna Mantilla Duque@senekis
  2. 2. ¿Y QUÉ SE ENTIENDE POR PRUEBAS?Mecanismo de detección de: Errores Regresiones
  3. 3. ¿Y QUÉ SE ENTIENDE POR PRUEBAS? Partes del código Facilita la que no se utiliza refactorización
  4. 4. ¿POR QUÉ UTILIZAR PRUEBAS?Arreglar problemas pequeños cada pocas horas toma menos tiempo que arreglar problemas enormes justo antes de la fecha limite.
  5. 5. ¿POR QUÉ UTILIZAR PRUEBAS? Permiten descubrir errores cometidos sin darse cuenta tanto en el diseño como en la construcción del software.
  6. 6. ¿POR QUÉ UTILIZAR PRUEBAS?Verificación: ¿Estamos construyendo elproducto correctamente? Validación: ¿Estamos construyendo el producto correcto?
  7. 7. ¿CÓMO UTILIZAR LAS PRUEBAS?
  8. 8. AGRUPACIÓN DE PRUEBAS1. Pruebas unitarias ○ Unidades de software: Clases, Modelos, Helpers2. Pruebas de integración ○ Módulos del sistema3. Pruebas del sistema ○ El sistema en su integridad, interacción del usuario
  9. 9. TECNOLOGÍA Te ec Selenium stu Rsp ni t s o nj nt P ha Fabricator b kit a- we r y baFaker C ap Cucumber
  10. 10. PRUEBAS UNITARIASEj. Guardar la dirección a partir de georefenciaciónclass Report field :address, :type => String ... def localize(lat, long) self.address = GeoDataService.address(lat, long) self.save endend
  11. 11. PRUEBAS UNITARIASdescribe "Report Model" do let(:report) { Report.new } class GeoDataService def address(lat, long) Faker::Address.street_address end end...end
  12. 12. Pruebas unitarias UNITARIAS PRUEBASit "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
  13. 13. Pruebas unitarias UNITARIAS PRUEBASTest 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
  14. 14. PRUEBAS DE INTEGRACIÓNdescribe 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
  15. 15. PRUEBAS DEL SISTEMAdescribe "the signup process", :type => :request do let(:user) { Fabricate(:user, :email => user@example.com, :password => caplin)} it "signs me in" do within("#session") do fill_in Login, :with => user@example.com fill_in Password, :with => password end click_link Sign in endend
  16. 16. ¿QUÉ SE DEBE TENER EN CUENTA?Eliminar comportamientos aleatorios
  17. 17. ¿QUÉ SE DEBE TENER EN CUENTA?No depender de la anterior ni de la siguiente
  18. 18. ¿QUÉ SE DEBE TENER EN CUENTA?Funcionar sin conexión a red
  19. 19. ¿QUÉ SE DEBE TENER EN CUENTA?Deben ser independientes del momento en quese ejecutan
  20. 20. ¿QUÉ SE DEBE TENER EN CUENTA?No detallar cada uno de los pasos de tumetodo no decir cómo, sino qué hace
  21. 21. FILOSOFÍAS DE DESARROLLO
  22. 22. Test Driven Development (TDD)Escribir las pruebas primero, luegoimplementación y refactorización.
  23. 23. Test Driven Development (TDD)"El propósito del desarrollo guiado por pruebas eslograr un código limpio que funcione. La idea es quelos requisitos sean traducidos a pruebas, de estemodo, cuando las pruebas pasen se garantizará elsoftware cumple con los requisitos que se hanestablecido." Wikipedia
  24. 24. VENTAJAS TDD● Evita escribir código innecesario● Aplicación de mejor calidad en menos tiempo● Permite al programador centrarse en la tarea actual
  25. 25. BEHAVIOR DRIVEN DEVELOPMENT (BDD)Versión mejorada de TDD que responde lasinquietudes, tales como: ● Cuando iniciar el proceso ● Que probar y qué no probar
  26. 26. BDD BDDScenario: 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"
  27. 27. COVERAGERcovSimplecovCoverage Imagen: https://github.com/colszowka/simplecov
  28. 28. Gracias@senekis @nounproject

×