SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Test Driven Development
en la plataforma Salesforce
Mitos y verdades
Abril 27, 2016
Aldo Fernandez
Technical Architect
@aldoforce
Agenda
▪ Plataforma Salesforce
▪ Que es TDD?
▪ Proceso TDD
▪ Un ejemplo de TDD en Apex
▪ Beneficios
▪ Desafios
Que es Salesforce?
▪ Originalmente CRM (1999) a demanda
▪ Evolución natural a una plataforma multi-tenant (Force.com Platform)
▪ Plataforma declarativa
▪ Modelo de datos y Objetos
▪ UI
▪ Procesos / Workflows
▪ Reportes y análisis de datos
▪ Seguridad, Identidad, segmentación
▪ Aplicaciones móviles.
▪ Plataforma programática
▪ APIs (REST, SOAP, Streaming, Metadata, etc)
▪ Apex (Lenguaje OO, similar a Java / C#)
▪ Lightning Components (Javascript client-side)
Más información: salesforce.com/trailhead - UYSDUG.com
Que es Apex?
▪ Lenguaje de programación OO
▪ Basado en Java / C#
▪ Fuertemente tipado
▪ Ejecutado en transacciones sobre la plataforma
multi-tenant (compilado, ejecutado y controlado)
▪ Implementa lógica de negocios en eventos, clicks,
operaciones en la base de datos, web services, etc.
▪ Framework de testing incorporado
▪ Código de producción debe tener como mínimo 75%
de code coverage.
Que es TDD? (I)
▪ Se refiere a Test Driven Development (TDD) como un estilo de
programación donde tres actividades están marcadamente entrelazadas:
▪ Codigo
▪ Testing (en la forma de unit test)
▪ Diseño (en la forma de refactoring)
Que es TDD? (II)
“TDD es una forma de desarrollar
software donde los tests se escriben
antes que el código funcional”
“TDD es una técnica que utiliza tests
unitarios automatizados para guiar el
diseño del software forzando a
desacoplar sus dependencias”
El proceso TDD
1. Escribir un test
2. Ejecutar todos los tests (el nuevo
debería fallar)
3. Escribir algo de código
4. Ejecutar todos los tests
5. Si el test es exitoso, hacer refactor
6. Repetir paso 1
Test Unitario vs Test de Integración
▪ Test Unitario
▪ Verifica que una parte relativamente
pequeña del código haga lo que tiene
que hacer
▪ Alcance acotado
▪ Fácil de escribir y ejecutar
▪ Test útil para el desarrollador
▪ No hay dependencias de componentes
externos
▪ Los componentes externos son
simulados (mocked or stubbed out)
▪ Evalúa la consistencia interna
▪ Test de Integración
▪ Verifica que diferentes piezas del sistema
funcionen conjuntamente correctas.
▪ Cubre todo un requerimiento o feature
del negocio
▪ Requiere mas recursos para completar
su evaluación
▪ Test útil para el negocio
▪ Las dependencies son requeridas debido
a la aproximación holistica de la prueba.
▪ Evalúa la consistencia entre
componentes.
Un ejemplo de TDD en Apex (I)
▪ Algebra de Aldo (no existe! es un ejemplo trivial)
▪ Dados 2 números enteros a, b
▪ el resultado de la operación sum (a,b) es a + b
▪ Si uno (o ambos) números son null entonces tratarlos como cero
▪ ejemplos
▪ AA.sum(2, 3) = 5
▪ AA.sum(2, null) = 2
▪ AA.sum(null, null) = 0
Un ejemplo de TDD en Apex (II)
Un ejemplo de TDD en Apex (III)
Repetir el proceso hasta
completar la especificación
…pero que sucede si hay dependencias
con otras clases o componentes?
Un ejemplo de TDD en Apex (IV)
AlgebraController
<<class>>
AlgebraServices
<<class>>
Algebra
<<page>>
Dependencia
/o
Un ejemplo de TDD en Apex (V)
Dependency Injection
Un ejemplo de TDD en Apex (VI)
Un ejemplo de TDD en Apex (VII)
inyectando la dependencia
o/
Beneficios
▪ Obliga a tener un buen diseño/arquitectura
▪ Reduce el tiempo de buscar el origen de un bug
▪ Crea una especificación detallada de cada feature
▪ Se escribe código mas corto y menos complejo
▪ Write shorter and less complex code
▪ Feedback inmediato de donde se rompió el código
▪ Aumenta el código de cobertura
▪ Obliga a mantener las cosas simples (KISS!)
▪ Tests se ejecutan mas rápido
Desafios
▪ Curva de aprendizaje
▪ Costo de TDD vs Budget de Proyecto
▪ Explicar el ROI con TDD a jerarquias.
▪ Conceptos técnicos avanzados
▪ Dependency Injection
▪ Mocking
▪ Problemas culturales en los equipos
▪ Frecuentes cambios en los requerimientos de negocio
Resources + Kudos
▪ Test Driven Development Method in Software Development Process. Denis Duka,
Lovre Hribar 2010
▪ Test Driven Development in Apex by Chris Aldridge (@caldrig3)
▪ Unit Testing, Apex Enterprise Patterns and ApexMock, Andrew Fawcett
(@andyinthecloud)
▪ Writing true unit tests using dependency injection mocking apex, Alex Tennant
(@adtennant)
▪ ApexMocks: How Does It Work? Jesse Altman (@jessealtman)
▪ Inversion of Control Containers and the Dependency Injection Pattern. Martin Fowler,
2004
▪ Demo Code repo: https://github.com/aldoforce/uysdug_tdd_demo
Gracias!!!
Test Driven Development en la
Plataforma Salesorce
Mitos y verdades
TestingUy 3
Abril 27, 2016
Montevideo, Uruguay
Aldo Fernandez
Technical Architect
@aldoforce
#uysdug
#tdd
#dependencyInjection
#apex
#testinguy

Más contenido relacionado

La actualidad más candente

TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...
TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...
TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...TestingAR Meetup
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDDAlfredo Chavez
 
TestingAR V - Una Nueva Visión - Federico Toledo - Performance Durante y Des...
TestingAR V - Una Nueva Visión - Federico Toledo - Performance Durante y Des...TestingAR V - Una Nueva Visión - Federico Toledo - Performance Durante y Des...
TestingAR V - Una Nueva Visión - Federico Toledo - Performance Durante y Des...TestingAR Meetup
 
TestingAR VII - Siete Magníficos - Pablo Soifer - El abc del test automation
TestingAR VII - Siete Magníficos - Pablo Soifer - El abc del test automationTestingAR VII - Siete Magníficos - Pablo Soifer - El abc del test automation
TestingAR VII - Siete Magníficos - Pablo Soifer - El abc del test automationTestingAR Meetup
 
Integración contínua con Jenkins
Integración contínua con JenkinsIntegración contínua con Jenkins
Integración contínua con JenkinsCésar Hernández
 
Casos De Exito Spring Framework
Casos De Exito Spring FrameworkCasos De Exito Spring Framework
Casos De Exito Spring FrameworkLennon Shimokawa
 
Aug frontend dev ops
Aug frontend dev opsAug frontend dev ops
Aug frontend dev opsMitzi Moncada
 
Introducción a automatización de pruebas web
Introducción a automatización de pruebas webIntroducción a automatización de pruebas web
Introducción a automatización de pruebas webFrancisco Moreno Sanz
 
Bilbostack 2020 - El camino de l a entrega en DevOps
Bilbostack 2020 - El camino de l a entrega en DevOpsBilbostack 2020 - El camino de l a entrega en DevOps
Bilbostack 2020 - El camino de l a entrega en DevOpsLuis Fraile
 

La actualidad más candente (10)

TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...
TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...
TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
TestingAR V - Una Nueva Visión - Federico Toledo - Performance Durante y Des...
TestingAR V - Una Nueva Visión - Federico Toledo - Performance Durante y Des...TestingAR V - Una Nueva Visión - Federico Toledo - Performance Durante y Des...
TestingAR V - Una Nueva Visión - Federico Toledo - Performance Durante y Des...
 
Workshop: Testeando nuestra aplicaciones.
Workshop: Testeando nuestra aplicaciones.Workshop: Testeando nuestra aplicaciones.
Workshop: Testeando nuestra aplicaciones.
 
TestingAR VII - Siete Magníficos - Pablo Soifer - El abc del test automation
TestingAR VII - Siete Magníficos - Pablo Soifer - El abc del test automationTestingAR VII - Siete Magníficos - Pablo Soifer - El abc del test automation
TestingAR VII - Siete Magníficos - Pablo Soifer - El abc del test automation
 
Integración contínua con Jenkins
Integración contínua con JenkinsIntegración contínua con Jenkins
Integración contínua con Jenkins
 
Casos De Exito Spring Framework
Casos De Exito Spring FrameworkCasos De Exito Spring Framework
Casos De Exito Spring Framework
 
Aug frontend dev ops
Aug frontend dev opsAug frontend dev ops
Aug frontend dev ops
 
Introducción a automatización de pruebas web
Introducción a automatización de pruebas webIntroducción a automatización de pruebas web
Introducción a automatización de pruebas web
 
Bilbostack 2020 - El camino de l a entrega en DevOps
Bilbostack 2020 - El camino de l a entrega en DevOpsBilbostack 2020 - El camino de l a entrega en DevOps
Bilbostack 2020 - El camino de l a entrega en DevOps
 

Similar a Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Salesforce

ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasRodrigo Corral
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Caminando hacia la agilidad con Visual Studio 2010
Caminando hacia la agilidad con Visual Studio 2010Caminando hacia la agilidad con Visual Studio 2010
Caminando hacia la agilidad con Visual Studio 2010Rodrigo Corral
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasRicard Clau
 
Devsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoDevsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoLuciano Moreira da Cruz
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónKleer Agile Coaching & Training
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
AFE - 01 - Introduccion a Frameworks.pptx
AFE - 01 - Introduccion a Frameworks.pptxAFE - 01 - Introduccion a Frameworks.pptx
AFE - 01 - Introduccion a Frameworks.pptxCesiaReyes4
 
Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)Armando Picón Z.
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberSoftware Guru
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumSoftware Guru
 

