Skip to content

Latest commit

 

History

History
188 lines (140 loc) · 11.3 KB

File metadata and controls

188 lines (140 loc) · 11.3 KB

shieldsIO shieldsIO shieldsIO

WideImg

Máster en Programación FullStack con JavaScript y Node.js

JS, Node.js, Frontend, Backend, Firebase, Express, Patrones, HTML5_APIs, Asincronía, Websockets, Testing

Clase 86

img

Code Review

img

Revisión de código es la examinación sistemática (como en la revisión por pares) del código fuente de un programa informático. Se practica con el objetivo de mejorar la calidad del código que se genera en el proceso de desarrollo del software, mediante la detección temprana de errores en el código de los programas o alternativas más eficientes a la implementación inicial. También se utiliza como técnica para mejorar las cualidades de los desarrolladores involucrados en la práctica, mediante la discusión abierta de posibles mejoras en el programa.

Se realizan principalmente revisiones de código por parte de las metodologías ágiles que practican programación en pareja como parte del proceso, o en otras que pueden implementar revisiones periódicas de código, tanto informales como formales. Wikipedia

Las claves

  • Forma parte de algunas metodologías ágiles
  • Mejora la comunicación y la calidad del grupo
  • No culpar a nadie, ni tomarselo personal
  • La culpa de un bug es ahora compartida
  • Se sugieren los cambios y se discuten

¿Que revisar?

  • Arquitectura/Diseño (patrones, errores potenciales, manejo de errores, eficiencia...)
  • Estilo (Longitudes, legibilidad, nombres...)
  • Testing (Cobertura, mocks, etc...)

Herramientas

Pair coding

IMG

La Programación en Pareja (o Pair Programming en inglés) requiere que dos programadores participen en un esfuerzo combinado de desarrollo en un sitio de trabajo. Cada miembro realiza una acción que el otro no está haciendo actualmente: Mientras que uno codifica las pruebas de unidades el otro piensa en la clase que satisfará la prueba, por ejemplo.

La persona que está haciendo la codificación se le da el nombre de controlador mientras que a la persona que está dirigiendo se le llama el navegador. Se sugiere a menudo para que a los dos socios cambien de papeles por lo menos cada media hora o después de que se haga una prueba de unidad. Wikipedia

Lo bueno

  • Mejor código
  • Equipo más fuerte y cohesionado
  • Se aprende mucho más
  • Mejora la propiedad colectiva del código
  • Mejora las habilidades sociales
  • Reduce el número de bugs

Lo malo

  • No todo el mundo se siente cómodo
  • No es facil juntar niveles distintos
  • Es dificil combinar tiempos (balance, vida personal, etc....)
  • Es más dificil en remoto
  • Los tiempos de desarrollo son distintos

QA (Quality Assurance)

img

Las claves

  • Persona especializada en asegurar la calidad del proyecto
  • Se encarga del diseño y ejecucción de pruebas
  • Se encarga de validar la calidad técnica (rendimeinto, optimización, etc...)
  • Define standares, medidas y metricas que debemos cumplir
  • Revisa y mantiene seguimiento de la calidad
  • Coordina el testeo
  • Las funciones pueden cambiar entre proyectos y empresas

Recursos

Testing

IMG

Las pruebas de software (en inglés software testing) son las investigaciones empíricas y técnicas cuyo objetivo es proporcionar información objetiva e independiente sobre la calidad del producto a la parte interesada o stakeholder. Es una actividad más en el proceso de control de calidad. Wikipedia

Tipos de pruebas

  • Estáticas, No necesitan ejecutar código alguno
  • Dinámicas, que requieren ejecucción de código

Según su ejecucción

  • Manuales, requieren de nuestra interacción para funcionar
  • Automáticas, la propia máquina es capaz de relaizar las pruebas sin sufrir alteraciones

Según el enfoque

  • Caja Blanca, nos centramos en el funcionamiento interno de las cosas
  • Caja Negra, nos centramos en las entradas (input) y salidas (output) de las clsas y no en su funcionamiento
  • Pruebas aleatorias, variante de la caja negra donde el input es aletorio

Testing: ¿Qué podemos testear?

Testing: ¿Que testeamos en JavaScript?

  • Unit Testing
  • Integration testing
  • End-To-End Testing (e2e)
  • Alpha & Beta Testing
  • Accessibility testing
  • Security Testing
  • Stress Testing & Load Testing
  • A/B testing

TDD (Test-Driven Development)

img

Desarrollo guiado por pruebas de software, o Test-driven development (TDD) es una práctica de ingeniería de software que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring). Para escribir las pruebas generalmente se utilizan las pruebas unitarias (unit test en inglés). En primer lugar, se escribe una prueba y se verifica que las pruebas fallan. A continuación, se implementa el código que hace que la prueba pase satisfactoriamente y seguidamente se refactoriza el código escrito. El propósito del desarrollo guiado por pruebas es lograr un código limpio que funcione. La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que el software cumple con los requisitos que se han establecido. Wikipedia

Las claves

  • Implementar solo lo necesario
  • Evitar bugs a toda costa
  • Creamos software modular y reutilizable
  • No tener miedo de tocar "legacy"

El Ciclo de desarrollo

  • Elegir un requisito
  • Escribir las pruebas
  • Verificar que fallan las pruebas
  • Escribir suficiente código para pasar las preubas
  • Pasar las pruebas
  • Refactorizar y pasar las pruebas (hasta estar listo)
  • El requisito ha sido implementado

Filosofías derivadas

Recursos

Piramide de Test creada por Mike Cohn

IMG