SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
Aprendiendo a testar un
framework desde cero
Que es?
● Es un framework para ayudar a desarrollar rest apis con
nodejs usando typescript
Componentes
Controllers
Componentes para desarrollar los servicios rest.
En express serían los handlers.
Middlewares:
Componentes para ejecutar actividades antes y
después de la ejecución de los controllers
Decoradores
● @Post
● @Get
● @Put
● @Delete
● @JsonController
● @Body
● @Authorize
● @MiddlewareBefore
● @MiddlewareAfter
● @Param
Creando el servidor
Se realiza en dos etapas:
1. Inicialización de la metadata
a. Se utilizan los s decoradores.
b. Se almacena toda la metadata en el
GLOBAL de node.
2. Creación del servidor de node
a. Se utiliza las funcionalidades de
node
Flujo de ejecución (1)
1. Llega el request.
2. Se obtiene la url y el method del request.
3. Se busca un match sobre la metadata.
a. Si no hay match retorna 404.
4. Se parsea el body en caso de venir en el
request.
5. Se ejecuta la action del controller que hizo
match.
6. Se retorna la respuesta.
Flujo de ejecución (2)
Controller ActionMiddleware
Middleware
Middleware
Middleware
Middleware
Middleware
HTTP
Request
hay match ?
Middlewares
- Es algo que ejecuta antes o después de cada action
Documentación
Kiwi cli
Tool para facilitar la creación de código.
Porque hicimos testing ?
● Unit test
○ Necesitábamos ir probando parte del framework a medida que se
desarrollaba.
○ Cada vez que publicamos el framework necesitamos saber que lo que
estaba funcionando siga asi.
● Performance test
○ Lo hicimos en dos etapas.
○ Etapa 1: tratamos de mejorar los tiempos contra sí mismo.
○ Etapa 2: tomamos un framework similar (express) y comparamos tiempos
de respuesta.
Unit test
Analizamos diferentes alternativas para node.
1. mocha https://mochajs.org/
2. tape https://github.com/substack/tape
3. Jest https://jestjs.io/
En nuestro caso nos quedamos con mocha.
Cómo ejecutamos nuestros tests
1. Cada vez que publicamos el paquete
necesitamos que se ejecuten los
test.
2. En caso de que todos esten bien se
publica el paquete.
3. En caso contrario no se publica.
Para esto utilizamos un paquete que se
llama gulp donde automatizamos el
proceso de publish
https://gulpjs.com/
Kiwi-cli
1. Cuando creamos un controller por defecto el cli nos va a
crear una carpeta con el controller.ts y un
controller.spec.ts
2. Con esto lo que logramos es crear un test inicial donde
el desarrollador va a poder testear su controller.
Performance test (1)
1. Empezamos a hacer test y medir los tiempos de respuesta.
2. Hicimos mejoras en el framework tratando de mejorar esos
tiempos.
3. Se generaron muchos controllers para tener una gran
cantidad de rutas.
4. Los tiempos se mejoraron ya que el problema estaba en el
ruteo.
Para estos test usamos el paquete de npm loadtest.
Performance test (2)
1. Seleccionamos un framework del mercado que ya sabemos que
anda bien, es muy usado y tiene una gran comunidad.
2. Implementamos los mismos servicios en ambos frameworks
3. Le hicimos los mismos test para ver cómo responden.
ambos.
Para estos test usamos el paquete de npm loadtest.
Links
● https://github.com/ollita7/kiwi
● https://github.com/ollita7/kiwi-cli
● https://www.npmjs.com/package/kiwi-server
● https://www.npmjs.com/package/kiwi-server-cli
● https://www.typescriptlang.org/docs/handbook/decorators.html
● https://nodejs.org/api/http.html
● https://www.npmjs.com/package/loadtest
● https://artillery.io/docs/getting-started/
Links de testing
● https://mochajs.org/
● https://www.npmjs.com/package/mocha-typescript#async-tests-befor
e-and-after-actions
● https://github.com/howardabrams/node-mocks-http
● https://gulpjs.com/
● https://www.npmjs.com/package/loadtest
● https://jestjs.io/
● https://github.com/substack/tape

Más contenido relacionado

Similar a Meetup TestingUy 2018 - Aprendiendo a Testear un Framework desde cero

Pruebas software con junit ..
Pruebas software con junit ..Pruebas software con junit ..
Pruebas software con junit ..
siticfje
 
Niveles de ejecución arranque y parada de los servicios
Niveles de ejecución arranque y parada de los serviciosNiveles de ejecución arranque y parada de los servicios
Niveles de ejecución arranque y parada de los servicios
Jesús Murillo García
 

Similar a Meetup TestingUy 2018 - Aprendiendo a Testear un Framework desde cero (20)

Testing & debugging lightning web components
Testing & debugging lightning web componentsTesting & debugging lightning web components
Testing & debugging lightning web components
 
Refactorización
RefactorizaciónRefactorización
Refactorización
 
Drupal8 & Symfony2
Drupal8 & Symfony2Drupal8 & Symfony2
Drupal8 & Symfony2
 
Julio Chana | Extendiendo kubernetes | Codemotion Madrid 2018
Julio Chana | Extendiendo kubernetes | Codemotion Madrid 2018Julio Chana | Extendiendo kubernetes | Codemotion Madrid 2018
Julio Chana | Extendiendo kubernetes | Codemotion Madrid 2018
 
Capacidades de programación de procesos Asíncronos
Capacidades de programación de procesos AsíncronosCapacidades de programación de procesos Asíncronos
Capacidades de programación de procesos Asíncronos
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform framework
 