Similar a Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Salesforce (20)

ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas Prácticas
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
Testing Ruby on Rails (spanish)
Testing Ruby on Rails (spanish)Testing Ruby on Rails (spanish)
Testing Ruby on Rails (spanish)
 
Un "TFS" para gobernarlos a todos
Un "TFS" para gobernarlos a todosUn "TFS" para gobernarlos a todos
Un "TFS" para gobernarlos a todos
 
Caminando hacia la agilidad con Visual Studio 2010
Caminando hacia la agilidad con Visual Studio 2010Caminando hacia la agilidad con Visual Studio 2010
Caminando hacia la agilidad con Visual Studio 2010
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas Rotas
 
Devsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoDevsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivo
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producción
 
Panel Magmaconf
Panel MagmaconfPanel Magmaconf
Panel Magmaconf
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
AFE - 01 - Introduccion a Frameworks.pptx
AFE - 01 - Introduccion a Frameworks.pptxAFE - 01 - Introduccion a Frameworks.pptx
AFE - 01 - Introduccion a Frameworks.pptx
 
Data Ops
Data OpsData Ops
Data Ops
 
Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de Selenium
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
ALM y Office 365
ALM y Office 365 ALM y Office 365
ALM y Office 365
 
Webinar Oracle Application Express
Webinar Oracle Application ExpressWebinar Oracle Application Express
Webinar Oracle Application Express
 

