SlideShare una empresa de Scribd logo
1 de 89
AutomateTesting Email: snahider@gmail.com Blog: http://snahider.blogspot.com Twitter: @snahider Angel Núñez Salazar
Tipos de Test Es una nomenclatura caótica y no existe una sola categoría. Alcance: Unidades, Componentes, Sistemas Etapa: Integración, aceptación, regresión Enfoque:        Performance, funcionales Visibilidad:   White / Black box El tipo de test se convierte en un atributo.
Sistema Tipos de pruebas según su alcance + Integración Unitarios - Alcance
Unit TestingAutomate Testing Email: snahider@gmail.com Blog: http://snahider.blogspot.com Twitter: @snahider Angel Núñez Salazar
Pruebas Unitarias No pruebes el auto completo si aún no sabes si funcionan los engranes.
Prueba Unitaria (Micro Test) Una prueba unitaria es un fragmento automatizado de código, escrito y mantenido por los desarrolladores, que invoca un método o función para verificar ciertas suposiciones sobre el comportamiento de una única clase.
Nuestro Objetivo Probar las unidades lógicas  o caminos que existen dentro de una clase.
Independencia (Aislamiento) Se realizan de manera separada al resto de la aplicación, de sus dependencias y no acceden a recursos del sistema. ,[object Object]
No depende de archivos de configuración.
No ejercita la clase y todas sus dependencias en simultáneo.,[object Object]
Beneficios de las pruebas unitarias Realizar cambios es mucho más sencillo. Nuevas funcionalidades no rompen las existentes. El proceso de desarrollo se vuelve más flexible. Los problemas se encuentran temprano en el ciclo de desarrollo. El diseño mejora debido a que el código es forzado a ser más desacoplado y testeable. Código que funciona ahora, funcionará en el futuro. La necesidad de pruebas manuales se reduce.
UnitTesting Frameworks Frameworks que nos proveen todos los mecanismos necesarios para ejecutar la lógica específica a nuestra prueba sin preocuparnos por la infraestructura necesaria. ,[object Object]
Java:   JUnit, TestNG, Easyb, JTiger …..
Ruby: Test::Unit, Rspec, Shoulda …..,[object Object]
Organización de un Proyecto Mantener las pruebas separadas del código de producción. Una clase de prueba por cada clase de producción. (Test Fixture per class) Proyecto de Producción Proyecto con las pruebas Referencia al proyecto de producción Test Framework
Organización de un Proyecto Mantener las pruebas separadas del código de producción. Una clase de prueba por cada clase de producción. (Test Fixture per class) Directorio de producción Directorio con las pruebas Test Framework
Creando una prueba Las pruebas se encuentran dentro de una clase marcada con un atributo Las pruebas son métodos marcados con un atributo La prueba pasa al menos que el assert falle o se produzca un error
Creando una prueba Las pruebas se encuentran dentro de una clase. Las pruebas son métodos marcados con una anotación. La prueba pasa al menos que el assert falle o se produzca un error
Asserts Métodos a través de los cuales podemos verificar el éxito o fracaso de nuestras pruebas. Múltiples sobre escrituras para verificar diversos casos. Si la verificación falla, nos devuelven un mensaje con información para poder solucionar el problema. Assert.AreEqualfailed. Expected: <2>, Actual:<0> Podemos agregar mensajes adicionales para que sean mostrados en caso el test falle. Assert.AreEqualfailed. Expected: <2>, Actual: <0>. 1+1 deberíaser 2
Ejecutando las pruebas ,[object Object]
Hot Keys:
Ejecutar las pruebas dentro del contexto actual (Ctrl+R,T)
Ejecutar todas las pruebas (Ctrl+R,A),[object Object]
Menú contextual sobre la clase/package/proyecto y seleccionar "RunAs -> Junit Test".
Hot Keys: "Run As JUnit Test" (Alt+Shift+X,T),[object Object]
Incluir las entradas/estado inicial y el resultado esperado para dichas entradas.[NombreMétodo_EstadoEnPrueba_ComportamientoEsperado] Las convenciones  nos permiten contar con reglas o plantillas que todo el equipo puede seguir para lograr un rápido entendimiento acerca de las pruebas.
Estructura de una prueba Creamos todas las precondiciones y entradas necesarias. ARRANGE Realizamos la acción del objeto que estamos probando. ACT ASSERT Verificamos los resultados esperados.
Nuestra segunda Prueba Realizar la prueba unitaria que verifique :  «El Stack no se encuentra vacío si contiene un elemento»
Don't repeat yourself Para aumentar nuestra productividad utilizaremos un snippet para las pruebas ,[object Object]
Menu: File->New->File
Categoría SnippetDesigner: Seleccionar CodeSnippet,[object Object]
Categoría Java->Editor->Templates
Click en el botón New..,[object Object]
Set Up y TearDown Métodos que nos permiten crear y limpiar datos que son comunes a todas las pruebas.  Set Up For Unit Test Unit Test Tear Down For Unit Test ,[object Object]
Tear Down (Destructor de las pruebas): Limpiar datos que afecten la ejecución entre prueba y prueba.,[object Object]
Ejemplos Set Up y Tear Down Unit Test Test Fixtures
Ejemplos Set Up y Tear Down Unit Test Test Fixtures
Probando Excepciones Forma Tradicional Utilizando Atributos
Probando Excepciones Forma Tradicional Utilizando Atributos ExceptedException Rule
EjercicioProbar una Excepción y utilizar un Set Up Crear una prueba para verificar que al obtener un elemento y el stack se encuentre vacío, se lance una excepción. Crear un método SetUp para remover el código duplicado de los test.
Propiedades de una prueba unitaria Fast: Unos cuantos milisegundos en ejecutarse. Independent: Enfocarse en una única unidad de código. Repeatable: Ejecutarse de manera repetitiva sin intervención. Self-validating: Sin necesidad de reexaminar los resultados. Transparent: Comunicar claramente lo que se busca probar.
Test DoublesAutomate Testing Email: snahider@gmail.com Blog: http://snahider.blogspot.com Twitter: @snahider Angel Núñez Salazar
Testeabilidad La testeabilidad es un atributo de calidad del códigoque permite que las pruebas automatizadas sean realizadas de manera fácil y efectiva. La testeabilidad por lo general es señal de un buen diseño. Si queremos que un código sea testeable, debemos escribir pensando en la testeabilidad. No  cualquier código puede ser probado de manera unitaria.
EjercicioRevisar las pruebas realizadas a un código "no testeable" ¿Cuál es el problema del código de producción?"Es un código muy acoplado"
¿Cuál es el problema? Las clases de alto nivel no deben depender directamente de clases de bajo nivel sino de abstracciones de estas clases.
Inversión de Dependencias Las clases de alto nivel no deben depender directamente de clases de bajo nivel sino de abstracciones de estas clases.
Inyección de Dependencias Proveer las instancias de las clases dependencia desde fuera del ámbito de la clase. Outside
EjercicioRefactorizar el código para mejorar su testeabilidad. Utilizar inyección e inversión de dependencias para desacoplar el código.
¿ Cuál es el siguiente paso ? Ahora que las clases no dependen de una implementación específica, debemos hacer que los test  decidan cual es la dependencia a usar y la inyecten a la clase que se está probando.
EjercicioModificar los test para realizar pruebas unitaras a clases con dependencias. Crear una nueva clase más simple que reemplace a la original solo para los propósitos de las pruebas.
El Mundo Real BD Other Class Other Class Act Other Class Test ClassUnder Test FileSystem Assert Other Class Other Class
¿Cuál es el problema? Responsabilidades de la clase Creación de jerarquía de objetos Lógica de Negocios
Encontrando la solución Responsabilidades de una clase externa Responsabilidades de la clase Creación de jerarquía de objetos Lógica de Negocios
Encontrando la solución Simple Class Act Simple Class Test ClassUnder Test Assert Simple Class
Test Doubles Test Double Test Double Son todos aquellos objetos que han sido creados para reemplazar a los objetos reales con el propósito de hacer pruebas
IsolationMockingFrameworks ,[object Object]
Evitar escribir código repetitivo.
.NET:  Moq,RhinoMock, Typemock
Java:  Mockito, EasyMock, Jmock
Ruby: RSpecBuilt-in, Mocha,[object Object]
Test Doubles: Stubs
Test Doubles: Stubs ,[object Object]
La prueba tiene el control sobre este test double, por lo que puede indicarle respuestas predefinidas a ciertas llamadas.
Son utilizados cuando nuestro método en prueba depende de un valor que es retornado por otro componente.,[object Object]
StateTesting VS InteractionTesting StateTesting (ResultDriven) Verificamos si un resultado final es el esperado.Ejm: que una propiedad ha cambiado su valor. InterationTesting (ActionDriven)Verificamos si una determinada acción se ha producido. Ejm: que se ha enviado un mensaje hacia otro objeto.
Test Doubles: Mocks Nos permiten verificar si un objeto ha enviado o recibido un determinado mensaje de otro objeto. (Si un objeto ha interactuado correctamente con otro objeto)
Test Doubles : Mocks ,[object Object]
El Assert ya no se ejecuta sobre la clase en prueba sino sobre el mock.
Lo usamos para probar acciones que no pueden ser observadas a través de la API pública de la clase que se está probando. ,[object Object]
Como los diferenciamos fácilmente Stub: El Test Double que permite que el test pueda terminar su ejecución. Mock: El Test Double sobre el cuál se realiza un aserto.
Explorando el API de Moq ,[object Object]
Stubbing
ArgumentMatchers
Stubbingcon excepciones
Verificar comportamiento,[object Object]
Stubbing
ArgumentMatchers
Stubbingcon excepciones
Verificar comportamiento,[object Object]
EjercicioRealizar pruebas unitarias a clases con dependencias IsEnabled debe retornar verdadero si el nivel del mensaje está antes al nivel del logger. IsEnabled debe retornar falso si el nivel del mensaje está después al nivel del logger. Writedebe enviar un email al administrador si el nivel es ERROR. Write debe escribir en el appender si el logger está habilitado.
CodeCoverage Medida de calidad del software. Valor cuantitativo que indica el número de áreas de nuestra aplicación que han sido ejercitadas por un conjunto de casos de prueba. ,[object Object]
Java:  Clover, EMMA, Cobertura
Ruby: RCov,[object Object]
Valor proporcional a la complejidad ciclomática.¿ Será suficiente pasar una única vez por un camino?
Costo vs Beneficiode las pruebas unitarias Algoritmos Código complicado – Necesita refactorizar Alto Beneficio de la prueba ≈ Código no obvio Código Trivial Coordinadores Bajo Bajo Alto Costo de la prueba ≈ Número de dependencias Steven Sanderson Blog:  http://bit.ly/lNGDjq
EjercicioMedir el CodeCoverage en una aplicación. Medir el codecoverage utilizando las herramientas integradas dentro de los IDES. Analizar los resultados e identificar las áreas que no han sido ejercidas por ninguna prueba.
¿ Como escribimos código que sea difícil de probar ?
«No hay ningún secreto en cómo escribir los tests,solo hay secretos en cómo escribir código testeable.» MiskoHevery
Como podemos mejorar la testeabilidad ,[object Object]

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

