SlideShare una empresa de Scribd logo
1 de 71
Descargar para leer sin conexión
Más allá del testing
          Sergio Gil
     Christos Zisopoulos
Estrategias de testing
DDT: Development Driven Testing
DDT: Development Driven Testing




     Escribir los tests después
      de la primera iteración
             del código
Por qué
Por qué

• A veces la especificación no existe es
  difusa, y hay poco tiempo
Por qué

• A veces la especificación no existe es
  difusa, y hay poco tiempo
• Es más fácil para empezar
Por qué

• A veces la especificación no existe es
  difusa, y hay poco tiempo
• Es más fácil para empezar
• Si tienes código ya escrito sin tests, es la
  única manera de que los tenga =;-)
Por qué
Por qué

• Si tu código (ya existente) no está escrito
  con TDD/BDD en mente, es más fácil el
  DDT
Por qué

• Si tu código (ya existente) no está escrito
  con TDD/BDD en mente, es más fácil el
  DDT
• Es mucho mejor que NO testear
Por qué

• Si tu código (ya existente) no está escrito
  con TDD/BDD en mente, es más fácil el
  DDT
• Es mucho mejor que NO testear
• Es lo que hace DHH =;-)
TDD: Test Driven Development
TDD: Test Driven Development




       Escribir los tests
     antes de implementar
           el código
Por qué
Por qué
•   Te fuerza a pensar en el código y en su diseño
    antes de escribirlo
Por qué
•   Te fuerza a pensar en el código y en su diseño
    antes de escribirlo

•   Te fuerza tener contratos de interacción concretos
    entre los componentes de tu código
Por qué
•   Te fuerza a pensar en el código y en su diseño
    antes de escribirlo

•   Te fuerza tener contratos de interacción concretos
    entre los componentes de tu código

•   Escribir un método cuyos resultados ya conoces
    es más fácil que escribirlo y luego imaginar cuál
    será su salida
Por qué
•   Te fuerza a pensar en el código y en su diseño
    antes de escribirlo

•   Te fuerza tener contratos de interacción concretos
    entre los componentes de tu código

•   Escribir un método cuyos resultados ya conoces
    es más fácil que escribirlo y luego imaginar cuál
    será su salida

•   Si quieres refactorizar un método, te asegura que
    no vas a romper nada
BDD: Behaviour Driven Testing
BDD: Behaviour Driven Testing




  Escribir, antes de implementar,
    especificaciones que luego
        sirvan para testear
Por qué
Por qué
• Es descriptivo
Por qué
• Es descriptivo
• Sirve de documentación (es legible por
  humanos normales)
Por qué
• Es descriptivo
• Sirve de documentación (es legible por
  humanos normales)
• Ayuda a crear mejores modelos y mejores
  interacciones entre ellos
Por qué
• Es descriptivo
• Sirve de documentación (es legible por
  humanos normales)
• Ayuda a crear mejores modelos y mejores
  interacciones entre ellos
• Es más fácil de escribir
Patrones y buenas prácticas
El buen código es
 fácil de testear
El buen código es
 fácil de testear



El código fácil de
testear es bueno
El buen código es
 fácil de testear



El código fácil de
testear es bueno
Números mágicos
Números mágicos
• Hasta 7 acciones por controlador
Números mágicos
• Hasta 7 acciones por controlador
• Hasta 10 líneas por acción
Números mágicos
• Hasta 7 acciones por controlador
• Hasta 10 líneas por acción
• Si te hace falta más, sepáralo, te falta algo:
 • Un modelo
 • Un controlador
 • Una librería
Ley de Deméter
Ley de Deméter

• “Habla sólo con tus inmediatos amigos”
Ley de Deméter

• “Habla sólo con tus inmediatos amigos”
• Un objeto debería asumir lo mínimo
  posible acerca de la estructura o
  propiedades de nada más, incluyendo sus
  subcomponentes
post.comments.map(&:owner).map(&:email)
post.comments.map(&:owner_email)
post.commentator_emails
post.comments.map(&:owner).map(&:email)
post.comments.map(&:owner_email)
post.commentator_emails



           ¡Más fácil de mockear!
#   Mal:
#
#   post
#   post.coments
#   post.comments.map(&:owner)
#   post.comments.map(&:owner).map(&:email)