Testing Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfraTesting Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfra
 
Trabajando con acelerómetros en Android
Trabajando con acelerómetros en AndroidTrabajando con acelerómetros en Android
Trabajando con acelerómetros en Android
 
Fundamentos de la Refactorización
Fundamentos de la RefactorizaciónFundamentos de la Refactorización
Fundamentos de la Refactorización
 
Drupal grunt task - Drupal Camp CR 2015
Drupal grunt task  - Drupal Camp CR 2015Drupal grunt task  - Drupal Camp CR 2015
Drupal grunt task - Drupal Camp CR 2015
 
Lenguaje c
Lenguaje c Lenguaje c
Lenguaje c
 
Pruebas software con junit ..
Pruebas software con junit ..Pruebas software con junit ..
Pruebas software con junit ..
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
Niveles de ejecución arranque y parada de los servicios
Niveles de ejecución arranque y parada de los serviciosNiveles de ejecución arranque y parada de los servicios
Niveles de ejecución arranque y parada de los servicios
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Seminario Jade 2014
Seminario Jade 2014Seminario Jade 2014
Seminario Jade 2014
 
Jenkins pipeline
Jenkins pipelineJenkins pipeline
Jenkins pipeline
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
 

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
 

Último (10)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
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.
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
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...
 
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
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
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
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Meetup TestingUy 2018 - Aprendiendo a Testear un Framework desde cero

  • 1. Aprendiendo a testar un framework desde cero
  • 2. Que es? ● Es un framework para ayudar a desarrollar rest apis con nodejs usando typescript
  • 3. Componentes Controllers Componentes para desarrollar los servicios rest. En express serían los handlers. Middlewares: Componentes para ejecutar actividades antes y después de la ejecución de los controllers
  • 4. Decoradores ● @Post ● @Get ● @Put ● @Delete ● @JsonController ● @Body ● @Authorize ● @MiddlewareBefore ● @MiddlewareAfter ● @Param
  • 5. Creando el servidor Se realiza en dos etapas: 1. Inicialización de la metadata a. Se utilizan los s decoradores. b. Se almacena toda la metadata en el GLOBAL de node. 2. Creación del servidor de node a. Se utiliza las funcionalidades de node
  • 6. Flujo de ejecución (1) 1. Llega el request. 2. Se obtiene la url y el method del request. 3. Se busca un match sobre la metadata. a. Si no hay match retorna 404. 4. Se parsea el body en caso de venir en el request. 5. Se ejecuta la action del controller que hizo match. 6. Se retorna la respuesta.
  • 7. Flujo de ejecución (2) Controller ActionMiddleware Middleware Middleware Middleware Middleware Middleware HTTP Request hay match ?
  • 8. Middlewares - Es algo que ejecuta antes o después de cada action
  • 10. Kiwi cli Tool para facilitar la creación de código.
  • 11. Porque hicimos testing ? ● Unit test ○ Necesitábamos ir probando parte del framework a medida que se desarrollaba. ○ Cada vez que publicamos el framework necesitamos saber que lo que estaba funcionando siga asi. ● Performance test ○ Lo hicimos en dos etapas. ○ Etapa 1: tratamos de mejorar los tiempos contra sí mismo. ○ Etapa 2: tomamos un framework similar (express) y comparamos tiempos de respuesta.
  • 12. Unit test Analizamos diferentes alternativas para node. 1. mocha https://mochajs.org/ 2. tape https://github.com/substack/tape 3. Jest https://jestjs.io/ En nuestro caso nos quedamos con mocha.
  • 13. Cómo ejecutamos nuestros tests 1. Cada vez que publicamos el paquete necesitamos que se ejecuten los test. 2. En caso de que todos esten bien se publica el paquete. 3. En caso contrario no se publica. Para esto utilizamos un paquete que se llama gulp donde automatizamos el proceso de publish https://gulpjs.com/
  • 14. Kiwi-cli 1. Cuando creamos un controller por defecto el cli nos va a crear una carpeta con el controller.ts y un controller.spec.ts 2. Con esto lo que logramos es crear un test inicial donde el desarrollador va a poder testear su controller.
  • 15. Performance test (1) 1. Empezamos a hacer test y medir los tiempos de respuesta. 2. Hicimos mejoras en el framework tratando de mejorar esos tiempos. 3. Se generaron muchos controllers para tener una gran cantidad de rutas. 4. Los tiempos se mejoraron ya que el problema estaba en el ruteo. Para estos test usamos el paquete de npm loadtest.
  • 16. Performance test (2) 1. Seleccionamos un framework del mercado que ya sabemos que anda bien, es muy usado y tiene una gran comunidad. 2. Implementamos los mismos servicios en ambos frameworks 3. Le hicimos los mismos test para ver cómo responden. ambos. Para estos test usamos el paquete de npm loadtest.
  • 17. Links ● https://github.com/ollita7/kiwi ● https://github.com/ollita7/kiwi-cli ● https://www.npmjs.com/package/kiwi-server ● https://www.npmjs.com/package/kiwi-server-cli ● https://www.typescriptlang.org/docs/handbook/decorators.html ● https://nodejs.org/api/http.html ● https://www.npmjs.com/package/loadtest ● https://artillery.io/docs/getting-started/
  • 18. Links de testing ● https://mochajs.org/ ● https://www.npmjs.com/package/mocha-typescript#async-tests-befor e-and-after-actions ● https://github.com/howardabrams/node-mocks-http ● https://gulpjs.com/ ● https://www.npmjs.com/package/loadtest ● https://jestjs.io/ ● https://github.com/substack/tape