Desde nuestra experiencia en MTP, con más de 25 años en el sector de aseguramiento de negocios digitales (Digital Business Assurance), pensamos que un buen plan de pruebas debe contemplar muchos factores y abarcar un amplio número de tareas, partiendo de unos objetivos claros y concluyendo en una serie de entregables.
Al igual que la pasada semana hablábamos de la importancia de conseguir una buena experiencia de usuario (UX) para los clientes, a través de facilidades de utilización y uso agradable de una web o aplicación, en este caso vamos a tratar de la importancia de la calidad y robustez del software, también como factor diferenciador frente a la competencia. Un producto lanzado sin las debidas pruebas y corrección de errores, o con alguno de estos fallos no detectados, puede dar al traste con dicho producto y con la reputación de la empresa. En este mismo blog, en post titulados como “Qabalgando por la historia”, hemos relatado algunos ejemplos de pequeños fallos de software que al final han terminado en una trágica experiencia para las empresas.
En primer lugar, cabe destacar que el aseguramiento de la calidad no es un proceso aislado, sino que forma parte de un enfoque holístico en el proceso de desarrollo de un producto software. A través de una serie de prácticas y técnicas destinadas a la detección de errores, para su posterior corrección o eliminación, se llega a un producto final confiable, robusto, seguro y funcional, del que salen beneficiados los usuarios finales
Tipos de pruebas de software
Como hemos indicado, para conseguir el objetivo final de un producto software de calidad adquieren vital importancia las pruebas que aseguran que el software funcione de manera adecuada y responda a las necesidades de los usuarios. Existen diferentes tipos de pruebas, cada una con una función específica. Describimos a continuación algunos de los tipos más comunes.
En primer lugar, se realizan pruebas en los módulos individuales o funciones de un sistema software, para garantizar que funcionen correctamente antes de ser integrados. Son pruebas que permiten detectar, de forma temprana, posibles errores. Por tanto, el momento óptimo para la realización de estas pruebas unitarias es a medida que se desarrollan módulos individuales.
Tras las pruebas unitarias, se realizan otras enfocadas a comprobar el funcionamiento cuando se ha producido una unión de unidades o módulos. Son las llamadas pruebas de integración, que buscan comprobar que todas las partes forman un conjunto coherente que funciona sin problemas a través de la interacción de dichas partes. En esta fase se trata de detectar precisamente esos posibles problemas de comunicación o alguna incompatibilidad entre diferentes partes.
Las pruebas funcionales se centran en las pruebas de progresión, es decir, de la validación de las funcionalidades impactadas por el desarrollo. Se incluyen tres modalidades de certificación distintas, que se aplicarán según la naturaleza de dicho desarrollo:
– Pruebas de certificación funcional de proyectos (nuevos desarrollos)
– Pruebas de certificación funcional de mantenimientos evolutivos
– Pruebas de certificación funcional de mantenimientos correctivos.
Las pruebas funcionales engloban el diseño de los casos de prueba que formarán el Plan de Pruebas a ejecutar en la fase de ejecución.
El plan de pruebas es clave, y de su correcto diseño y puesta en práctica dependerá el éxito del proyecto y la calidad final del software implementado.
Enumeramos a continuación algunos aspectos que se deben tener en cuenta al diseñar un plan de pruebas efectivo para proyectos de software.
– Determinar los objetivos: Se debe proporcionar una descripción general del software que se va a probar, así como los objetivos y el alcance de las pruebas.
– Estrategia de Pruebas: Describiendo la estrategia general de pruebas que se utilizará, incluyendo los tipos de pruebas que se llevarán a cabo (manuales o automatizadas), los criterios de entrada/salida para las pruebas y los requisitos de cobertura de pruebas.
– Enfoque de Pruebas: Se describe el enfoque específico que se utilizará para las pruebas, incluyendo la planificación y diseño de casos de prueba, la ejecución de pruebas y la gestión de defectos.
– Cronograma y Recursos: Se detalla el cronograma de las pruebas anterior y los recursos necesarios para llevarlas a cabo, incluyendo los roles involucrados, herramientas etc.
– Casos de Prueba: Diseño de los casos de prueba específicos que se utilizarán para probar el software, incluyendo los pasos que se seguirán y los resultados esperados.
– Datos de Prueba: Descripción de los datos de prueba que se utilizarán durante las pruebas, incluyendo los datos de entrada y salida para validar la funcionalidad del software.
– Criterios de Aceptación: Es muy importante también recoger los criterios de aceptación que se utilizarán para evaluar el éxito de las pruebas, incluyendo los criterios para la aceptación del software y los criterios para la aprobación de las pruebas.
– Gestión de Defectos: Se debe plantear también como se gestionarán y documentarán los defectos encontrados durante las pruebas, incluyendo el proceso de informar los defectos, la forma en que se clasificarán y se priorizarán y cómo se hará su seguimiento hasta su resolución. Es muy importante establecer herramientas de soporte para esta actividad.
– Riesgos y Contingencias: Identificar los riesgos posibles durante la planificación de las pruebas y las medidas de contingencia que se tomarán para minimizar o mitigar esos riesgos.
– Conclusiones y Recomendaciones: Evaluación general de todo el proceso para determinar puntos de mejora u optimización.