ISTQB Test level, Test type
ISTQB Test level, Test typeISTQB Test level, Test type
ISTQB Test level, Test type
 
Robot framework Gowthami Goli
Robot framework Gowthami GoliRobot framework Gowthami Goli
Robot framework Gowthami Goli
 
Robot Framework
Robot FrameworkRobot Framework
Robot Framework
 
Plan de pruebas de software
Plan de pruebas de softwarePlan de pruebas de software
Plan de pruebas de software
 
Enfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de softwareEnfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de software
 
Scripting robot
Scripting robotScripting robot
Scripting robot
 
Unit Tests And Automated Testing
Unit Tests And Automated TestingUnit Tests And Automated Testing
Unit Tests And Automated Testing
 
Unit Testing in Java
Unit Testing in JavaUnit Testing in Java
Unit Testing in Java
 
Historia de java script
Historia de java scriptHistoria de java script
Historia de java script
 
Punto y coma ; en java
Punto y coma ; en javaPunto y coma ; en java
Punto y coma ; en java
 
Software testing methods
Software testing methodsSoftware testing methods
Software testing methods
 
Unit testing
Unit testingUnit testing
Unit testing
 
JUnit- A Unit Testing Framework
JUnit- A Unit Testing FrameworkJUnit- A Unit Testing Framework
JUnit- A Unit Testing Framework
 
