SlideShare una empresa de Scribd logo
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

PPTX
Git: flujos de trabajo y herramientas para trabajo colaborativo
PPT
Flujo de trabajo básico con git
PDF
Taller Evento TestingUY 2018 - Test Automation Gourmet
PDF
Taller de Simpletest - Drupal Day Valencia 2012
PDF
Probando aplicaciones AngularJS
PPTX
POO Y CONFIGURACION API REST FRAMEWORK DJANGO.pptx
PDF
Workshop iOS 3: Testing, protocolos y extensiones
PPTX
Net conf angularazure
Git: flujos de trabajo y herramientas para trabajo colaborativo
Flujo de trabajo básico con git
Taller Evento TestingUY 2018 - Test Automation Gourmet
Taller de Simpletest - Drupal Day Valencia 2012
Probando aplicaciones AngularJS
POO Y CONFIGURACION API REST FRAMEWORK DJANGO.pptx
Workshop iOS 3: Testing, protocolos y extensiones
Net conf angularazure

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

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

Más de TestingUy (20)

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

Último (20)

PPTX
Presentación de Redes de Datos modelo osi
PDF
clase auditoria informatica 2025.........
PDF
Maste clas de estructura metálica y arquitectura
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPT
Que son las redes de computadores y sus partes
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
CyberOps Associate - Cisco Networking Academy
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
Presentación de Redes de Datos modelo osi
clase auditoria informatica 2025.........
Maste clas de estructura metálica y arquitectura
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Que son las redes de computadores y sus partes
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Plantilla para Diseño de Narrativas Transmedia.pdf
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Estrategia de apoyo tecnología grado 9-3
CyberOps Associate - Cisco Networking Academy
Diapositiva proyecto de vida, materia catedra
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Influencia-del-uso-de-redes-sociales.pdf
Presentación PASANTIAS AuditorioOO..pptx
Sesion 1 de microsoft power point - Clase 1

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