03 10 20 Testing Mantenibilidad - MatRJ08/Portafolio_DatosII GitHub Wiki

Temas

  • Testing

Apuntes

Testing

Se usa para control de calidad

  • Se debería aplicar durante todo el proceso de programación
  • Es caro hacerlo, pero es mas caro hacerlo al final

Test-Driven Design

  • Define casos de prueba (y que pasa si...)

White-box testing vs black-box testing

  • White, se como funciona el sistema interno
    • Examinar la estructura interna del curso
    • Examinar la lógica y estructura del programa
    • Se enfoca en ejecutar la mayoría del código al menos una vez
  • Black, no se como funciona y tengo una experiencia de usuario final
    • Evaluar el comportamiento y la estructura del programa sin ver la parte interna
    • Si se obtienen las salidas esperadas a los requerimientos. Se evalúa si el programa trabaja de la forma establecida
    • Nos enfocamos en usar la menor cantidad de casos de prueba para obtener la cantidad máxima de errores
    • Input ->Black-box-> Output : se evalúa el resultado obtenido

Dentro del white y black existen muchos tipos de tests

  • Instalación
  • Compatibilidad
  • Regrecion
  • Aceptación
  • Alfa
  • beta
  • funcional
  • accesibilidad
  • seguridad

Niveles de testing

  • Unit testing
    • White box
    • Enfocada en testear un modulo del software
    • se prueba una parte del código que llama varias partes del código
    • una unidad es un método o función
    • Características de un buen unit test
      • Que se automaticen y se pueda reutilizar
      • Fácil de implementar
      • Cualquiera debe de poder usarla
      • Debe de correr rápido
  • Integración
  • Interfaz de componentes
  • sistema

Mantenibilidad

  • Características para saber que el software va empezar a apestar

  • Rigidez: los cambios por mas sencillos se vuelven difícil

  • Fragilidad: tendencia de un sistema a romperse a la hora de hacer cambios

  • Inmovilidad: Partes del sistema reusables, que dependen de otras partes

  • Viscosidad: Hacer cosas mal hechas es al fácil que hacerlo bien

  • Complejidad innecesaria: contienen elementos que no son "useful"

  • Repetición innecesaria: modulo que se usa muchas veces

  • Opacidad: Código difícil de entender

Como evitar que apeste