before(:each) do

    @owner = User.new
    @owner.stubs(:email).returns('christos@the-cocktail.com')

    @comment = Comment.new
    @comment.stubs(:owner).returns(@owner)

  @post = Post.new
  @post.stubs(:comments).returns([@comment])
end

specify 'should return a list of comentator emails' do
    post.comments.map(&:owner).map(&:email).should.equal ['christos@the-cocktail.com']
end
# Bien:
#
# comment.owner_emails    -> owners.map(&:email)
# post.commentator_emails -> comments.map(&:owner_emails)
#

before(:each) do
  @post = Post.new
  @post.stubs.(:commentator_emails).returns(['christos@the-
cocktail.com'])
end

specify 'should return a list of comentator emails' do
    post.commentator_emails.should.equal ['christos@the-cocktail.com']
end
@@valid_model_attributes
@@valid_model_attributes


# en test_helper.rb
@@valid_post_attributes = { :title => 'Más allá del testing',
        :created_at => Time.now, :text => 'Bla, bla, bla...' }
@@valid_model_attributes


# en test_helper.rb
@@valid_post_attributes = { :title => 'Más allá del testing',
        :created_at => Time.now, :text => 'Bla, bla, bla...' }


it 'should be invalid without title' do
  @post = Post.new(@@valid_post_attributes.except(:title))
  @post.should.not.validate
end
La decisión es QUÉ testear
La decisión es QUÉ testear


• No testees ActiveRecord
La decisión es QUÉ testear


• No testees ActiveRecord
• Testea las validaciones
La decisión es QUÉ testear


• No testees ActiveRecord
• Testea las validaciones
• Testea las interacciones entre modelos
  (teniendo en cuenta la Ley de Deméter)
La decisión es QUÉ testear
La decisión es QUÉ testear

• Testea siempre los casos límite
La decisión es QUÉ testear

• Testea siempre los casos límite
• Testea las vistas puntualmente
La decisión es QUÉ testear

• Testea siempre los casos límite
• Testea las vistas puntualmente
• Testea los controladores teniendo en
  cuenta la Ley de Deméter
La decisión es QUÉ testear

• Testea siempre los casos límite
• Testea las vistas puntualmente
• Testea los controladores teniendo en
  cuenta la Ley de Deméter
 • Un controlador debería manejar sólo su propio modelo
Algunas herramientas chulas
Rcov
Rcov
Rcov
Rcov



• No es la panacea
Rcov



• No es la panacea
• Pero mola
Rcov



• No es la panacea
• Pero mola
• Uso:
Rcov



• No es la panacea
• Pero mola
• Uso:
 • Gema
Rcov



• No es la panacea
• Pero mola
• Uso:
 • Gema
 • Plugin
Rcov



• No es la panacea
• Pero mola
• Uso:
 • Gema
 • Plugin
 • Rake
Ojo: el test coverage despista a veces




    Combínalo con cosas como
     heckle (¡¡metatesting!!)
Integración contínua
Integración contínua

• Si tienes buenos tests, tardan un rato =;-)
Integración contínua

• Si tienes buenos tests, tardan un rato =;-)
• Durante el desarrollo, sólo ejecutas los
  tests del código que tocas
Integración contínua

• Si tienes buenos tests, tardan un rato =;-)
• Durante el desarrollo, sólo ejecutas los
  tests del código que tocas
• Para todo lo demás, CruiseControl.rb
Integración contínua
¿Preguntas?
Muchas gracias
  sergio.gil@the-cocktail.com
   christos@the-cocktail.com
       the-cocktail.com

Más contenido relacionado

Destacado

Un paseo por los secretos de la localización de videojuegos
Un paseo por los secretos de la localización de videojuegosUn paseo por los secretos de la localización de videojuegos
Un paseo por los secretos de la localización de videojuegosPablo Muñoz Sánchez
 
Mejores prácticas para testing de apps móviles
Mejores prácticas para testing de apps móvilesMejores prácticas para testing de apps móviles
Mejores prácticas para testing de apps móvilesSoftware Guru
 
La localización y el control de calidad de videojuegos (ETIM2012)
La localización y el control de calidad de videojuegos (ETIM2012)La localización y el control de calidad de videojuegos (ETIM2012)
La localización y el control de calidad de videojuegos (ETIM2012)Curri Barceló-Ávila
 