Más de TestingUy

Webinar TestingUy - Cuando el testing no es opcional
Webinar TestingUy - Cuando el testing no es opcionalWebinar TestingUy - Cuando el testing no es opcional
Webinar TestingUy - Cuando el testing no es opcionalTestingUy
 
Webinar TestingUy - Usando Principios del Testing de Software en Tiempos de C...
Webinar TestingUy - Usando Principios del Testing de Software en Tiempos de C...Webinar TestingUy - Usando Principios del Testing de Software en Tiempos de C...
Webinar TestingUy - Usando Principios del Testing de Software en Tiempos de C...TestingUy
 
Webinar TestingUy - Sesgos cognitivos en las pruebas. El lado más humano de...
Webinar TestingUy -   Sesgos cognitivos en las pruebas. El lado más humano de...Webinar TestingUy -   Sesgos cognitivos en las pruebas. El lado más humano de...
Webinar TestingUy - Sesgos cognitivos en las pruebas. El lado más humano de...TestingUy
 
Webinar TestingUy - Thinking outside the box: Cognitive bias and testing
Webinar TestingUy - Thinking outside the box: Cognitive bias and testingWebinar TestingUy - Thinking outside the box: Cognitive bias and testing
Webinar TestingUy - Thinking outside the box: Cognitive bias and testingTestingUy
 
