Conceptos fundamentales

06-05-2024
conceptos-fundamentales

¿Cuál es la necesidad del testing?

Testing es importante porque algunos errores en el software pueden ser muy caros o incluso peligrosos.

Errores de software pueden causar perdidas de dinero y humanas, algunos ejemplos de esto son:

  • En Abril de 2015, las terminales de Bloomberg en Londres fallaron por un error de software y 300 mil agentes de bolsa no pudieron ingresar a operar.
    Esto ocasiono que el gobierno tuviera que atrasar 3 billones de ventas de deuda financiera.

  • Starbucks se vio forzado a cerrar el 60% de sus tiendas en EEUU y Canadá por una falla en el funcionamiento del sistema de cobro.

  • Una vulnerabilidad de Windows 10 habilitaba a pasar trabas de seguridad a través de una falla en win32k

  • En 1985, la maquina Therac-25 para terapia de radiación en Canadá tenía una falla y daba niveles de radiación letales matando a 3 persona y dejando grave otras 3.

¿Quién es el software tester?

Es un profesional que valida la funcionalidad contra los requerimientos especificados.
Identifica errores y problemas, asegurando que el software cumpla con los estándares y requerimientos del usuario.

¿Que hace el tester?

En un día típico se encuentra leyendo y entendiendo los documentos de requerimientos, reportando errores y revisando errores resueltos, creando tests, ejecutando casos de testeo y participando de reuniones de revisión.

Software testing

  • Bases
  • Tipos de testing

Términos de la ingeniería del software

SDLC: Software Development Life Cycle, son las actividades llevadas adelante por los desarrolladores durante el proceso de desarrollo.

STLC: Software Testing Life Cycle, son las actividades llevadas adelante por los testers para probar el software.

Waterfall model: es un modelo con etapas secuenciales donde en cada etapa se realiza una actividad especifica y el testing se encuentra luego de la implementación del software

Bases

  • Es el metodo por el cual se verifica el software contra los requerimientos esperados del producto.
  • También se busca encontrar requerimientos no estipulados que podrían ser necesarios en el producto.
  • Que el producto se encuentre libre de defectos

Tipos de testing

Categoría de testing Tipos de testing
Testing funcional

- Unit testing

- Integration

- Smoke

- UAT ( user acceptance testing )

- Localization

- Globalization

- Inter operability

- So on

No - funcional

- Performance

- Endurance

- Load

- Volume

- Scalability

- Usability

- So on

Maintenance (Mantenimiento)

- Regression

- Maintanance

Beneficios

  • Costos: Una de las ventajas es la reducción de costos en el desarrollo
  • Seguridad: Es el beneficio mas sensible del software testing.
  • Calidad del producto: Esencial en todos los productos.
  • Satisfaccion del cliente: UI / UX asegura la mejor experiencia de uso posible para el cliente.

Principios básicos

  1. Pruebas exhaustivas (Exaustive testing): no son posibles. Lo que se necesita es una cantidad optima según riesgos.
  2. Agrupación de defectos (defect clustering): esto llama a que un pequeño número de módulos contienen la mayoría de los defectos como indica el principio de Pareto.
  3. Paradoja de los pesticidas: si siempre realizamos el mismo grupo de pruebas nunca encontraremos nuevos posibles defectos.
  4. Las pruebas muestran la presencia de defectos: esto nos habla que las pruebas solo muestran que hay defectos y no que no los haya, es en la práctica indica que si se realiza un grupo de pruebas y estas no encuentran errores, solo muestra que lo probado no contendría errores.
  5. Falacia de ausencia de errores: Es posible tener un software en un 99% libre de defectos y ser inutilizable.
  6. Pruebas tempranas: las pruebas deben comenzar lo antes posible en el ciclo de desarrollo.
  7. Las pruebas son dependientes del contexto: esto significa que la forma en que se realizan pruebas sobre una tienda electrónica difiere de la forma en la que se prueba una aplicación de escritorio.

Estrategias de testing

  • Unit testing: lo realizan los desarrolladores, estos tests prueban pequeñas partes del código.
  • Integration testing: esto se enfoca en la interacción entre distintas partes del software.
  • System testing: en este método la aplicación se compila y luego se testea

V Model o Modelo V

Es una diciplina durante el proceso de SDLC (Software Development Life Cycle o Ciclo de Vida de Desarrollo del Software) donde se observa una etapa del testing para cada etapa del desarrollo. El modelo V es una extensión del modelo Waterfall donde cada etapa se presenta en forma secuencial.

Metodo Waterfall

Fases del desarrollo de software Actividades de cada etapa
Recolección de requerimientosObtener lo mas detallada información posible sobre los requerimientos que debe cumplir el software.
DiseñoDiseño del software, lenguage a utilizar: PHP, JAVA, NET, etc. Base de datos que mejor se acopla.
DesarrolloEscribir el código del programa.
TestingSe prueba el programa segun los requerimientos del cliente
Puesta en producciónLiberar una versión del programa en el entorno establecido.
MantenimientoUna vez el programa se encuentra en funcionamiento, puede que tengas nuevas solicitudes del cliente sobre alguno de los requerimientos.

Problemas con el modelo Waterfall

Como puede observar la etapa del testing no comienza hasta el final del proceso.
En un proyecto grande es puede desencadenar que se te escapen funcionalidades de usuario o que el cliente no reciba lo que esperaba y tengas que rever partes del software para hacerlas nuevamente.

El seguimiento de miles de proyectos demuestra que los errores encontrados durante la etapa de requerimientos y diseño baja considerablemente la cantidad total de errores que se encontraran durante el desarrollo.

