Tema 1: Fundamentos de la prueba
1 ¿Qué es Probar?
Probar el software es una forma de evaluar la calidad y de reducir el riesgo de fallo en producción.
Un producto erróneo causa muchos problemas (pérdida de dinero,reputación,tiempo,lesiones o riesgo de muerte...etc).
La prueba de software es un proceso que incluye muchas actividades diferentes; la ejecución de la prueba es sólo una de estas.
Las pruebas no sólo se centran en la verificación de requisitos, también implica la validación de que el sistema es capaz de satisfacer las necesidades del usuario.
Formas de probar
- Pruebas dinámicas , implican la ejecución del componente o sistema que se está probando.
- Pruebas estáticas, no implican ejecución (revisiones..etc).
Objetivos de las pruebas
- Evaluar productos de trabajo como requisitos, historias de usuario, diseño y código
- Desencadenar fallas y encontrar defectos
- Garantizar la cobertura requerida de un objeto de prueba
- Reducir el nivel de riesgo de una calidad de software inadecuada
- Verificar si se han cumplido los requisitos especificados
- Verificar que un objeto de prueba cumple con los requisitos contractuales, legales y reglamentarios
- Proporcionar suficiente información a los implicados para que puedan tomar decisiones informadas
- Generar confianza en la calidad del objeto de prueba
- Validar si el objeto de prueba está completo y funciona según lo esperado
Prueba y Depuración
Las pruebas y depuración son actividades separadas
Las pruebas pueden mostrar fallos causados por defectos en el software.
La depuración es la actividad de desarrollo que encuentra, analiza y corrige dichos defectos.
Las pruebas pueden desencadenar fallas causadas por defectos en el software (pruebas dinámicas) o pueden encontrar directamente defectos en el objeto de prueba (pruebas estáticas).
Cuando las pruebas dinámicas desencadenan una falla , la depuración se ocupa de encontrar las causas de esta falla (defectos), analizar estas causas y eliminarlas. El proceso de depuración típico implica:
- Reproducción de una falla
- Diagnóstico
- Corregir la causa
Las pruebas de confirmación posteriores comprueban si las correcciones resolvieron el problema (la prueba se realiza por la misma persona que realizó la prueba inicial, también se pueden hacer pruebas de regresión posteriores para verificar si las correcciones están causando fallas en otras partes del software)
1.2 ¿Por qué es necesario probar?
1.2.1 - Contribuciones de la Prueba al Éxito (importancia de las pruebas)
- La identificación y eliminación de defectos en los requisitos lo cual reduce el riesgo de desarrollar funcionalidades incorrectas
- Aumentar la comprensión sobre el diseño y la forma de probarlo, reduciendo el riesgo de defectos de diseño
- Puede detectar fallos que de otro modo podrían haberse omitido aumentando la probabilidad de que el software cumpla con las necesidades.
2 - Aseguramiento de la Calidad y Proceso de Pruebas
- Aseguramiento de la calidad se centra por lo general en el cumplimiento de los procesos adecuados, a fin de proporcionar la confianza de que se alcanzarán los niveles de calidad adecuados.
El aseguramiento de la calidad es algo orientado al proceso preventivo :
- - Documentación
- - Buenas prácticas de desarrollo
- - Entrenamiento de personal
- - Buen control de cambios
- El control de la calidad implica varias actividades, incluyendo actividades de prueba que apoyan el logro de niveles apropiados de calidad (lo que serían las pruebas como tal)
Está orientado al producto correctivo:
- - Pruebas dinámicas
- - Pruebas automáticas
- - Detección de bugs
- - Pruebas de regresión
- La gestión de la calidad incluye todas las actividades que dirigen y controlan una organización con respecto a la calidad . (QA (Quality Assurance es más proactivo, orientado al proceso) + QC (Quality Control es más reactivo, orientado al producto)
3 - Errores , Defectos y Fallos
- Una persona puede cometer un error que puede llevar a la introducción de un defecto (falta o bug) en el código software:
Ej, un desarrollador se equivoca en el código, está haciendo la operación multiplicación para una calculadora y en vez de poner el operador * pone el división / en el código (equivocación)
- Si se ejecuta un fragmento de código que contiene un defecto, esto puede causar un fallo:
Cuando ese código se ejecute , el defecto hace que la calculadora no funcione como se espera (causa).
- El defecto puede convertirse en un fallo si el software no maneja esa excepción y deja de funcionar o se cae :
Ej, la calculadora se daña cuando un usuario intenta multiplicar 5 * 0 y en vez de esto la calculadora hace 5/!’ lo cual genera un error (efecto)
3º Siete Principios de la prueba
- La prueba muestra la presencia de defectos, no su ausencia
Yo pruebo una app y encuentro defectos, pero si no encuentro nada no puedo afirmar que no hay defectos.
- La prueba exhaustiva es imposible
Ejemplo: 1+1, 1+2, 1+3 ...etc
- La prueba temprana ahorra tiempo y dinero
- Los defectos se agrupan
- Cuidado con la paradoja del pesticida
Cambiar las pruebas y los datos, es decir si hacemos una prueba una y otra vez con los mismos datos y no encontramos errores , debemos de cambiar el tipo de pruebas y los datos introducidos en la prueba.
- La prueba depende del contexto
Es muy distinto el software de un avión que el software de una web e-Commerce
- La ausencia de errores es una falacia
(relacionado con el principio n.º 1)
4º Proceso de la prueba
1 - El proceso de prueba en contexto :
*FACTORES QUE INFLUYEN*
- Modelo de ciclo de vida de desarrollo de software en la organización
- Niveles y tipos de prueba considerados
- Riesgos de producto y de proyecto
- Dominio del negocio
- Restricciones operativas
- Políticas y prácticas de la organización
- Plazos
2 - Actividades y tareas de pruebas
3 - Productos de trabajo de Prueba (artefactos)
Son los acabados que se crean durante el proceso de pruebas
(Estándar de cálidad ISO/IEC/IEE29119-3):
Los artefactos son :
- Planeación: 1 o más planes de prueba
- Monitoreo: Reportes de prueba y status
- Análisis: Definición y priorización de casos de prueba
- Diseño: Casos de prueba
- Implementación y Ejecución: Suites de prueba, resultados de prueba, reportes de prueba, reporte de defectos y documentación
- Finalización: Reporte de cierre, resumen de pruebas
5º Psicología del proceso de pruebas
1 - Psicología Humana y el Proceso de Pruebas :
- Algunas personas pueden percibir el proceso de prueba como una actividad destructiva
- La información sobre defectos y fallos debe ser comunicada de manera constructiva (colaboración en lugar de batallas)
- Se necesitan tener buenas competencias interpersonales para poder comunicarse eficazmente sobre defectos, fallos, etc.. (empatía , comunicación efectiva)
2 - Formas de Pensar del probador y del desarrollador:
* El desarrollador se enfoca a menudo en la construcción de soluciones y no en que podría salir mal. Básicamente este último apartado explica la forma de ver de los Desarrolladores y los Tester el mismo producto.
Tema 2: Pruebas a través del ciclo de vida de desarrollo. SLDC (Software Development Cycle)
* De esta unidad salen 6 preguntas en el examen aprox.
1º Modelos de Ciclo de vida del desarrollo del Software
Desarrollo y Prueba del software
Características de las pruebas en cualquier modelo
- Para cada actividad de desarrollo hay una actividad de prueba asociada
- Cada nivel de prueba tiene un objetivo de prueba especifico para este nivel
- El principio de “Prueba Temprana” se aplica a cualquier ciclo de vida
- Modelos de ciclo de vida de desarrollo:
- Modelo de Desarrollo Secuencial Iterativo (Modelo en Cascada y Modelo en V)
- Modelo en Cascada
- Modelo en V
- Modelo de Desarrollo Iterativo e Incremental:
Características:
- Entrega continua
- Equipos auto-organizados
- Pruebas de regresión
- Pueden ofrecer software en semanas
- Todas las etapas de SDLC (Software Development Life Cycle, ciclo de vida) se hacen en paralelo, diseño, construcción se entregan pequeños incrementos
Modelos de Ciclo de Vida del Desarrollo de Software en contexto
- Se adaptan en función del objetivo del proyecto , el tipo de producto que se está desarrollando, las prioridades del negocio y riesgos
- Puede ser necesario combinar o reorganizar los niveles de prueba.
Integration entre sistema
- Se pueden combinar los propios modelos de ciclo de vida de desarrollo.
Modelo V para Back-end Agile para Front-end
2º Niveles de Prueba
Pruebas Unitarias o de Componente
Las pruebas unitarias consisten en aislar una parte del código y comprobar que funciona a la perfección. Son pequeños tests que validan el comportamiento de un objeto y la lógica. El unit testing suele realizarse durante la fase de desarrollo de aplicaciones de software o móviles.
- Objetivos específicos:
- Verificar los comportamientos funcionales y no funcionales del componente
- Prevenir la propagación de defectos a niveles de prueba superior
- Bases de la prueba:
- Diseño detallado
- Código
- Modelos de datos
- Objetos de prueba:
- Componentes, unidades, o módulos
- Clases
- Modelos de BBDD
- Defectos típicos:
- Problemas de flujo de datos
- Codigo y Lógica incorrectos
- Funcionamiento incorrecto
- Enfoques y responsabilidades:
- Desarrollador que escribe el código realiza pruebas de componente
- Enfoque TDD Test Driven Development
Pruebas de Integración (suelen ser pruebas automatizadas)
Pruebas integrales o pruebas de integración son aquellas que se realizan en el ámbito del desarrollo de software una vez que se han aprobado las pruebas unitarias y lo que prueban es que todos los elementos unitarios que componen el software, funcionan juntos correctamente probándolos en grupo
- Objetivo de las pruebas:
- Verificarlos comportamientos funcionales y no funcionales de las interfaces sean las diseñadas
- Pruebas de integración de componentes del sistema
- Pruebas de integración entre paquetes o MicroServicios
- Base de las pruebas:
- Arquitectura a nivel de componente o sistema
- Diagramas de secuencia
- Objetos de prueba:
- Defectos típicos:
- Fallos en la comunicación entre componentes
- Fallos en la comunicación entre sistemas
- Error de datos que transmiten entre componentes
- Enfoques y responsabilidades:
- La prueba debe centrarse en la comunicación entre los módulos o sistemas, no en la funcionalidad de los modulos individuales
- Responsabilidad de los probadores (testers)
- Generalmente se hace una integración continua (Jenkins, Azure DevOPS, Bambú)
Pruebas de Sistema (Caja Negra)
Las pruebas de caja negra, también denominadas por el ISTQB como técnicas basadas en especificación, son una forma de derivar y seleccionar condiciones, datos y casos de prueba a partir de la documentación de requerimientos del sistema.
- Objetivos de la Prueba de Sistema:
- Validar que el sistema está completo y que funciona como se espera
- Generar confianza en la calidad del sistema considerando como un todo
- Encontrar defectos
- Bases de Pruebas:
- Casos de uso
- Épicas e historias de usuario
- Modelos de comportamiento del sistema
- Manuales del sistema y del usuario
- Objetos de Prueba:
- Aplicaciones
- Sistemas Hardware/Software
- Sistemas Operativos
- Configuración del sistema y datos de configuración
Pruebas de Aceptación
Son pruebas que realiza algún usuario final, PO (Product Owner..etc)
- Objetos de Prueba Característicos:
- Sistema sujeto a prueba
- Procesos de negocio para un sistema completamente integrado
- Sistemas de recuperación y sitios críticos
- Procesos operativos y de mantenimiento
- Defectos y Fallos Característicos:
- Las reglas de negocio no se implementan
- El sistema no satisface los requisitos
- Los flujos de trabajo del sistema no cumplen con los requisitos de negocio.
- Enfoques y Responsabilidades Específicos:
- Responsabilidad de los clientes , usuarios de negocio, propietarios de producto…
- Último nivel de prueba en un ciclo de vida de desarrollo secuencial
3º Tipos de Prueba
- Pruebas Funcionales, una prueba funcional es una prueba de tipo caja negra basada en la ejecución, revisión y retroalimentación de las funcionalidades previamente diseñadas para el software.
- Evalúan las funciones que el sistema debe realizar
- Se deben realizar en todos los niveles de prueba
- Utiliza técnicas de caja negra
- Pruebas NO Funcionales, son aquellas que verifican requisitos basados en la operación de un software, no en la funcionalidad en sí. Este tipo de pruebas, pueden ayudarnos a determinar la carga que soporta el producto, si su rendimiento es el correcto o si está estable a nivel de contacto con el servidor.
- Evalúan las características de los sistemas y software (como se comporta el software)
- Se deben realizar tan pronto como sea posible
- El estándar ISO/IEC 25010 calificalas características de calidad e producto de software.
- Pruebas de Caja Blanca, son pruebas de código abierto, debugging, son pruebas que se pueden hacer directamente en código sin necesidad de compilarlo.
- Son pruebas basadas en la estructura interna del sistema (Código, Arquitectura, Flujo de datos)
- Implicar competencias o conocimientos como la forma en que se construye el código o cómo se almacenan los datos. No son muy comunes, las hacen testers con alto conocimientos en progrmación.
- Pruebas Asociadas al cambio, tipo de prueba funcional asociada algún cambio, se dividen a su vez en dos:
- Prueba de confirmación: confirma que el defecto original se ha solucionado de forma satisfactoria
- Prueba de regresión:
- Las regresiones son efectos secundarios no deseados debido a los cambios (código, entorno, BBDD)
- Fuerte candidato para la automatización
- Consideraciones:
- Se realizan en todos los niveles de prueba
- Importante en Desarrollo Ágil y Sistemas IoT
- Tipos de Prueba y Niveles de Prueba, es posible realizar cualquiera de los tipos de prueba en cualquier nivel de prueba.
4º Pruebas de Mantenimiento
Activadores para el Mantenimiento
- Modificación:
- Mejoras planificadas
- Cambios correctivos
- Cambios de emergencia
- Cambios en el S.O
- Migración:
- De una plataforma a otra
- De Datos
- Retirada:
- Comprobación de la migración de datos
- Procedimientos de restauración/ recuperación
Análisis de Impacto para el mantenimiento:
- Identifica el impacto de un cambio en las pruebas existentes
- Identifica las áreas del sistema que se verán afectadas por el cambio
Tema 3: Pruebas Estáticas y Dinámicas
* De este tema saldrán unas 3 preguntas aprox.
Conceptos Básicos
- Introducción:
- Revisiones ,evaluación manual de los productos de trabajo
- Análisis Estático, evualuación basada en herramientas del código
- Productos de Trabajo que pueden ser evaluadas por pruebas estáticas:
- Especificaciones, incluidos requisitos funcionales y requisitos de seguridad
- Épicas , historias de usuarios y criterios de aceptación
- Especificaciones de arquitectura y diseño
- Código
- Contratos , planes de proyecto calendarios y presupuestos
- Ventajas de la Prueba Estática
- Detección y correción de defectos de forma más eficiente y antes de la ejecución de la prueba dinámica
- Identificar defectos que no se encuentran fácilmente mediante prueba dinámica
- Incrementar la productividad de desarrollo
- Reducir el coste y el tiempo de la prueba
- Diferencias entre la Prueba Estática y Dinámica:
- La Prueba Estática detecta defectos en los productos de trabajo directamente en lugar de identificar los fallos
- Defectos típicos:
- Defectos de los requisitos
- Defectos de Diseño
- Defectos de codificación
- Desviaciones con respecto a los estándares
- Vulnerabilidades de seguridad
- Pruebas dinámicas:, son aquellas que se realizan mientras el código está en ejecución. Tienen como objetivo asegurar que el software se comporte de acuerdo con los requerimientos del negocio mediante la realización de pruebas funcionales y no funcionales.
Estas pruebas se enfocan en la detección y confirmación de la corrección de defectos en el software. Por lo general se realizan en una etapa más tardía que las pruebas estáticas, por lo cual, los defectos encontrados en estas son más costosos.
- Pruebas estáticas:, A diferencia de las pruebas dinámicas, estas no requieren de la ejecución de software para ser realizadas. Parte del objetivo de las pruebas estáticas es la revisión de productos de trabajo como documentos de requerimientos, casos de prueba, planes de prueba, código, guías de usuario.
Estas pruebas se enfocan en la prevención de defectos y en la detección temprana de los mismos, ya que se pueden realizar en cualquier etapa del ciclo de vida de software según la información que se tenga disponible.
Técnicas que se utilizan: Revisión informal, Revisión técnica, Revisión guiada, Inspección, Revisión de código
Proceso de Revisión
- Proceso de revisión de Productos de Trabajo:
- Planificación
- Iniciar Revisión
- Revisión Individual (es decir, preparación individual)
- Comunicación y Análisis de Cuestiones
- Corregir e Informar
- Roles y Responsabilidades en una revisión formal:
- Autor
- Dirección
- Facilitador (a menudo llamado moderador)
- Líder de Revisión
- Revisores
- Tipos de Revisión:
- Revisión Informal(revisión de pares, utilizado con mucha frecuencia en Desarrollo Agile)
- Revisión Guiada, como objetivos principales tiene detectar defectos, mejorar el producto software, considerar implementaciones alternativas
- Revisiones Técnicas, los revisores deben ser pares técnicos del autor y expertos técnicos en la misma u otra disciplina
- Inspección
- Aplicación de Técnicas de revisión:
- AD Hoc, los revisores reciben poca o ninguna orientación sobre como se debe realizar esta
- Basada en la Lista de Comprobación
- Escenarios y ensayos , los revisores reciben pautas estructuradas
- Basada en Roles , los revisores evaluán el producto de trabajo desde la perspectiva de roles individuales
- Basada en Perspectiva, los revisores adoptan los diferentes puintos de vista
- Factores de Éxito para las revisiones:
- Cada revisión tiene objetivos claros, definidos durante la planificación de la revisión y utilizados como criterio de salida
- Se involucra a las personas adecuadas para alcanzar los objetivos de la revisión
- Los probadores son vistos como revisores valiosos que contribuyen a la revisión
- Los participantes dedican tiempo ya atención adecuados a los detalles
Tema 4: Técnicas de prueba
* De este tema saldrán unas 14 preguntas aprox.
Categorías de Técnicas de Pruebas
- Elección de Técnicas de Prueba:
- Factores:
- Tipo de componente o sistema
- Complejidad del componente
- Estándares de regulación
- Niveles de Riesgo
- Documentación disponible
- Herramientas disponibles
- Modelo de ciclo de vida de desarrollo de software implementado
- Categorías de Técnicas de Prueba y sus características:
- Técnicas de prueba de caja negra (pruebas funcionales):
- Base de prueba: Especificaciones, Requisitos del Software, Casos de uso, Historias de usuario.
- La cobertura se mide en función de los elementos probados en la base de prueba y de la técnica aplicada a la base de prueba.
,- Técnicas de prueba de caja blanca (pruebas no funcionales):
- Base de Prueba : Código, La arquitectura de software, Cualquier otra fuente de información
- La cobertura se mide en base a los elementos probados dentro de una estructura seleccionada
,- Técnicas de prueba basadas en la experiencia:
- Serían los conocimientos , experiencia de los probadores , testers, usuarios, desarrolladores y otros implicados
-
Técnicas de diseño de caso de pruebas de Caja Negra
TÉCNICA PARTICIÓN DE EQUIVALENCIA
Se trata de una técnica que prueba por particiones, (ver la imagen de arriba).
- Divide los datos en particiones
- Existen particiones de equivalencia tanto para valores válidos como no válidos
- La cobertura se mide como el número de particiones de equivalencia probadas por al menos un valor y dividido / número total de particiones de equivalencia
TÉCNICA DE ANÁLISIS EN VALORES FRONTERAS(AVF)
- Es una extensión de la partición de la equivalencia
- Sólo si la partición consiste en datos numéricos o secuenciales
- Los valores mínimo y máximo de una partición son sus valores frontera
- El comportamiento en las fronteras de las particiones de equivalencia es más
probable que sea incorrecto que el comportamiento dentro de las particiones
- La cobertura de frontera para una partición se mide como el número de valores frontera probados, dividido por el número total de valores frontera de prueba identificados, normalmente expresado como un porcentaje
TÉCNICA DE TABLA DE DECISIÓN
- Útiles para probar la implementación de requisitos de sistema que especifican cómo diferentes combinaciones de condiciones generan diferentes resultados
- Buena manera de documentar reglas de negocio complejas que un sistema debe implementar
- El probador identifica las condiciones (a menudo entradas) y las acciones resultantes ( a menudo salidas)
- Una tabla de decisión completa tiene suficientes columnas para cubrir cada combinación de condiciones
- La tabla se puede colapsar
- Cobertura: % del número de reglas de decisión probadas por al menos un caso de prueba, dividido por el número total de reglas de decisión
TÉCNICA DE TRANSICIÓN DE ESTADO (bastante usada)
- Elementos:
- Estado: respuesta diferente de un componente o sistema a un evento
- Transición: se inicia con un evento
- Evento:ejemplo, la entrada de un valor por parte del usuario en un campo
- Acción: ejemplo, emitir el resultado de un cálculo o un mensaje de error
- Es importante crear un diagrama de transición de estado (lo suelen hacer los Business Analyst, aunque tb lo pueden hacer los QA), muestra:
- Los posibles estados del software
- La forma en que el software entra, sale y realiza las transacciones entre estados
- También se crea una tabla de transición de estado, muestra:
- Todas las transiciones válidas
- Las transiciones potencialmente inválidas entre estados
- Los eventos
- Condiciones de guarda
- Las acciones resultantes para las transiciones válidas
Ejemplo tabla de transición de estado:
- Diseño de Pruebas:
- Para cubrir una secuencia de estados típica
- Para practicar todos los estados
- Para practicar cada transición
- Para practicar secuencias específicas de transiciones
- Para probar transiciones inválidas
- Utilización:
- Aplicaciones basadas en menús
- Industria del software embebido
- Modelar un escenario de negocio con estados específicos
- Probar la navegación en pantalla
- Cobertura: % del número de estados o transiciones identificados probados, dividido por el número total de estados o transiciones identificados en el objeto de prueba
TÉCNICA DE CASO DE USO
Técnicas de diseño de caso de pruebas de Caja Blanca
Recordar que son técnicas en las que se hace pruebas con el código (pruebas no funcionales)
TÉCNICA COBERTURA DE SENTENCIA
Se validan o se depuran las sentencias de código
TÉCNICA COBERTURA DE DECISIÓN
- Practica las decisiones en el código y prueba el código que se ejecuta basado en los resultados de la decisión
- Los casos de prueba siguen los flujos de control que se producen desde un punto de decisión, en este caso en el ejemplo sería validar esto:
- Cobertura : % del número de resultados de decisión ejecutados por las pruebas dividido por el número total de resultados de decisión en el objeto de prueba
Técnicas de prueba basadas en la Experiencia
- Predicción de Errores:
- Utilizada para anticipar la ocurrencia de errores , defectos y fallos , basada en el conocimiento del probadores
- Las pruebas se diseñan en base a una lista creada de posibles errores, defectos y fallos
- Prueba Exploratoria:
- Se diseñan, ejecutan, registran y evalúan de forma dinámica pruebas informales (no predefinidas) durante la ejecución de la prueba.
- Se utiliza la prueba basada en sesiones para estructurar la actividad.
- Puede incorporar el uso de otras técnicas de caja negra, caja blanca y basadas en la experiencia.
- Prueba Basada en Listas de Comprobación:
- Los probadores diseñan , implementan y ejecutan pruebas para cubrir las condiciones de prueba que se encuentran en una lista de comprobación.
- Las listas de comprobación pueden elaborarse basándose en la experiencia.
- Dan soporte pruebas funcionales y no funcionales.
- Proporciona directrices y un cierto grado de consistencia a falta de casos de prueba. (se suele utilizar un checklist)
TIPOS DE PREGUNTAS
Tema 5: Gestión de la prueba
*De aquí saldrán unas 9 o 10 preguntas*
INDEPENDENCIA DE LAS PRUEBAS
La independencia de las pruebas dependerá del modelo de desarrollo que se esté usando en la empresa, Independencia de pruebas es la separación de responsabilidades, que fomenta la realización de pruebas objetivas.
Tipos de Testers o probadores:
- Probadores independientes externos a la organización
- Probadores no independientes
- Desarrolladores independientes o probadores dentro de los equipos de desarrollo
- Equipo o grupo de prueba independiente dentro de la organización
- Equipos de prueba que están fuera de la organización:
- Beneficios de los probadores independientes:
- Los probadores independientes reconocen diferentes tipos de fallos en comparación con los desarrolladores debido a sus diferentes contextos, perspectivas técnicas y sesgos.
- Un probador independiente puede verificar, cuestionar o refutar las suposiciones hechas por los implicados durante la especificación e implementación del sistema.
- Desventajas de los probadores independientes:
- Los desarrolladores pueden perder el sentido de la responsabilidad con respecto a la calidad del producto.
- Los probadores independientes pueden ser vistos como un cuello de botella o ser culpados por los retrasos del lanzamiento o liberación.
TAREAS DE UN TEST LEADER Y UN TESTER
Test Leader
- Desarrollar las competencias y las carreras profesionales de los probadores
- Apoyar la selección e implementación de herramientas para dar soporte al proceso de prueba, incluyendo la recomendación del presupuesto para la selección de herramientas, la asignación de tiempo y esfuerzo para los proyectos piloto y la provisión de un soporte continuo en el uso de la herramienta o herramientas.
- Introducir métricas adecuadas para medir el avance de la prueba y evaluar la calidad de la prueba y del producto.
- Preparar y entregar informes de avance de la prueba e informes de resumen de prueba.
- Redactar y actualizar el/los plan(es) de prueba
- Planificar las actividades de la prueba considerando el contexto y entendiendo los objetivos y riesgos de la prueba
- Desarrollar o revisar una política de prueba y una estrategia de prueba para la organización
Tester
- Revisar y contribuir a los planes de prueba.
- Analizar , revisar y evaluar la base de pruebas: los requisitos, historias de usuario y criterios de aceptación, especificaciones y modelos para la capacidad de ser probados.
- Identificar y documentar las condiciones de prueba y capturar la trazabilidad entre los casos de prueba , las condiciones de prueba y la base de prueba.
- Diseñar, preparar y verificar los entornos de prueba a menudo en coordinación con las áreas de administración de sistemas y gestión de redes.
- Preparar y obtener datos de prueba
- Ejecutar pruebas, evaluar los resultados y documentar los desviaciones de los resultados esperados.
- Automatizar las pruebas según sea necesario
- Evaluar características no funcionales tales como eficiencia de desempeño , fiabilidad , usabilidad , seguridad, compatibilidad y portabilidad
PLANIFICACIÓN Y ESTIMACIÓN DE LA PRUEBA
PROPÓSITO Y CONTENIDO DE UN PLAN DE PRUEBA
- Determinar el alcance, los objetivos y los riegos de la prueba
- Definir el enfoque general de la prueba
- Integrar y coordinar las actividades de prueba en las actividades del ciclo de vida del software
- Tomar decisiones sobre lo que se va a probar, las personas y otros recursos necesarios para realizar las diversas actividades de prueba y cómo se llevarán a cabo las actividades de prueba
- Establecer un calendario para las actividades de análisis , diseño, implementación, ejecución y evaluación de la prueba, ya sea en fechas particulares o en el contexto de cada iteración
- Selección de métricas para monitorizar y controlar la prueba
- Determinar el nivel de detalle y la estructura de la documentación de la prueba (por ejemplo, proporcionando plantillas o documentos de ejemplo
ESTRATEGIAS Y ENFOQUES DE LA PRUEBA
Analítica
Las pruebas se analizan en función de los requisitos o en función del nivel de riesgo
Basada en Modelos:
Las pruebas se diseñan basándose en algún modelo de algún aspecto requerido del producto:
- Modelo de Proceso de Negocio
- Modelo de Estado
- Modelo de Crecimiento de fiabilidad
Metódica:
Se basa en el uso sistemático de un cojunto predefinido de pruebas o condiciones de pruebas
LISTA DE CARACTERÍSTICAS DE CALIDAD IMPORTANTES:
Conforme a proceso
Implica el análisis , diseño e implementación de pruebas basadas en reglas y estándares externos:
- Estándares específicos de la industria
- Documentación de procesos
- Proceso, frameworks o estándar impuesto por la organización
Dirigida (o consultiva):
Se basa principalmente en el asesoramiento, la orientación o las instrucciones de implicados fuera del equipo de pruebas:
- Expertos en el dominio del negocio
- Expertos en tecnología
Adversa a la regresión:
- Adversa a la regresión, estrategia motivada por el deseo de evitar la regresión de las capacidades existentes
- Reutilización de productos de prueba existentes
- Automatización extensiva de las pruebas
Reactiva:
Las pruebas se diseñan en respuesta al conocimiento obtenido de los resultados de prueba anteriores, Uso de pruebas exploratorias.
CRITERIOS DE ENTRADA Y CRITERIOS DE SALIDA (DoD y DoR)
Criterios de entrada habituales:
- Disponibilidad de requisitos, historias de usuarios y/o modelos
- Disponibilidad de elementos de prueba que han cumplido los criterios de salida para cualquiera de los niveles de prueba anteriores
- Disponibilidad del entorno de pruebas
- Disponibilidad de las herramientas de prueba necesarias
- Disponibilidad de datos de prueba y otros recursos necesarios
Criterios de salida habituales:
- Las pruebas planificadas han sido ejecutadas
- Se ha logrado un nivel de cobertura definido
- El número de defectos no resueltos se encuentra dentro de un límite acordado
CALENDARIO DE EJECUCIÓN DE PRUEBA
- Los diversos casos de prueba y procedimientos de prueba han sido desarrollados y agrupados en juegos de prueba (test suites)
- Los juegos de prueba (test suites) pueden organizarse en un calendario de ejecución de prueba que define el orden en el que deben ejecutarse
- Factores a tener en cuenta :
- Priorización
- Dependencias
- Pruebas de confirmación
- Pruebas de regresión
- Secuencia más eficaz para ejecutar las pruebas
FACTORES QUE INFLUYEN EN EL ESFUERZO DE LA PRUEBA
Características del Producto
- Los riesgos asociados al producto
- La calidad de la base de prueba
- El tamaño del productos
- La complejidad del dominio del productos
- Los requisitos para las características de calidad
Características del Proceso de Desarrollo:
- La estabilidad y madurez de la organización
- El modelo de desarrollo en uso
- El enfoque de la prueba
- Las herramientas utilizadas
- El proceso de prueba
- Presión con respecto al tiempo
Características de las personas:
- Las competencias y la experiencia de las personas involucradas, especialmente con proyectos y productos similares
- Cohesión y liderazgo de equipo
Resultados de la prueba:
- El número y la severidad de los defectos detectados
- La cantidad de reconstrucción necesaria
TÉCNICAS DE ESTIMACIÓN DE LA PRUEBA
- Técnica basada en métricas(Cascada): estimación del esfuerzo de prueba basada en métricas de proyectos similares, anteriores o en valores típicos.
- Técnica basada en expertos(Agile): estimación del esfuerzo de la prueba basándose en la experiencia de los propietarios de las tareas de prueba o por expertos.
MONITORIZACIÓN Y CONTROL DE LA PRUEBA
Métricas utilizadas en la prueba,¿Qué Evalúan?
- Avance con respecto al calendario y presupuesto previos
- Calidad actual del objeto de prueba
- Adecuación del enfoque de prueba
- Eficacia de las actividades de prueba con respecto a los objetivos
Métricas comunes
- Porcentaje de trabajo planificado realizado en la preparación de los casos de prueba
- Porcentaje de trabajo planificado realizado en la preparación del entorno de prueba
- Ejecución de casos de prueba
- Información sobre defectos
- Cobertura de prueba con respecto a requisitos, historias de usuarios , criterios de aceptación, riesgos o código
- El coste de la prueba
- Informe de Prueba
- Resumir y comunicar la información de la actividad de prueba, tanto durante como al final de un actividad de prueba
- Informe de Avance
- El estado de las actividades de prueba y el avance con respecto al plan de prueba
- Factores que impiden el avance
- Pruebas previstas para el próximo periodo objeto de informes
- La calidad del objeto de prueba
- Informe de Resumen
- Resumen de la prueba realizada
- Información sobre lo ocurrido durante un periodo de prueba
- Desviaciones con respecto al plan
- Estado de la prueba y calidad del producto con respecto a los criterios de salida o definición de hecho
- Métricas de defectos, casos de prueba, cobertura de la prueba, avance de la actividad y consumo de recursos
GESTIÓN DE LA CONFIGURACIÓN
Establecer y mantener la integridad del componente o sistema, los productos de prueba y sus relaciones entre sí a lo largo del ciclo de vida del proyecto y del producto.
- Todos los elementos de prueba
- Todos los elementos de productos de prueba (testware)
- Todos los documentos y elementos software identificados están referenciados de forma inequívoca en la documentación de la prueba
GESTIÓN DE RIESGOS
Riesgos de Producto y de Proyecto
- Posibilidad de que un producto de trabajo pueda no satisfacer las necesidades legítimas de sus usuarios y/o implicados
- Ejemplos:
- El software podría no realizar las funciones previstas de acuerdo con la especificación
- El software puede no realizar las funciones previstas de acuerdo con las necesidades de los usuarios, clientes o implicados
- Una arquitectura de sistema puede no soportar de forma adecuada algunos requisitos no funcionales
- Tiempo de respuesta lentos para un sistema de alto rendimiento
- Riesgos de proyecto (Jefes de proyecto)
- Implica situaciones que en caso que ocurran pueden tener un efecto negativo en la capacidad de lograr los objetivos
- Ejemplos:
- Retrasos en la entrega
- Estimaciones inadecuadas
- Personal no capacitado
- Disponibilidad de recursos
- Requisitos mal elaborados
- Ambiente no listo
- Mala gestión de defectos
- La prueba basada en el Riesgo y en la Calidad de Producto:
Basada en riesgos:
- Se usa para priorizar las pruebas, donde y cuando empezar
- Qué áreas necesitan más atención
- Determinar los niveles y tipos de pruebas a realizar
Mitigar los riesgos:
- Implementar acciones para mitigar los riesgos
- Elaborar planes de contingencia
GESTIÓN DE LOS DEFECTOS
- Proporcionar a los desarrolladores y otras partes información sobre cualquier evento adverso que haya ocurrido
- Proporcionar a los jefes de prueba un medio para hacer un seguimiento de la calidad del producto de trabajo y del impacto en la prueba
- Proporcionar ideas para la mejora de los procesos de desarrollo y prueba
- Contenido de un Informe de Defecto:
- Un identificador
- Un título y un breve resumen del defecto que se está informando
- Fecha del informe de defecto, organización emisora y autor
- La(s) fase(s) del ciclo de vida de desarrollo en la (s) que se observó el defecto
- Una descripción del defecto para permitir la reproducción y resolución
- Resultados esperados y reales
- Alcance o grado de impacto (severidad) del defecto
- Urgencia/prioridad de la corrección
- Estado del informe de defectos
- Conclusiones, recomendaciones y aprobaciones
- Cuestiones generales, tales como otras áreas que pueden verse afectadas por un cambio resultante del defecto.
- Referencias, incluyendo el caso de prueba que puso en evidencia el problema
Tema 6: Soporte de Herramientas en el proceso de pruebas
Clasificación de las Herramientas de Prueba
- Objetivos Posibles:
- Mejorar la eficiencia de las actividades de prueba
- Mejorar la calidad de las actividades de prueba
- Automatizar actividades que no se pueden ejecutar manualmente
- Soporte de Herramientas para la Gestión de la Prueba y Productos de Prueba:
- Herramientas de gestión de prueba y herramientas de gestión del ciclo de vida de las aplicaciones (JIRA, Azure DevOps)
- Herramientas de gestión de requisitos
- Herramientas de gestión de defectos (Mantis. BugZilla)
- Herramientas de gestión de la configuración (parecidas a JIRA, Azure)
- Herramientas de integración continua (Jenkins, Bamboo, Octopus, Azure DevOps...etc)
- Soporte de Herramientas para la Prueba Estática:
- Herramienta de apoyo a las revisiones
- Herramientas de análisis estático (SonarQube, Raxis,Embold, PVS..etc)
- Soporte de Herramientas para la Medición del Rendimiento y el Análisis Dinámico:
- Herramientas para la prueba de rendimiento
- Herramientas de monitorización(JMeter, SOAP UI, WebLoad..etc)
- Soporte de Herramientas para Necesidades de Prueba Especializadas:
- Evaluación de la calidad de los datos
- Conversión y migración de datos
- Prueba de usabilidad (Userlytics, Lockback, Hotjar..etc)
- Prueba de seguridad (Burp Suite, OWASP, NETSPARKER..etc)
- Prueba de portabilidad
Uso eficaz de las Herramientas
- Principios Básicos para la Selección de Herramientas:
- Evaluación de la madurez de la organización, sus fortalezas y debilidades
- Identificar oportunidades para un proceso de prueba mejorado con el soporte de herramientas
- Comprender las tecnologías utilizadas por el objeto u objetos de prueba con el fin de seleccionar una herramienta que sea compatible con dicha tecnología
- Las herramientas de compilación e integración continua ya en uso dentro de la organización, con el fin de asegurar la compatibilidad e integración de las herramientas
- Tener en cuenta si la herramienta está disponible durante un periodo de prueba gratuito
- Evaluar al proveedor o soporte para herramientas no comerciales
- Identificar los requisitos internos para el entrenamiento y asesoramiento en el uso de la herramienta
- Evaluar las necesidades de formación, teniendo en cuenta las competencias en materia de prueba (y automatización de la prueba) de quienes trabajarán directamente con la(s) herramienta(s)
- Proyectos Piloto para introducir una Herramienta en una organización:
- Objetivos:
- Evaluar como encaja la herramienta con los procesos y prácticas existentes y determinar qué se necesita cambiar
- Decidir sobre las formas estándar de usar, administrar, alamacenar y mantener la herramienta y los activos de prueba
- Evaluar si los beneficios se lograrán a un coste razonable
- Comprender las métricas que se desea que la herramienta recopile e informe
- Factores de Éxito para Herramientas:
- Despliegue de la herramienta al resto de la organización de forma incremental
- Adaptar y mejorar los procesos para que se ajusten al uso de la herramientas
- Entrenamiento
- Definición de directrices para el uso
- Monitorear el uso
- Proporcionar apoyo a usuarios