TestingPy meetup - Invitación TestingUy 2020
TestingPy meetup - Invitación TestingUy 2020TestingPy meetup - Invitación TestingUy 2020
TestingPy meetup - Invitación TestingUy 2020TestingUy
 
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoMeetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoTestingUy
 
Meetup TestingUy 2019 - May the automation be with you
Meetup TestingUy 2019 - May the automation be with youMeetup TestingUy 2019 - May the automation be with you
Meetup TestingUy 2019 - May the automation be with youTestingUy
 
Meetup TestingUy 2019 - De árboles, de bosques y de selvas ¿qué visión tengo ...
Meetup TestingUy 2019 - De árboles, de bosques y de selvas ¿qué visión tengo ...Meetup TestingUy 2019 - De árboles, de bosques y de selvas ¿qué visión tengo ...
Meetup TestingUy 2019 - De árboles, de bosques y de selvas ¿qué visión tengo ...TestingUy
 
Meetup TestingUy 2019 - En clave de protocolo con apache JMeter
Meetup TestingUy 2019 - En clave de protocolo con apache JMeterMeetup TestingUy 2019 - En clave de protocolo con apache JMeter
Meetup TestingUy 2019 - En clave de protocolo con apache JMeterTestingUy
 
Meetup TestingUy 2019 - Si Tony Stark fuera Tester
Meetup TestingUy 2019 - Si Tony Stark fuera TesterMeetup TestingUy 2019 - Si Tony Stark fuera Tester
Meetup TestingUy 2019 - Si Tony Stark fuera TesterTestingUy
 
Meetup TestingUy 2019 - ¿Test cases? ¿Son siempre necesarios?
Meetup TestingUy 2019 - ¿Test cases? ¿Son siempre necesarios?Meetup TestingUy 2019 - ¿Test cases? ¿Son siempre necesarios?
Meetup TestingUy 2019 - ¿Test cases? ¿Son siempre necesarios?TestingUy
 
Charla TestingUy 2019 - ¿Podemos hacer que la seguridad sea usable?
Charla TestingUy 2019 - ¿Podemos hacer que la seguridad sea usable?Charla TestingUy 2019 - ¿Podemos hacer que la seguridad sea usable?
Charla TestingUy 2019 - ¿Podemos hacer que la seguridad sea usable?TestingUy
 
Charla TestingUy 2019 - Testers as Test Consultants: How to learn the skills?
Charla TestingUy 2019 - Testers as Test Consultants: How to learn the skills?Charla TestingUy 2019 - Testers as Test Consultants: How to learn the skills?
Charla TestingUy 2019 - Testers as Test Consultants: How to learn the skills?TestingUy
 
Charla TestingUy 2019 - Ready Tester One? Go!
Charla TestingUy 2019 - Ready Tester One? Go!Charla TestingUy 2019 - Ready Tester One? Go!
Charla TestingUy 2019 - Ready Tester One? Go!TestingUy
 
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...TestingUy
 
Charla TestingUy 2019 - Contract Testing con Pact
Charla TestingUy 2019 - Contract Testing con PactCharla TestingUy 2019 - Contract Testing con Pact
Charla TestingUy 2019 - Contract Testing con PactTestingUy
 
Charla TestingUy 2019 - Testing de chatbots
Charla TestingUy 2019 - Testing de chatbotsCharla TestingUy 2019 - Testing de chatbots
Charla TestingUy 2019 - Testing de chatbotsTestingUy
 
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivelCharla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivelTestingUy
 