Junit
JunitJunit
Junit
 
Taller casos de prueba
Taller casos de pruebaTaller casos de prueba
Taller casos de prueba
 
Unit Test
Unit TestUnit Test
Unit Test
 
PRUEBAS DE CAJA NEGRA
PRUEBAS DE CAJA NEGRAPRUEBAS DE CAJA NEGRA
PRUEBAS DE CAJA NEGRA
 
Estructuras de control selectiva
Estructuras de control selectivaEstructuras de control selectiva
Estructuras de control selectiva
 
Funciones en SQL SERVER
Funciones en SQL SERVERFunciones en SQL SERVER
Funciones en SQL SERVER
 
Introduction to robot framework
Introduction to robot frameworkIntroduction to robot framework
Introduction to robot framework
 

Destacado

Automatizacion De Pruebas De Software
Automatizacion De Pruebas De SoftwareAutomatizacion De Pruebas De Software
Automatizacion De Pruebas De SoftwareRubiano
 
Automatización de pruebas funcionales
Automatización de pruebas funcionalesAutomatización de pruebas funcionales
Automatización de pruebas funcionalesVicenç García-Altés
 
Alta automatización de pruebas de calidad de software, cambio de paradigmas
Alta automatización de pruebas de calidad de software, cambio de paradigmasAlta automatización de pruebas de calidad de software, cambio de paradigmas
Alta automatización de pruebas de calidad de software, cambio de paradigmasSoftware Guru
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverDavid Gómez García
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de softwareGuillermo Lemus
 
User story testing activities 3
User story testing activities 3User story testing activities 3
User story testing activities 3Shirly Ronen-Harel
 
Automated Web Testing With Selenium
Automated Web Testing With SeleniumAutomated Web Testing With Selenium
Automated Web Testing With SeleniumJodie Miners
 
Automatizacion de pruebas de software
Automatizacion de pruebas de softwareAutomatizacion de pruebas de software
Automatizacion de pruebas de softwareDavid Thomas
 
Taller cultura de calidad chimbote final
Taller cultura de calidad   chimbote finalTaller cultura de calidad   chimbote final
Taller cultura de calidad chimbote finalJorge Salas Ruiz
 
Automatización para todos los presupuestos - Sebastián Grattarola
Automatización para todos los presupuestos - Sebastián GrattarolaAutomatización para todos los presupuestos - Sebastián Grattarola
Automatización para todos los presupuestos - Sebastián GrattarolaGeneXus
 
¡Esta prueba tiene que automatizarse!
¡Esta prueba tiene que automatizarse!¡Esta prueba tiene que automatizarse!
¡Esta prueba tiene que automatizarse!GeneXus
 
Gestión de proyectos guiada por los beneficios
Gestión de proyectos guiada por los beneficiosGestión de proyectos guiada por los beneficios
Gestión de proyectos guiada por los beneficiosGeneXus
 
