SlideShare ist ein Scribd-Unternehmen logo
1 von 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]

Weitere ähnliche Inhalte

Was ist angesagt?

TestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKETestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKEAbhishek Yadav
 
Data Driven Testing
Data Driven TestingData Driven Testing
Data Driven TestingMaveryx
 
Unit Test Presentation
Unit Test PresentationUnit Test Presentation
Unit Test PresentationSayedur Rahman
 
Fundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - IntroducciónFundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - IntroducciónProfessional Testing
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 SangIn Choung
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredElias Nogueira
 
Java Basics for selenium
Java Basics for seleniumJava Basics for selenium
Java Basics for seleniumapoorvams
 
Test Automation Architecture That Works by Bhupesh Dahal
Test Automation Architecture That Works by Bhupesh DahalTest Automation Architecture That Works by Bhupesh Dahal
Test Automation Architecture That Works by Bhupesh DahalQA or the Highway
 
Introduction to Selenium Automation
Introduction to Selenium AutomationIntroduction to Selenium Automation
Introduction to Selenium AutomationMindfire Solutions
 
Introduction to Robot Framework (external)
Introduction to Robot Framework (external)Introduction to Robot Framework (external)
Introduction to Robot Framework (external)Zhe Li
 

Was ist angesagt? (20)

Automatizacion de Pruebas
Automatizacion de PruebasAutomatizacion de Pruebas
Automatizacion de Pruebas
 
TestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKETestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKE
 
Test NG Framework Complete Walk Through
Test NG Framework Complete Walk ThroughTest NG Framework Complete Walk Through
Test NG Framework Complete Walk Through
 
TestNG Framework
TestNG Framework TestNG Framework
TestNG Framework
 
Data Driven Testing
Data Driven TestingData Driven Testing
Data Driven Testing
 
Selenium ppt
Selenium pptSelenium ppt
Selenium ppt
 
Unit Test Presentation
Unit Test PresentationUnit Test Presentation
Unit Test Presentation
 
Selenium ppt
Selenium pptSelenium ppt
Selenium ppt
 
Fundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - IntroducciónFundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - Introducción
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
 
Chapter 1 - Testing Process
Chapter 1 - Testing ProcessChapter 1 - Testing Process
Chapter 1 - Testing Process
 
Introduction to Selenium Web Driver
Introduction to Selenium Web DriverIntroduction to Selenium Web Driver
Introduction to Selenium Web Driver
 
Java Basics for selenium
Java Basics for seleniumJava Basics for selenium
Java Basics for selenium
 
Test Automation Architecture That Works by Bhupesh Dahal
Test Automation Architecture That Works by Bhupesh DahalTest Automation Architecture That Works by Bhupesh Dahal
Test Automation Architecture That Works by Bhupesh Dahal
 
Robotium
RobotiumRobotium
Robotium
 
Introduction to Selenium Automation
Introduction to Selenium AutomationIntroduction to Selenium Automation
Introduction to Selenium Automation
 
Introduction to Robot Framework (external)
Introduction to Robot Framework (external)Introduction to Robot Framework (external)
Introduction to Robot Framework (external)
 
testng
testngtestng
testng
 
Automation Testing
Automation TestingAutomation Testing
Automation Testing
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie Pruebas Automatizadas

Ähnlich wie 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 unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
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
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 

Kürzlich hochgeladen (16)

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
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
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 

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