Charla testingUy 2019 - ¿De dónde venimos y qué se nos viene? - Evolución de ...
Charla testingUy 2019 - ¿De dónde venimos y qué se nos viene? - Evolución de ...Charla testingUy 2019 - ¿De dónde venimos y qué se nos viene? - Evolución de ...
Charla testingUy 2019 - ¿De dónde venimos y qué se nos viene? - Evolución de ...TestingUy
 
Charla TestingUy 2019 - Pruebas de rendimiento, experiencias en la plataforma...
Charla TestingUy 2019 - Pruebas de rendimiento, experiencias en la plataforma...Charla TestingUy 2019 - Pruebas de rendimiento, experiencias en la plataforma...
Charla TestingUy 2019 - Pruebas de rendimiento, experiencias en la plataforma...TestingUy
 

Más de TestingUy (20)

Webinar TestingUy - Cuando el testing no es opcional
Webinar TestingUy - Cuando el testing no es opcionalWebinar TestingUy - Cuando el testing no es opcional
Webinar TestingUy - Cuando el testing no es opcional
 
Webinar TestingUy - Usando Principios del Testing de Software en Tiempos de C...
Webinar TestingUy - Usando Principios del Testing de Software en Tiempos de C...Webinar TestingUy - Usando Principios del Testing de Software en Tiempos de C...
Webinar TestingUy - Usando Principios del Testing de Software en Tiempos de C...
 
Webinar TestingUy - Sesgos cognitivos en las pruebas. El lado más humano de...
Webinar TestingUy -   Sesgos cognitivos en las pruebas. El lado más humano de...Webinar TestingUy -   Sesgos cognitivos en las pruebas. El lado más humano de...
Webinar TestingUy - Sesgos cognitivos en las pruebas. El lado más humano de...
 
Webinar TestingUy - Thinking outside the box: Cognitive bias and testing
Webinar TestingUy - Thinking outside the box: Cognitive bias and testingWebinar TestingUy - Thinking outside the box: Cognitive bias and testing
Webinar TestingUy - Thinking outside the box: Cognitive bias and testing
 
TestingPy meetup - Invitación TestingUy 2020
TestingPy meetup - Invitación TestingUy 2020TestingPy meetup - Invitación TestingUy 2020
TestingPy meetup - Invitación TestingUy 2020
 
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoMeetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
 
Meetup TestingUy 2019 - May the automation be with you
Meetup TestingUy 2019 - May the automation be with youMeetup TestingUy 2019 - May the automation be with you
Meetup TestingUy 2019 - May the automation be with you
 
Meetup TestingUy 2019 - De árboles, de bosques y de selvas ¿qué visión tengo ...
Meetup TestingUy 2019 - De árboles, de bosques y de selvas ¿qué visión tengo ...Meetup TestingUy 2019 - De árboles, de bosques y de selvas ¿qué visión tengo ...
Meetup TestingUy 2019 - De árboles, de bosques y de selvas ¿qué visión tengo ...
 
Meetup TestingUy 2019 - En clave de protocolo con apache JMeter
Meetup TestingUy 2019 - En clave de protocolo con apache JMeterMeetup TestingUy 2019 - En clave de protocolo con apache JMeter
Meetup TestingUy 2019 - En clave de protocolo con apache JMeter
 
Meetup TestingUy 2019 - Si Tony Stark fuera Tester
Meetup TestingUy 2019 - Si Tony Stark fuera TesterMeetup TestingUy 2019 - Si Tony Stark fuera Tester
Meetup TestingUy 2019 - Si Tony Stark fuera Tester
 
Meetup TestingUy 2019 - ¿Test cases? ¿Son siempre necesarios?
Meetup TestingUy 2019 - ¿Test cases? ¿Son siempre necesarios?Meetup TestingUy 2019 - ¿Test cases? ¿Son siempre necesarios?
Meetup TestingUy 2019 - ¿Test cases? ¿Son siempre necesarios?
 
Charla TestingUy 2019 - ¿Podemos hacer que la seguridad sea usable?
Charla TestingUy 2019 - ¿Podemos hacer que la seguridad sea usable?Charla TestingUy 2019 - ¿Podemos hacer que la seguridad sea usable?
Charla TestingUy 2019 - ¿Podemos hacer que la seguridad sea usable?
 