Testing automatizado, ¿qué futuro me espera? - Gonzalo Mancebo
Testing automatizado, ¿qué futuro me espera? - Gonzalo ManceboTesting automatizado, ¿qué futuro me espera? - Gonzalo Mancebo
Testing automatizado, ¿qué futuro me espera? - Gonzalo ManceboGeneXus
 
GX23 - GXtest 2.0: Automatización de pruebas para la nueva generación de apl...
GX23 - 	GXtest 2.0: Automatización de pruebas para la nueva generación de apl...GX23 - 	GXtest 2.0: Automatización de pruebas para la nueva generación de apl...
GX23 - GXtest 2.0: Automatización de pruebas para la nueva generación de apl...Abstracta
 
Build and test all, lo nuevo de GXtest para Desarrolladores
Build and test all, lo nuevo de GXtest para DesarrolladoresBuild and test all, lo nuevo de GXtest para Desarrolladores
Build and test all, lo nuevo de GXtest para DesarrolladoresAbstracta
 
Presentación corporativa testhouse consultores - v 3.9.1
Presentación corporativa   testhouse consultores - v 3.9.1Presentación corporativa   testhouse consultores - v 3.9.1
Presentación corporativa testhouse consultores - v 3.9.1Testhouse
 
La micea en la universidad cooperativa de colombia
La micea en la universidad cooperativa de colombiaLa micea en la universidad cooperativa de colombia
La micea en la universidad cooperativa de colombiajohnmario2501
 
15 16 keynote transición-desarrollador_líder
15 16 keynote transición-desarrollador_líder15 16 keynote transición-desarrollador_líder
15 16 keynote transición-desarrollador_líderSoftware Guru
 
Los Pecados Capitales en la Automatización de Pruebas de Software.
Los Pecados Capitales en la Automatización de Pruebas de Software.Los Pecados Capitales en la Automatización de Pruebas de Software.
Los Pecados Capitales en la Automatización de Pruebas de Software.Software Guru
 
Testing automatizado de aplicaciones web
Testing automatizado de aplicaciones webTesting automatizado de aplicaciones web
Testing automatizado de aplicaciones webAnibal Guzmán Miranda
 

Destacado (20)

Automatizacion De Pruebas De Software
Automatizacion De Pruebas De SoftwareAutomatizacion De Pruebas De Software
Automatizacion De Pruebas De Software
 
Automatización de pruebas funcionales
Automatización de pruebas funcionalesAutomatización de pruebas funcionales
Automatización de pruebas funcionales
 
Alta automatización de pruebas de calidad de software, cambio de paradigmas
Alta automatización de pruebas de calidad de software, cambio de paradigmasAlta automatización de pruebas de calidad de software, cambio de paradigmas
Alta automatización de pruebas de calidad de software, cambio de paradigmas
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
User story testing activities 3
User story testing activities 3User story testing activities 3
User story testing activities 3
 
Automated Web Testing With Selenium
Automated Web Testing With SeleniumAutomated Web Testing With Selenium
Automated Web Testing With Selenium
 
Automatizacion de pruebas de software
Automatizacion de pruebas de softwareAutomatizacion de pruebas de software
Automatizacion de pruebas de software
 
Taller cultura de calidad chimbote final
Taller cultura de calidad   chimbote finalTaller cultura de calidad   chimbote final
Taller cultura de calidad chimbote final
 
Automatización para todos los presupuestos - Sebastián Grattarola
Automatización para todos los presupuestos - Sebastián GrattarolaAutomatización para todos los presupuestos - Sebastián Grattarola
Automatización para todos los presupuestos - Sebastián Grattarola
 
¡Esta prueba tiene que automatizarse!
¡Esta prueba tiene que automatizarse!¡Esta prueba tiene que automatizarse!
¡Esta prueba tiene que automatizarse!
 
Gestión de proyectos guiada por los beneficios
Gestión de proyectos guiada por los beneficiosGestión de proyectos guiada por los beneficios
Gestión de proyectos guiada por los beneficios
 
Testing automatizado, ¿qué futuro me espera? - Gonzalo Mancebo
Testing automatizado, ¿qué futuro me espera? - Gonzalo ManceboTesting automatizado, ¿qué futuro me espera? - Gonzalo Mancebo
Testing automatizado, ¿qué futuro me espera? - Gonzalo Mancebo
 
GX23 - GXtest 2.0: Automatización de pruebas para la nueva generación de apl...
GX23 - 	GXtest 2.0: Automatización de pruebas para la nueva generación de apl...GX23 - 	GXtest 2.0: Automatización de pruebas para la nueva generación de apl...
GX23 - GXtest 2.0: Automatización de pruebas para la nueva generación de apl...
 
Build and test all, lo nuevo de GXtest para Desarrolladores
Build and test all, lo nuevo de GXtest para DesarrolladoresBuild and test all, lo nuevo de GXtest para Desarrolladores
Build and test all, lo nuevo de GXtest para Desarrolladores
 
Presentación corporativa testhouse consultores - v 3.9.1
Presentación corporativa   testhouse consultores - v 3.9.1Presentación corporativa   testhouse consultores - v 3.9.1
Presentación corporativa testhouse consultores - v 3.9.1
 