"Costo relativo"

También el costo de arreglar los errores encontrados se agranda cuanto mas avanzado este el desarrollo.
Lo que nos lleva a la necesidad de testear en etapas tempranas del desarrollo para reducir costos.

Solución el modelo V

Para atacar este problema, se desarrolló el modelo V para cada etapa del ciclo de desarrollo hay una etapa de testing.

Es conocido como modelo de Validación o Verificación (Validation or Verification model)

v-model

Arriba podemos visualizar a la izquierda el modelo en inglés y a la derecha en español.

Dentro del gráfico del lado izquierdo podemos ver el proceso de desarrollo SDLC, del lado derecho podemos visualizar las distintas etapas de testing STLC.

Otras metodologías de desarrollo como agile realizan tests por cada funcionalidad que se desarrolla evitando los altos costes de encontrar errores en etapas tardías del desarrollo del software.

STLC

Es una secuencia de actividades llevadas a cabo para asegurar la calidad del software según las metas.
Involucra la verificación y validación. Contrario a lo que se suele pensar testing no es una única actividad, conlleva una serie de actividades para certificar la calidad del producto.

Fases

  1. Análisis de requerimientos.
  2. Planificación de pruebas.
  3. Desarrollo de los casos de pruebas.
  4. Preparación del ambiente de pruebas.
  5. Ejecución de pruebas.
  6. Cierre del ciclo de pruebas.

Cada una de estas etapas tiene criterios de entrada y salida, actividades y entregas asociadas.

¿Que son criterios de entrada y salida en STLC?

  • Criterio de entrada: Son los items que deben estar presentes antes de realizar el testeo.
  • Criterio de salida: Son los items que deben estar finalizados para poder decir que el test esta completado.

Etapa de requerimientos

Aquí se estudia los requerimientos desde el punto de vista del testing, los equipos QA deben interactuar con los stakeholders (clientes o representantes) para entender en detalle los requerimientos de validación y verificación.

Los requerimientos pueden ser funcionales o no funcionales. La posibilidad de automatizarlo también es analizado en este punto.

Actividades en la etapa de análisis de requerimientos

  • Identificar tipos de tests.
  • Definir las prioridades de los tests.
  • Preparar una matriz de seguimiento de requerimientos (Requirement Traceability Matrix RTM).
  • Identificar cuáles son los requerimientos del entorno de pruebas.
  • Analizar la necesidad y posibilidad de automatización.

Entregas de la etapa de requerimientos

  • RTM.
  • Reporte sobre la posibilidad de automatización.

Planificación de pruebas

En esta etapa un QA manager determina la estrategia junto con los esfuerzos y costos de los mismo.

Proyecta las necesidades de los ambientes, las limitaciones y el cronograma. El plan de testeo se prepara y finaliza en la misma etapa.

Actividades

  • Preparación del documento plan / estrategia de testeo para varios tipos de testing.
  • Herramientas de testing.
  • Estimación de esfuerzo.
  • Planificación y determinación de roles y responsabilidades.
  • Requerimientos de entrenamiento.

Entregas de la planificación

  • Documento del plan / estrategia.
  • Documento con estimación.

Desarrollo de los casos de prueba

Involucra la creación, verificación y reelaboración de los casos de testeo y los test scripts luego de que este listo el test plan.
Inicialmente los datos de las pruebas (test data) es identificada y luego creada y revisada basandose en las precondiciones.

El equipo QA comienza con el desarrollo de los tests.

Actividades

  • Crear casos de prueba, scripts de automatización (si corresponde).
  • Revisión de las bases para los tests
  • Crear los datos para el entorno de pruebas si se encuentra operativo.

Entregas

  • Casos / scripts de pruebas
  • Datos de prueba

Preparación del entorno de pruebas

En este se decide las condiciones del software y hardware sobre el cual se van a aplicar las pruebas.

Actividades

  • Entender los requerimientos de la arquitectura
  • Preparar el ambiente con los datos de prueba
  • Realizar un smoke test del entorno.

Entregas

  • Entorno listo para usar
  • Resultados de los test smoke

Etapa de ejecución

Es llevada a cabo por testers basándose en el test plan y los casos de testeo creados.

El proceso consiste en la ejecución de tests, tests de mantenimiento, reporte de bugs.

Si hay bugs reportados entonces se envía nuevamente- a desarrollo para la corrección y luego se vuelve a testear.

Actividades

  • Ejecutar tests según planificación.
  • Documentar los resultados y cargar defectos de encontrarse alguno.
  • Mapear los defectos con el test en RTM.
  • Revisar nuevamente los defectos que fueron arreglados por desarrollo.
  • Seguimiento de los defectos hasta que estén los resueltos.

Entregas

  • Completar la ejecución de los casos de RTM.
  • Actualización del status.
  • Reporte de defectos.

Cierre del ciclo

En esta etapa los equipos de testing se reúnen para discutir y analizar los artefactos de prueba para la identificación de nuevas estrategias que se pueden seguir y evitar posibles trabas en el futuro.

Actividades

  • Evaluar el ciclo, revisión de lo completado según tiempo cobertura costo, objetivos críticos del negocio.
  • Preparar las métricas.
  • Documentar lo operado del proyecto.
  • Preparación de un reporte.
  • Reportaje de la calidad del producto para el cliente.
  • Reporte de la calidad del producto para el cliente
  • Reporte de defectos encontrados en distribución por el tipo de severidad.

Entregable

  • Reporte del cierre
  • métricas de los tests