Charla TestingUy 2019 - Testers as Test Consultants: How to learn the skills?
Charla TestingUy 2019 - Testers as Test Consultants: How to learn the skills?Charla TestingUy 2019 - Testers as Test Consultants: How to learn the skills?
Charla TestingUy 2019 - Testers as Test Consultants: How to learn the skills?
 
Charla TestingUy 2019 - Ready Tester One? Go!
Charla TestingUy 2019 - Ready Tester One? Go!Charla TestingUy 2019 - Ready Tester One? Go!
Charla TestingUy 2019 - Ready Tester One? Go!
 
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...
 
Charla TestingUy 2019 - Contract Testing con Pact
Charla TestingUy 2019 - Contract Testing con PactCharla TestingUy 2019 - Contract Testing con Pact
Charla TestingUy 2019 - Contract Testing con Pact
 
Charla TestingUy 2019 - Testing de chatbots
Charla TestingUy 2019 - Testing de chatbotsCharla TestingUy 2019 - Testing de chatbots
Charla TestingUy 2019 - Testing de chatbots
 
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivelCharla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
 
Charla testingUy 2019 - ¿De dónde venimos y qué se nos viene? - Evolución de ...
Charla testingUy 2019 - ¿De dónde venimos y qué se nos viene? - Evolución de ...Charla testingUy 2019 - ¿De dónde venimos y qué se nos viene? - Evolución de ...
Charla testingUy 2019 - ¿De dónde venimos y qué se nos viene? - Evolución de ...
 
Charla TestingUy 2019 - Pruebas de rendimiento, experiencias en la plataforma...
Charla TestingUy 2019 - Pruebas de rendimiento, experiencias en la plataforma...Charla TestingUy 2019 - Pruebas de rendimiento, experiencias en la plataforma...
Charla TestingUy 2019 - Pruebas de rendimiento, experiencias en la plataforma...
 

Último

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
 
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
 
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
 
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
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
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
 
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
 
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
 
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
 
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
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
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
 
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
 