La micea en la universidad cooperativa de colombia
La micea en la universidad cooperativa de colombiaLa micea en la universidad cooperativa de colombia
La micea en la universidad cooperativa de colombia
 
15 16 keynote transición-desarrollador_líder
15 16 keynote transición-desarrollador_líder15 16 keynote transición-desarrollador_líder
15 16 keynote transición-desarrollador_líder
 
Los Pecados Capitales en la Automatización de Pruebas de Software.
Los Pecados Capitales en la Automatización de Pruebas de Software.Los Pecados Capitales en la Automatización de Pruebas de Software.
Los Pecados Capitales en la Automatización de Pruebas de Software.
 
Testing automatizado de aplicaciones web
Testing automatizado de aplicaciones webTesting automatizado de aplicaciones web
Testing automatizado de aplicaciones web
 

Similar a Pruebas Automatizadas

Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NETAngel Nuñez
 
Unit Testing with Mock Objects
Unit Testing with Mock ObjectsUnit Testing with Mock Objects
Unit Testing with Mock ObjectsAngel Nuñez
 
Ingenieria de sw Junit
Ingenieria de sw JunitIngenieria de sw Junit
Ingenieria de sw Junitpattyand89
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmockkaolong
 
Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Juampy NR
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de softwareGomez Gomez
 
Pruebas software con junit ..
Pruebas software con junit ..Pruebas software con junit ..
Pruebas software con junit ..siticfje
 
Testing Con Visual Studio Team System 2008
Testing Con Visual Studio Team System 2008Testing Con Visual Studio Team System 2008
Testing Con Visual Studio Team System 2008Diego Ferreyra
 
Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdflgarcias
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Juan Vladimir
 
Junit con netbeans
Junit con netbeansJunit con netbeans
Junit con netbeansbachispasaca
 

Similar a Pruebas Automatizadas (20)

Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NET
 
Unit Testing with Mock Objects
Unit Testing with Mock ObjectsUnit Testing with Mock Objects
Unit Testing with Mock Objects
 
Ingenieria de sw Junit
Ingenieria de sw JunitIngenieria de sw Junit
Ingenieria de sw Junit
 
Calidad del software cap3
Calidad del software   cap3Calidad del software   cap3
Calidad del software cap3
 
Testeo unitario
Testeo unitarioTesteo unitario
Testeo unitario
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmock
 
Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Pruebas software con junit ..
Pruebas software con junit ..Pruebas software con junit ..
Pruebas software con junit ..
 
Prueba software orientado a objetos
Prueba software orientado a objetosPrueba software orientado a objetos
Prueba software orientado a objetos
 
Test unitarios
Test unitariosTest unitarios
Test unitarios
 
Pruebas
PruebasPruebas
Pruebas
 
Pruebade j unit
Pruebade j unitPruebade j unit
Pruebade j unit
 
Pruebade j unit
Pruebade j unitPruebade j unit
Pruebade j unit
 
Testing Con Visual Studio Team System 2008
Testing Con Visual Studio Team System 2008Testing Con Visual Studio Team System 2008
Testing Con Visual Studio Team System 2008
 
software testing
software testingsoftware testing
software testing
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdf
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test
 
Junit con netbeans
Junit con netbeansJunit con netbeans
Junit con netbeans
 

Más de Angel Nuñez

Structural Agility
Structural AgilityStructural Agility
Structural AgilityAngel Nuñez
 
Architecting Sociotechnical Systems
Architecting Sociotechnical SystemsArchitecting Sociotechnical Systems
Architecting Sociotechnical SystemsAngel Nuñez
 
Product Development Flow
Product Development FlowProduct Development Flow
Product Development FlowAngel Nuñez
 
Hackeando la Cultura Organizacional
Hackeando la Cultura OrganizacionalHackeando la Cultura Organizacional
Hackeando la Cultura OrganizacionalAngel Nuñez
 
Liderazgo Transformacional
Liderazgo TransformacionalLiderazgo Transformacional
Liderazgo TransformacionalAngel Nuñez
 
Liderazgo Transformacional y DevOps
Liderazgo Transformacional y DevOpsLiderazgo Transformacional y DevOps
Liderazgo Transformacional y DevOpsAngel Nuñez
 
Exploratory Testing
Exploratory TestingExploratory Testing
Exploratory TestingAngel Nuñez
 
Kubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingKubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingAngel Nuñez
 
Agile Test Strategy
Agile Test StrategyAgile Test Strategy
Agile Test StrategyAngel Nuñez
 
Kubernetes - #gdglimasummit
Kubernetes - #gdglimasummitKubernetes - #gdglimasummit
Kubernetes - #gdglimasummitAngel Nuñez
 
Agile Testing - Software Testing Club
Agile Testing - Software Testing ClubAgile Testing - Software Testing Club
Agile Testing - Software Testing ClubAngel Nuñez
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlimaAngel Nuñez
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as CodeAngel Nuñez
 
Test Driven Infrastructure
Test Driven InfrastructureTest Driven Infrastructure
Test Driven InfrastructureAngel Nuñez
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteAngel Nuñez
 
Refactoring to Patterns
Refactoring to PatternsRefactoring to Patterns
Refactoring to PatternsAngel Nuñez
 

Más de Angel Nuñez (20)

Structural Agility
Structural AgilityStructural Agility
Structural Agility
 
