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

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

AFE - 01 - Introduccion a Frameworks.pptx
AFE - 01 - Introduccion a Frameworks.pptxAFE - 01 - Introduccion a Frameworks.pptx
AFE - 01 - Introduccion a Frameworks.pptx
CesiaReyes4
 

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 opcional
TestingUy
 
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 testing
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
 

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

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
Marc Liust
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 

Último (18)

presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 

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