Último (16)

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
 
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
 
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
 
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
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
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
 
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
 
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...
 
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
 
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
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
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
 
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
 

Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Salesforce

  • 1. Test Driven Development en la plataforma Salesforce Mitos y verdades Abril 27, 2016
  • 3. Agenda ▪ Plataforma Salesforce ▪ Que es TDD? ▪ Proceso TDD ▪ Un ejemplo de TDD en Apex ▪ Beneficios ▪ Desafios
  • 4. Que es Salesforce? ▪ Originalmente CRM (1999) a demanda ▪ Evolución natural a una plataforma multi-tenant (Force.com Platform) ▪ Plataforma declarativa ▪ Modelo de datos y Objetos ▪ UI ▪ Procesos / Workflows ▪ Reportes y análisis de datos ▪ Seguridad, Identidad, segmentación ▪ Aplicaciones móviles. ▪ Plataforma programática ▪ APIs (REST, SOAP, Streaming, Metadata, etc) ▪ Apex (Lenguaje OO, similar a Java / C#) ▪ Lightning Components (Javascript client-side) Más información: salesforce.com/trailhead - UYSDUG.com
  • 5. Que es Apex? ▪ Lenguaje de programación OO ▪ Basado en Java / C# ▪ Fuertemente tipado ▪ Ejecutado en transacciones sobre la plataforma multi-tenant (compilado, ejecutado y controlado) ▪ Implementa lógica de negocios en eventos, clicks, operaciones en la base de datos, web services, etc. ▪ Framework de testing incorporado ▪ Código de producción debe tener como mínimo 75% de code coverage.
  • 6. Que es TDD? (I) ▪ Se refiere a Test Driven Development (TDD) como un estilo de programación donde tres actividades están marcadamente entrelazadas: ▪ Codigo ▪ Testing (en la forma de unit test) ▪ Diseño (en la forma de refactoring)
  • 7. Que es TDD? (II) “TDD es una forma de desarrollar software donde los tests se escriben antes que el código funcional” “TDD es una técnica que utiliza tests unitarios automatizados para guiar el diseño del software forzando a desacoplar sus dependencias”
  • 8. El proceso TDD 1. Escribir un test 2. Ejecutar todos los tests (el nuevo debería fallar) 3. Escribir algo de código 4. Ejecutar todos los tests 5. Si el test es exitoso, hacer refactor 6. Repetir paso 1
  • 9. Test Unitario vs Test de Integración ▪ Test Unitario ▪ Verifica que una parte relativamente pequeña del código haga lo que tiene que hacer ▪ Alcance acotado ▪ Fácil de escribir y ejecutar ▪ Test útil para el desarrollador ▪ No hay dependencias de componentes externos ▪ Los componentes externos son simulados (mocked or stubbed out) ▪ Evalúa la consistencia interna ▪ Test de Integración ▪ Verifica que diferentes piezas del sistema funcionen conjuntamente correctas. ▪ Cubre todo un requerimiento o feature del negocio ▪ Requiere mas recursos para completar su evaluación ▪ Test útil para el negocio ▪ Las dependencies son requeridas debido a la aproximación holistica de la prueba. ▪ Evalúa la consistencia entre componentes.
  • 10. Un ejemplo de TDD en Apex (I) ▪ Algebra de Aldo (no existe! es un ejemplo trivial) ▪ Dados 2 números enteros a, b ▪ el resultado de la operación sum (a,b) es a + b ▪ Si uno (o ambos) números son null entonces tratarlos como cero ▪ ejemplos ▪ AA.sum(2, 3) = 5 ▪ AA.sum(2, null) = 2 ▪ AA.sum(null, null) = 0
  • 11. Un ejemplo de TDD en Apex (II)
  • 12. Un ejemplo de TDD en Apex (III) Repetir el proceso hasta completar la especificación
  • 13. …pero que sucede si hay dependencias con otras clases o componentes?
  • 14. Un ejemplo de TDD en Apex (IV) AlgebraController <<class>> AlgebraServices <<class>> Algebra <<page>> Dependencia /o
  • 15. Un ejemplo de TDD en Apex (V)
  • 17. Un ejemplo de TDD en Apex (VI)
  • 18. Un ejemplo de TDD en Apex (VII) inyectando la dependencia o/
  • 19. Beneficios ▪ Obliga a tener un buen diseño/arquitectura ▪ Reduce el tiempo de buscar el origen de un bug ▪ Crea una especificación detallada de cada feature ▪ Se escribe código mas corto y menos complejo ▪ Write shorter and less complex code ▪ Feedback inmediato de donde se rompió el código ▪ Aumenta el código de cobertura ▪ Obliga a mantener las cosas simples (KISS!) ▪ Tests se ejecutan mas rápido
  • 20. Desafios ▪ Curva de aprendizaje ▪ Costo de TDD vs Budget de Proyecto ▪ Explicar el ROI con TDD a jerarquias. ▪ Conceptos técnicos avanzados ▪ Dependency Injection ▪ Mocking ▪ Problemas culturales en los equipos ▪ Frecuentes cambios en los requerimientos de negocio
  • 21. Resources + Kudos ▪ Test Driven Development Method in Software Development Process. Denis Duka, Lovre Hribar 2010 ▪ Test Driven Development in Apex by Chris Aldridge (@caldrig3) ▪ Unit Testing, Apex Enterprise Patterns and ApexMock, Andrew Fawcett (@andyinthecloud) ▪ Writing true unit tests using dependency injection mocking apex, Alex Tennant (@adtennant) ▪ ApexMocks: How Does It Work? Jesse Altman (@jessealtman) ▪ Inversion of Control Containers and the Dependency Injection Pattern. Martin Fowler, 2004 ▪ Demo Code repo: https://github.com/aldoforce/uysdug_tdd_demo
  • 22. Gracias!!! Test Driven Development en la Plataforma Salesorce Mitos y verdades TestingUy 3 Abril 27, 2016 Montevideo, Uruguay Aldo Fernandez Technical Architect @aldoforce #uysdug #tdd #dependencyInjection #apex #testinguy