Introducción
Este plan de prueba tiene como objetivo garantizar la calidad, funcionalidad y confiabilidad de la API de Fake rest alojada en: API FAKE.
La API está diseñada para manejar libros, autores, fotos de portada, usuarios y actividades para un sistema de gestión de libros.
Descripción API
- Operación de creación (POST):
- Prueba la capacidad de la API para crear nuevos autores, libros, usuarios y otros utilizando datos de entrada válidos.
- Verifica que se devuelven respuestas de error apropiadas para datos inexistentes o no válidos.
- Valida que los datos recién creados se almacenan correctamente en el sistema.
- Operación de lectura (GET):
- Prueba la capacidad de la API para recuperar datos según varios criterios (por ejemplo, ID de usuario, nombre del autor, nombre del libro).
- Verifica que la API devuelve los datos correctos en respuesta a las solicitudes de lectura.
- Prueba el correcto manejo de datos inexistentes o no válidos.
- Operación de actualización (PUT):
- Prueba la capacidad de la API para actualizar datos existentes con datos nuevos válidos.
- Verifica que la API rechaza las solicitudes de actualización no válidas con respuestas de error adecuadas.
- Valida que los datos se modifican correctamente en el sistema después de las actualizaciones.
- Operación de eliminación (DELETE):
- Prueba la capacidad de la API para eliminar datos proporcionando criterios válidos (libro o ID de usuario).
- Verifica que la API devuelve respuestas adecuadas después de una eliminación exitosa.
- Valida que los datos eliminados sean eliminados del sistema.
Alcance
Alcance del plan de prueba para FakeRESTApi:
- Pruebas funcionales:
- Verifica la corrección y funcionalidad de todos los puntos finales de API según la documentación de API.
- Prueba varios escenarios para la creación, modificación y eliminación.
- Valida los mecanismos de autenticación y autorización de usuarios para endpoints protegidos.
- Validación de datos:
- Asegurar que la API valide correctamente los datos de entrada, rechazando solicitudes no válidas.
- Probar los valores de límite de los campos de entrada para comprobar si hay algún comportamiento inesperado.
- Validar la exactitud de los datos devueltos en las respuestas.
- Pruebas de manejo de errores:
- Verifica que se devuelvan códigos de error y mensajes apropiados para solicitudes no válidas.
- Verifica las respuestas de error para la divulgación de información confidencial.
- Valida la capacidad de la API para manejar errores inesperados de forma adecuada.
- Actuación:
- Evaluar el tiempo de respuesta de la API bajo cargas normales y máximas para identificar posibles cuellos de botella.
- Medir el rendimiento y la escalabilidad de la API para manejar solicitudes simultáneas.
- Pruebas de seguridad:
- Realizar evaluaciones de seguridad para identificar vulnerabilidades como inyección SQL, XSS, etc.
- Validar el cumplimiento de la API con prácticas seguras de transmisión de datos (por ejemplo, HTTPS).
- Verifique los controles de acceso adecuados para evitar el acceso no autorizado a recursos confidenciales.
- Pruebas de integración:
- Verifica las interacciones entre diferentes puntos finales y servicios API.
- Prueba la coherencia de los datos en todos los puntos finales relacionados.
- Compatibilidad: Prueba la API en diferentes plataformas, navegadores y dispositivos para garantizar la compatibilidad cruzada.
- Regresión: Realiza pruebas de regresión después de corregir errores o actualizar para garantizar que la funcionalidad existente permanezca intacta.
- Concurrencia: Evalua el comportamiento de la API cuando varios usuarios intentan acceder y modificar reservas simultáneamente.
- Pruebas de usabilidad:
- Evalúa la facilidad de uso de la API desde la perspectiva del desarrollador.
- Actuación: Implementa monitoreo para rastrear el rendimiento de la API en tiempo real.
- Prueba de carga: Evalúa el comportamiento de la API bajo altas cargas de usuarios simultáneos para garantizar la estabilidad.
- Prueba de límite de velocidad: Verifica el cumplimiento de la API con las reglas de limitación de velocidad para evitar abusos.
- Integración de terceros: Valida cualquier integración de terceros para un buen funcionamiento.
- Revisión de la documentación:
- Evaluar la claridad, integridad y precisión de la documentación de la API.
- Verificar que la documentación de la API esté sincronizada con el comportamiento real de la API.
Entorno de prueba
- Los sistemas operativos y las versiones que se utilizarán para las pruebas, como Windows 10, MacOS o Linux.
- Los navegadores y versiones que se utilizarán para las pruebas, como Google Chrome, Mozilla Firefox o Microsoft Edge.
- Los tipos de dispositivos de prueba y tamaños de pantalla, como ordenadores de escritorio, portátiles, tablets y teléfonos móviles.
- La conectividad de red y el ancho de banda que estarán disponibles para las pruebas, como conexión Wi-Fi, celular o por cable.
- Los requisitos de hardware y software para ejecutar los casos de prueba, como el procesador, la memoria o la capacidad de almacenamiento específicos.
- Los protocolos de seguridad y métodos de autenticación que se utilizarán para acceder al entorno de prueba, como contraseñas, tokens o certificación.
El permiso de acceso y la función de los miembros del equipo que utilizarán el entorno de prueba, como testers, desarrolladores o partes interesadas.
Datos de prueba
- El equipo de pruebas puede crear manualmente datos de prueba (válidos, no válidos) para cubrir escenarios específicos y casos extremos.
- Los scripts de automatización se pueden utilizar para generar grandes volúmenes de datos de prueba de forma rápida y eficiente.
- La fecha de prueba se puede crear de forma manual o automática según los esquemas de API.
- Al probar integraciones de API, las API simuladas pueden proporcionar datos sintéticos para probar varios escenarios.
- Para casos de uso específicos, se pueden utilizar proveedores de datos de terceros para obtener datos del mundo real para realizar pruebas.
- En algunos casos, los datos depurados del entorno de producción se pueden utilizar para realizar pruebas y replicar escenarios del mundo real.
Estrategia de prueba
Paso 1
- El primer paso es crear escenarios de prueba y casos de prueba para las distintas funciones incluidas en el alcance. Mientras desarrollamos casos de prueba, utilizaremos una serie de diseños de prueba.
- Técnicas.
- Partición de clases de equivalencia
- Análisis de valor límite
- Tabla de decisiones
- Pruebas de transición estática
- Pruebas de casos de uso
- También utilizamos nuestra experiencia en la creación de casos de prueba aplicando lo siguiente:
- Predicción de error
- Exploratorio
- También priorizamos los casos de prueba.
Paso 2
- Primero, realizaremos pruebas de humo para ver si funcionan las diferentes y/o principales funcionalidades de la aplicación.
- Rechazamos la compilación si la prueba de humo falla y esperaremos una compilación estable antes de realizar pruebas en profundidad de las funcionalidades.
- Una vez que recibimos la compilación estable, que pasa las pruebas de humo, realizamos pruebas en profundidad utilizando los casos de prueba creados.
- Varios recursos de prueba probarán la misma aplicación en varios entornos simultáneamente.
- Luego reportaremos los errores en la herramienta de seguimiento de errores y los enviaremos al desarrollador para que los resuelva.
- Como parte de las pruebas, realizaremos los siguientes tipos de pruebas:
- Pruebas de humo
- Pruebas de cordura
- Pruebas de regresión
- Pruebas de usabilidad
- Pruebas de funcionalidad
- Repetimos el Ciclo de Prueba hasta asegurar la calidad.
Paso 3
Seguiremos las siguientes prácticas para mejorar nuestras pruebas:
- Pruebas basadas en el contexto: Realizaremos pruebas según el contexto de la aplicación.
- Prueba de desplazamiento a la izquierda (Shift Left): Comenzaremos a realizar pruebas desde las etapas iniciales del desarrollo , no esperando al final de la entrega.
- Prueba exploratoria: Utilizando nuestra experiencia realizaremos Pruebas Exploratorias junto a la ejecución normal de los casos de prueba.
- Pruebas de flujo de un extremo a otro (End to End): Probaremos el escenario de un extremo a otro, lo que involucra múltiples funcionalidades para simular los flujos de los usuarios finales.
Procedimiento de notificación de defectos
- Criterios para identificar un defecto: desviación de los requisitos, problemas de experiencia del usuario o errores técnicos.
- Pasos para informar un defecto: usar una plantilla designada, proporcionar pasos de reproducción detallados y adjuntar capturas de pantalla o registros.
- Clasificar y priorizar defectos: asignar niveles de criticidad y prioridad, y asignarlos a los miembros apropiados del equipo para su investigación y resolución.
- Herramientas (JIRA/Test Rail) que se utilizarán para rastrear y gestionar defectos.
- Funciones y responsabilidades de los miembros del equipo involucrados en el proceso de informe de defectos, como los testers, los desarrolladores y el líder de pruebas.
- Canales de comunicación para actualizar a los interesados sobre el avance y estado de los defectos.
- Métricas que se utilizarán para medir la eficacia del proceso de informe de defectos: la cantidad de defectos encontrados, el tiempo necesario para resolverlos y el porcentaje de defectos que se solucionaron con éxito.
Calendario de pruebas
Se necesitarán dos sprints (un sprint = 5 días hábiles) para probar la aplicación. A continuación, se muestra el cronograma de pruebas planificado para el proyecto:
Duración del tiempo de la tarea como ejemplo:
- Creación de plan de prueba
- Creación de casos de prueba
- Ejecución de casos de prueba
- Fecha de presentación del informe resumido
Coberturas de prueba
La cobertura de prueba garantiza que todas las funcionalidades relevantes de la API se prueben adecuadamente. Mide la efectividad y la integridad del esfuerzo de prueba.
Criterios de cobertura para pruebas API:
- Cobertura funcional:
- Este criterio se centra en probar todos los requisitos funcionales de la API, tal y como se especifica en su documentación y diseño.
- Cada endpoint y método debe probarse con varias entradas válidas e inválidas para verificar su comportamiento y respuestas.
- Validación de datos y cobertura: Este criterio se centra en validar la exactitud de los datos devueltos por la API.
- Coberturas de manejo de errores:
- En las pruebas se deben incluir diferentes escenarios de error, como entradas no válidas, errores del servidor y respuestas que limitan la velocidad.
- La API debe probarse minuciosamente para garantizar que maneja los errores y proporciona mensajes de error apropiados con códigos de estado adecuados.
- Coberturas de desempeño: Se deben crear casos de prueba para simular varias cargas de usuarios y medir los tiempos de respuesta de la API y el uso de recursos.
- Coberturas de regresión: Los casos de prueba seleccionados de varios criterios de cobertura se reutilizan para validar las partes sin cambios de la API.
Riesgo y mitigación
A continuación, se presentan algunos riesgos comunes y estrategias de mitigación para abordarlos:
- Documentación API deficiente o desactualizada: Priorizar la obtención de datos actualizados y precisos
- Mensajes de error poco claros: Implementar pruebas negativas exhaustivas para validar escenarios de manejo de errores
- No disponibilidad de un recurso: Planificación de recursos de respaldo
- Las API que dependen de API o servicios externos pueden generar incertidumbres debido a factores más allá de la API que se está probando: Utilice API simuladas o servicios virtualizados para simular el comportamiento de aplicaciones externas - dependencias durante las pruebas.
- Los cambios o actualizaciones de la API pueden introducir regresiones que afecten a las funcionalidades existentes o que rompan la compatibilidad con aplicaciones dependientes: Ejecute pruebas de regresión después de cada actualización y lanzamiento de versión para garantizar la compatibilidad con versiones anteriores e identificar problemas de regresión.
- Menos tiempo para las pruebas: Incrementar los recursos en función de las necesidades del cliente.
- Comunicación insuficiente y colaboración entre testers, desarrolladores y partes interesadas puede resultar en malentendidos, requisitos incumplidos: Fomentar canales de comunicación abiertos y realizar reuniones periódicas entre los equipos de pruebas y desarrollo - Involucrar a las partes interesadas al principio del proceso de prueba para recopilar comentarios y aclarar los requisitos.
Herramientas de prueba
- Postman: Pruebas API
- Newman: automatización de API e informes de prueba
- JMeter: pruebas de carga y rendimiento
- Suite Burp: pruebas de seguridad
- JIRA: herramientas de seguimiento de errores
Funciones y responsabilidades
Tester: Desarrollar un plan de prueba.
- Definir el alcance y los objetivos.
- Asignar tareas al equipo de pruebas y supervisar el progreso.
- Revisar y aprobar casos de prueba y datos de prueba.
- Informar el progreso y los resultados de las pruebas a las partes interesadas.
Ingeniero QA: Crear, gestionar y mantener casos de prueba.
- Crear, administrar y mantener datos de prueba y asegurarse de que los datos de prueba sean relevantes, precisos y cubran varios escenarios.
- Colaborar con los testers de API para comprender los requisitos de datos.
- Proporcionar comentarios al líder de control de calidad sobre el progreso y los desafíos de las pruebas.
- Desarrollar y mantener scripts de prueba automatizados para pruebas de API.
Ingeniero Jr SQA: Ejecutar casos de prueba y registrar los resultados de las pruebas.
- Validar la funcionalidad, el rendimiento y los aspectos de seguridad de la API.
- Identificar, informar y rastrear defectos en un sistema de seguimiento de defectos.
- Colaborar con los desarrolladores para reproducir y verificar los informes.
Entregables de la prueba
Entregables a cliente:
- Plan de prueba: Detalles sobre el alcance del proyecto, estrategia de pruebas, pruebas, cronograma y resultados de pruebas.
- Prueba funcional/Casos: Casos de prueba creados para el alcance definido.
- Informe de defectos: Descripción detallada de los defectos identificados.
- Informe resumido del proyecto.