Architecting Sociotechnical Systems
Architecting Sociotechnical SystemsArchitecting Sociotechnical Systems
Architecting Sociotechnical Systems
 
Product Development Flow
Product Development FlowProduct Development Flow
Product Development Flow
 
Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos Engineering
 
Hackeando la Cultura Organizacional
Hackeando la Cultura OrganizacionalHackeando la Cultura Organizacional
Hackeando la Cultura Organizacional
 
Liderazgo Transformacional
Liderazgo TransformacionalLiderazgo Transformacional
Liderazgo Transformacional
 
Liderazgo Transformacional y DevOps
Liderazgo Transformacional y DevOpsLiderazgo Transformacional y DevOps
Liderazgo Transformacional y DevOps
 
Exploratory Testing
Exploratory TestingExploratory Testing
Exploratory Testing
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Kubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingKubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and Scaling
 
Agile Test Strategy
Agile Test StrategyAgile Test Strategy
Agile Test Strategy
 
Kubernetes - #gdglimasummit
Kubernetes - #gdglimasummitKubernetes - #gdglimasummit
Kubernetes - #gdglimasummit
 
Agile Testing - Software Testing Club
Agile Testing - Software Testing ClubAgile Testing - Software Testing Club
Agile Testing - Software Testing Club
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Test Driven Infrastructure
Test Driven InfrastructureTest Driven Infrastructure
Test Driven Infrastructure
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
 
Unit testing
Unit testingUnit testing
Unit testing
 
Refactoring
RefactoringRefactoring
Refactoring
 
Refactoring to Patterns
Refactoring to PatternsRefactoring to Patterns
Refactoring to Patterns
 

Último

Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosYOMIRAVILLARREAL1
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...dramosbrise1403
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptxjarniel1
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxCsarNlsonMrquezContr
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC6dwwcgtpfx
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALGuadalinfoHuscarGuad
 
innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blogManuel Diaz
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaEdwinGarca59
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.241534381
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .itzyrivera61103
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024NicolleAndrade7
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxJOELGARCIA849853
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxdoloresolmosantiago
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónAntonia Yamilet Perez Palomares
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).jcaballerosamayoa
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docxssusere34b451
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx221112876
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónUniversidad de Sonora
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaRicardoEstrada90
 

Último (20)

Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docx
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blog
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 