Testing en aplicaciones móviles iOS, Android
Testing en aplicaciones móviles iOS, AndroidTesting en aplicaciones móviles iOS, Android
Testing en aplicaciones móviles iOS, AndroidSlashMobility.com
 
Testing Software
Testing SoftwareTesting Software
Testing Softwareodelorenzi
 
Diseño de interacción, Prototipado y Testing
Diseño de interacción, Prototipado y TestingDiseño de interacción, Prototipado y Testing
Diseño de interacción, Prototipado y TestingJuan Paulo Madriaza
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta
 
Mejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicacionesMejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicacionesSoftware Guru
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Abstracta
 
Programamos con Scratch 9: pruebas y depuración
Programamos con Scratch 9:  pruebas y depuraciónProgramamos con Scratch 9:  pruebas y depuración
Programamos con Scratch 9: pruebas y depuraciónProgramamos
 
SSTQB - Glosario de terminos de pruebas de software
SSTQB  - Glosario de terminos de pruebas de softwareSSTQB  - Glosario de terminos de pruebas de software
SSTQB - Glosario de terminos de pruebas de softwareProfessional Testing
 

Destacado (15)

Taller de Testeo de videojuegos
Taller de Testeo de videojuegos Taller de Testeo de videojuegos
Taller de Testeo de videojuegos
 
Un paseo por los secretos de la localización de videojuegos
Un paseo por los secretos de la localización de videojuegosUn paseo por los secretos de la localización de videojuegos
Un paseo por los secretos de la localización de videojuegos
 
Functional Testing
Functional TestingFunctional Testing
Functional Testing
 
Mejores prácticas para testing de apps móviles
Mejores prácticas para testing de apps móvilesMejores prácticas para testing de apps móviles
Mejores prácticas para testing de apps móviles
 
La localización y el control de calidad de videojuegos (ETIM2012)
La localización y el control de calidad de videojuegos (ETIM2012)La localización y el control de calidad de videojuegos (ETIM2012)
La localización y el control de calidad de videojuegos (ETIM2012)
 
Testing en aplicaciones móviles iOS, Android
Testing en aplicaciones móviles iOS, AndroidTesting en aplicaciones móviles iOS, Android
Testing en aplicaciones móviles iOS, Android
 
Testing Software
Testing SoftwareTesting Software
Testing Software
 
Diseño de interacción, Prototipado y Testing
Diseño de interacción, Prototipado y TestingDiseño de interacción, Prototipado y Testing
Diseño de interacción, Prototipado y Testing
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
 
Mejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicacionesMejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicaciones
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
 
Programamos con Scratch 9: pruebas y depuración
Programamos con Scratch 9:  pruebas y depuraciónProgramamos con Scratch 9:  pruebas y depuración
Programamos con Scratch 9: pruebas y depuración
 
Testing - Ing. Gabriela Muñoz
Testing - Ing. Gabriela MuñozTesting - Ing. Gabriela Muñoz
Testing - Ing. Gabriela Muñoz
 
SSTQB - Glosario de terminos de pruebas de software
SSTQB  - Glosario de terminos de pruebas de softwareSSTQB  - Glosario de terminos de pruebas de software
SSTQB - Glosario de terminos de pruebas de software
 
Ensayo sobre los videojuegos
Ensayo sobre los videojuegosEnsayo sobre los videojuegos
Ensayo sobre los videojuegos
 

Similar a Más allá del testing

Introducción a Behaviour Driven Development
Introducción a Behaviour Driven DevelopmentIntroducción a Behaviour Driven Development
Introducción a Behaviour Driven DevelopmentRicardo Markiewicz
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsSergio Gil
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDDAlfredo Chavez
 
Artesanía de software y desarrollo dirigido por pruebas (tdd)
Artesanía de software y desarrollo dirigido por pruebas (tdd)Artesanía de software y desarrollo dirigido por pruebas (tdd)
Artesanía de software y desarrollo dirigido por pruebas (tdd)Software Guru
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDDAlfredo Chavez
 
Como he vencido mis miedos para dar charlas
Como he vencido mis miedos para dar charlasComo he vencido mis miedos para dar charlas
Como he vencido mis miedos para dar charlasAntonio COBO CUENCA
 
Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nu...
Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nu...Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nu...
Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nu...Francisco Javier Baena Ríos
 
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Agustin Ramos
 
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...Nacho Fanjul Corteguera
 
Curso de accesibilidad web - Módulo 2: Buenas prácticas
Curso de accesibilidad web - Módulo 2: Buenas prácticasCurso de accesibilidad web - Módulo 2: Buenas prácticas
Curso de accesibilidad web - Módulo 2: Buenas prácticasMario Carvajal
 
Buenas practicas en programacion web
Buenas practicas en programacion webBuenas practicas en programacion web
Buenas practicas en programacion webCésar Jodra
 
Introduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de CompostelaIntroduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de CompostelaCarlos Ble
 
Lo que se repite se automatiza
Lo que se repite se automatizaLo que se repite se automatiza
Lo que se repite se automatizascrumecuador
 
¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?Israel Antezana Rojas
 

Similar a Más allá del testing (20)

BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Introducción a Behaviour Driven Development
Introducción a Behaviour Driven DevelopmentIntroducción a Behaviour Driven Development
Introducción a Behaviour Driven Development
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on Rails
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Artesanía de software y desarrollo dirigido por pruebas (tdd)
Artesanía de software y desarrollo dirigido por pruebas (tdd)Artesanía de software y desarrollo dirigido por pruebas (tdd)
Artesanía de software y desarrollo dirigido por pruebas (tdd)
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Como he vencido mis miedos para dar charlas
Como he vencido mis miedos para dar charlasComo he vencido mis miedos para dar charlas
Como he vencido mis miedos para dar charlas
 
Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nu...
Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nu...Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nu...
Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nu...
 
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
 
Curso de accesibilidad web - Módulo 2: Buenas prácticas
Curso de accesibilidad web - Módulo 2: Buenas prácticasCurso de accesibilidad web - Módulo 2: Buenas prácticas
Curso de accesibilidad web - Módulo 2: Buenas prácticas
 
Buenas practicas en programacion web
Buenas practicas en programacion webBuenas practicas en programacion web
Buenas practicas en programacion web
 
Ruby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos RealesRuby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos Reales
 
Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
Visual 3
Visual 3Visual 3
Visual 3
 
Introduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de CompostelaIntroduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de Compostela
 
Lo que se repite se automatiza
Lo que se repite se automatizaLo que se repite se automatiza
Lo que se repite se automatiza
 
¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?
 

Más de Sergio Gil

Five Languages in a Moment
Five Languages in a MomentFive Languages in a Moment
Five Languages in a MomentSergio Gil
 
A [git] workflow
A [git] workflowA [git] workflow
A [git] workflowSergio Gil
 
Acceptance testing with Steak and Capybara
Acceptance testing with Steak and CapybaraAcceptance testing with Steak and Capybara
Acceptance testing with Steak and CapybaraSergio Gil
 
El Desarrollador Total
El Desarrollador TotalEl Desarrollador Total
El Desarrollador TotalSergio Gil
 
Metaprogramación (en Ruby): programas que escriben programas
Metaprogramación (en Ruby): programas que escriben programasMetaprogramación (en Ruby): programas que escriben programas
Metaprogramación (en Ruby): programas que escriben programasSergio Gil
 
Ruby Mola (y por qué)
Ruby Mola (y por qué)Ruby Mola (y por qué)
Ruby Mola (y por qué)Sergio Gil
 

Más de Sergio Gil (7)

Five Languages in a Moment
Five Languages in a MomentFive Languages in a Moment
Five Languages in a Moment
 
A [git] workflow
A [git] workflowA [git] workflow
A [git] workflow
 
The Total IDE
The Total IDEThe Total IDE
The Total IDE
 
Acceptance testing with Steak and Capybara
Acceptance testing with Steak and CapybaraAcceptance testing with Steak and Capybara
Acceptance testing with Steak and Capybara
 
El Desarrollador Total
El Desarrollador TotalEl Desarrollador Total
El Desarrollador Total
 
Metaprogramación (en Ruby): programas que escriben programas
Metaprogramación (en Ruby): programas que escriben programasMetaprogramación (en Ruby): programas que escriben programas
Metaprogramación (en Ruby): programas que escriben programas
 
Ruby Mola (y por qué)
Ruby Mola (y por qué)Ruby Mola (y por qué)
Ruby Mola (y por qué)
 

Último

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 

Último (11)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 

Más allá del testing