Pruebas Automatizadas

  • 1. AutomateTesting Email: snahider@gmail.com Blog: http://snahider.blogspot.com Twitter: @snahider Angel Núñez Salazar
  • 2. Tipos de Test Es una nomenclatura caótica y no existe una sola categoría. Alcance: Unidades, Componentes, Sistemas Etapa: Integración, aceptación, regresión Enfoque: Performance, funcionales Visibilidad: White / Black box El tipo de test se convierte en un atributo.
  • 3. Sistema Tipos de pruebas según su alcance + Integración Unitarios - Alcance
  • 4. Unit TestingAutomate Testing Email: snahider@gmail.com Blog: http://snahider.blogspot.com Twitter: @snahider Angel Núñez Salazar
  • 5. Pruebas Unitarias No pruebes el auto completo si aún no sabes si funcionan los engranes.
  • 6. Prueba Unitaria (Micro Test) Una prueba unitaria es un fragmento automatizado de código, escrito y mantenido por los desarrolladores, que invoca un método o función para verificar ciertas suposiciones sobre el comportamiento de una única clase.
  • 7. Nuestro Objetivo Probar las unidades lógicas o caminos que existen dentro de una clase.
  • 8.
  • 9. No depende de archivos de configuración.
  • 10.
  • 11. Beneficios de las pruebas unitarias Realizar cambios es mucho más sencillo. Nuevas funcionalidades no rompen las existentes. El proceso de desarrollo se vuelve más flexible. Los problemas se encuentran temprano en el ciclo de desarrollo. El diseño mejora debido a que el código es forzado a ser más desacoplado y testeable. Código que funciona ahora, funcionará en el futuro. La necesidad de pruebas manuales se reduce.
  • 12.
  • 13. Java: JUnit, TestNG, Easyb, JTiger …..
  • 14.
  • 15. Organización de un Proyecto Mantener las pruebas separadas del código de producción. Una clase de prueba por cada clase de producción. (Test Fixture per class) Proyecto de Producción Proyecto con las pruebas Referencia al proyecto de producción Test Framework
  • 16. Organización de un Proyecto Mantener las pruebas separadas del código de producción. Una clase de prueba por cada clase de producción. (Test Fixture per class) Directorio de producción Directorio con las pruebas Test Framework
  • 17. Creando una prueba Las pruebas se encuentran dentro de una clase marcada con un atributo Las pruebas son métodos marcados con un atributo La prueba pasa al menos que el assert falle o se produzca un error
  • 18. Creando una prueba Las pruebas se encuentran dentro de una clase. Las pruebas son métodos marcados con una anotación. La prueba pasa al menos que el assert falle o se produzca un error
  • 19. Asserts Métodos a través de los cuales podemos verificar el éxito o fracaso de nuestras pruebas. Múltiples sobre escrituras para verificar diversos casos. Si la verificación falla, nos devuelven un mensaje con información para poder solucionar el problema. Assert.AreEqualfailed. Expected: <2>, Actual:<0> Podemos agregar mensajes adicionales para que sean mostrados en caso el test falle. Assert.AreEqualfailed. Expected: <2>, Actual: <0>. 1+1 deberíaser 2
  • 20.
  • 22. Ejecutar las pruebas dentro del contexto actual (Ctrl+R,T)
  • 23.
  • 24. Menú contextual sobre la clase/package/proyecto y seleccionar "RunAs -> Junit Test".
  • 25.
  • 26. Incluir las entradas/estado inicial y el resultado esperado para dichas entradas.[NombreMétodo_EstadoEnPrueba_ComportamientoEsperado] Las convenciones nos permiten contar con reglas o plantillas que todo el equipo puede seguir para lograr un rápido entendimiento acerca de las pruebas.
  • 27. Estructura de una prueba Creamos todas las precondiciones y entradas necesarias. ARRANGE Realizamos la acción del objeto que estamos probando. ACT ASSERT Verificamos los resultados esperados.
  • 28. Nuestra segunda Prueba Realizar la prueba unitaria que verifique : «El Stack no se encuentra vacío si contiene un elemento»
  • 29.
  • 31.
  • 33.
  • 34.
  • 35.
  • 36. Ejemplos Set Up y Tear Down Unit Test Test Fixtures
  • 37. Ejemplos Set Up y Tear Down Unit Test Test Fixtures
  • 38. Probando Excepciones Forma Tradicional Utilizando Atributos
  • 39. Probando Excepciones Forma Tradicional Utilizando Atributos ExceptedException Rule
  • 40. EjercicioProbar una Excepción y utilizar un Set Up Crear una prueba para verificar que al obtener un elemento y el stack se encuentre vacío, se lance una excepción. Crear un método SetUp para remover el código duplicado de los test.
  • 41. Propiedades de una prueba unitaria Fast: Unos cuantos milisegundos en ejecutarse. Independent: Enfocarse en una única unidad de código. Repeatable: Ejecutarse de manera repetitiva sin intervención. Self-validating: Sin necesidad de reexaminar los resultados. Transparent: Comunicar claramente lo que se busca probar.
  • 42. Test DoublesAutomate Testing Email: snahider@gmail.com Blog: http://snahider.blogspot.com Twitter: @snahider Angel Núñez Salazar
  • 43. Testeabilidad La testeabilidad es un atributo de calidad del códigoque permite que las pruebas automatizadas sean realizadas de manera fácil y efectiva. La testeabilidad por lo general es señal de un buen diseño. Si queremos que un código sea testeable, debemos escribir pensando en la testeabilidad. No cualquier código puede ser probado de manera unitaria.
  • 44. EjercicioRevisar las pruebas realizadas a un código "no testeable" ¿Cuál es el problema del código de producción?"Es un código muy acoplado"
  • 45. ¿Cuál es el problema? Las clases de alto nivel no deben depender directamente de clases de bajo nivel sino de abstracciones de estas clases.
  • 46. Inversión de Dependencias Las clases de alto nivel no deben depender directamente de clases de bajo nivel sino de abstracciones de estas clases.
  • 47. Inyección de Dependencias Proveer las instancias de las clases dependencia desde fuera del ámbito de la clase. Outside
  • 48. EjercicioRefactorizar el código para mejorar su testeabilidad. Utilizar inyección e inversión de dependencias para desacoplar el código.
  • 49. ¿ Cuál es el siguiente paso ? Ahora que las clases no dependen de una implementación específica, debemos hacer que los test decidan cual es la dependencia a usar y la inyecten a la clase que se está probando.
  • 50. EjercicioModificar los test para realizar pruebas unitaras a clases con dependencias. Crear una nueva clase más simple que reemplace a la original solo para los propósitos de las pruebas.
  • 51. El Mundo Real BD Other Class Other Class Act Other Class Test ClassUnder Test FileSystem Assert Other Class Other Class
  • 52. ¿Cuál es el problema? Responsabilidades de la clase Creación de jerarquía de objetos Lógica de Negocios
  • 53. Encontrando la solución Responsabilidades de una clase externa Responsabilidades de la clase Creación de jerarquía de objetos Lógica de Negocios
  • 54. Encontrando la solución Simple Class Act Simple Class Test ClassUnder Test Assert Simple Class
  • 55. Test Doubles Test Double Test Double Son todos aquellos objetos que han sido creados para reemplazar a los objetos reales con el propósito de hacer pruebas
  • 56.
  • 59. Java: Mockito, EasyMock, Jmock
  • 60.
  • 62.
  • 63. La prueba tiene el control sobre este test double, por lo que puede indicarle respuestas predefinidas a ciertas llamadas.
  • 64.
  • 65. StateTesting VS InteractionTesting StateTesting (ResultDriven) Verificamos si un resultado final es el esperado.Ejm: que una propiedad ha cambiado su valor. InterationTesting (ActionDriven)Verificamos si una determinada acción se ha producido. Ejm: que se ha enviado un mensaje hacia otro objeto.
  • 66. Test Doubles: Mocks Nos permiten verificar si un objeto ha enviado o recibido un determinado mensaje de otro objeto. (Si un objeto ha interactuado correctamente con otro objeto)
  • 67.
  • 68. El Assert ya no se ejecuta sobre la clase en prueba sino sobre el mock.
  • 69.
  • 70. Como los diferenciamos fácilmente Stub: El Test Double que permite que el test pueda terminar su ejecución. Mock: El Test Double sobre el cuál se realiza un aserto.
  • 71.
  • 75.
  • 79.
  • 80. EjercicioRealizar pruebas unitarias a clases con dependencias IsEnabled debe retornar verdadero si el nivel del mensaje está antes al nivel del logger. IsEnabled debe retornar falso si el nivel del mensaje está después al nivel del logger. Writedebe enviar un email al administrador si el nivel es ERROR. Write debe escribir en el appender si el logger está habilitado.
  • 81.
  • 82. Java: Clover, EMMA, Cobertura
  • 83.
  • 84. Valor proporcional a la complejidad ciclomática.¿ Será suficiente pasar una única vez por un camino?
  • 85. Costo vs Beneficiode las pruebas unitarias Algoritmos Código complicado – Necesita refactorizar Alto Beneficio de la prueba ≈ Código no obvio Código Trivial Coordinadores Bajo Bajo Alto Costo de la prueba ≈ Número de dependencias Steven Sanderson Blog: http://bit.ly/lNGDjq
  • 86. EjercicioMedir el CodeCoverage en una aplicación. Medir el codecoverage utilizando las herramientas integradas dentro de los IDES. Analizar los resultados e identificar las áreas que no han sido ejercidas por ninguna prueba.
  • 87. ¿ Como escribimos código que sea difícil de probar ?
  • 88. «No hay ningún secreto en cómo escribir los tests,solo hay secretos en cómo escribir código testeable.» MiskoHevery
  • 89.
  • 90. No realizar trabajo en el constructor.
  • 91. Preferir la composición sobre la herencia.
  • 92.
  • 93.
  • 94. El operador New en el constructor.
  • 95. Cualquier tipo de llamada estática.
  • 96. Cualquier tipo de lógica (condicionales, iteraciones).
  • 97. Necesidad de llamar a un método «init» luego de la construcción del objeto.
  • 98. Tener un constructor para pruebas y otros para producción.
  • 99.
  • 100.
  • 101. Si no estamos sobrescribiendo, probablemente estemos abusando de la herencia.
  • 102.
  • 103. Integration TestingAutomate Testing Email: snahider@gmail.com Blog: http://snahider.blogspot.com Twitter: @snahider Angel Núñez Salazar
  • 104. Pruebas de Integración Se encargan de realizar pruebas a dos o más módulos dependientes de software.
  • 105. ¿ Cuando es una prueba de Integración ? Cuando involucra una o más clases en simultaneo. Cuando el código se comunica fuera de las fronteras de su propio proceso.(base de datos, la red, el sistema de archivos)
  • 106.
  • 107. Una buen conjunto de pruebas unitarias es aún más efectivo si es acompañado de otros tipos de test.
  • 108. Cada tipo de test es una nueva capa de protección en nuestro sistema.
  • 109.
  • 110. Las BDs usualmente contienen lógica y realizan funcionalidad crítica para las organizaciones.Es esencial contar con un conjunto de pruebas automatizadas que validen la integridad y funcionamiento de la base de datos.
  • 111. Las BDs son un terreno complicado. Malas herramientas. Los cambios se conservan. Actitud de los especialistas en BD. Diferencia entre el modelo conceptual de la aplicación y el modelo de la bb.
  • 112.
  • 115.
  • 118. ORM ( Metadata, Mappings)Outside (Data Access Interface)
  • 119. Prerrequisito: Sandboxes Un punto importante para tener pruebas repetibles y no erráticas es que cada prueba no se superponga.Esta tarea es más difícil si solo existe una única base de datos y todos ejecutando pruebas contra ella. DevelopmentSandbox DevelopmentSandbox IntegrationSandbox Demo/TestSandbox ProductionSandbox Proveer una base de datos diferente para cada actor o ambiente donde se vaya a ejecutar el conjunto de pruebas.
  • 120. ¿ Cómo probar ? La ClaveComenzar cada prueba con la base de datos en un estado conocido. Los Pasos 1.- Inicializar el estado de la base de datos. 2.- Ejecutar la prueba. 3.- Restablecer (limpiar) el estado para la siguiente prueba.
  • 121.
  • 122. Se puede combinar con patrones como: test data builder, objectmother.
  • 123.
  • 124. Las frameworks permiten utilizar funcionalidad más avanzada.
  • 125. Necesita una organización para los archivos (por tabla, por conjunto de pruebas, por prueba).
  • 126. El mantenimiento de la pruebas es más difícil ya que también se tienen que mantener los archivos externos.
  • 127.
  • 128.
  • 129. Poco impacto en el tiempo de ejecución de las pruebas.
  • 130.
  • 131.
  • 132. EjercicioRealizar pruebas de BD utilizando"Pruebas Autosuficientes""Transaction - Rollback" Implementar los enfoques "Pruebas Autosuficientes" y "TransactionRollback" . Analizar que factores adicionales se deben considerar cuando se utiliza un ORM.
  • 133. Notas