Estimación de pruebas de software: qué es, cómo hacerla y qué técnicas utilizar
En el campo del desarrollo de software, la calidad de los resultados finales es muy importante, por lo que es necesario hacer una prueba completa para garantizar esta calidad. Sin embargo, es importante hacer los recursos adecuados estimados necesarios antes de comenzar la prueba.
Calcular el costo de las pruebas de software no solo permite anticipar el tiempo y esfuerzo necesarios, sino que también simplifica la administración efectiva del proyecto. En este escrito, analizaremos en detalle la importancia de la estimación de pruebas, los factores a tener en cuenta, la ejecución del proceso y las técnicas utilizadas en la industria.
¿Que es la estimación de pruebas?
La estimación es un proceso en el cual se busca predecir y definir: tiempo, recursos y esfuerzo que se necesitan para realizar todas las actividades de prueba. Incluye desde la planificación y el diseño de las pruebas hasta su ejecución y documentación.
Una estimación precisa permite a los equipos de desarrollo y prueba establecer expectativas realistas, planificar adecuadamente y gestionar los recursos de manera efectiva, la falta de una estimación adecuada puede llevar a retrasos en el proyecto, sobrecargas de trabajo y una calidad de producto deficiente.
¿Porque realizar la estimación de las pruebas ?
Dentro de las razones para realizar la estimación se encuentran: la planificación efectiva, distribución de recursos, manejo de riegos entre otros detallados acontinuación.
- Planificación efectiva y eficiente: Una estimación precisa es esencial para fijar fechas límite y horario posibles, esto asegura que las pruebas se incorporen de manera adecuada en el proceso de creación de software, evitando retrasos en las entregas y cambios en el calendario del proyecto
- Distribución de recursos: Se podría asignar de forma eficaz los recursos humanos y materiales, esto evita situaciones de bloqueo y exceso de trabajo, asegurando que el equipo de pruebas cuente con los recursos necesarios.
- Manejo de riesgos: Ayuda a encontrar posibles incidentes de manera anticipada. Realizando la anticipación es posible aplicar medidas de mitigación, disminuyendo la posibilidad de que se presenten y reduciendo su impacto en caso de suceder.
- Presupuesto detallado: Ayuda en la elaboración de presupuestos precisos garantizando la asignación correcta de fondos para las pruebas, previniendo gastos inesperados y asegurando que el proyecto no exceda el presupuesto.
- Calidad del proyecto: Asegura que se realicen todas las pruebas necesarias para garantizar un producto de alta calidad.
¿Que estimar?
- Recursos: Se necesitan recursos para completar con éxito cualquier tarea del proyecto, pueden ser personas, equipos, instalaciones, financiación etc.
- Tiempo: todos los proyectos tiene una fecha limite por lo cual el tiempo es uno de los factores mas importantes y criticos.
- Habilidades interpersonales: El conocimiento y la experiencia de los integrantes del equipo afectan sus estimaciones. Por ejemplo, un equipo con miembros con pocas habilidades de prueba tardará más en completar un proyecto que un equipo con buenas habilidades de prueba.
- Requerimientos de prueba: determinar y analizar los requerimientos funcionales y no funcionales para determinar el alcance de las pruebas.
- Tipos de Pruebas: Decidir qué tipos de pruebas se realizarán: pruebas unitarias, de integración, de sistema, de aceptación, de rendimiento, etc.
¿Como estimar?
La estimación de las pruebas por lo regular se realiza mediante los siguientes pasos:
- Recolección de requisitos: Comprender completamente los requisitos del proyecto y las expectativas del cliente.
- Identificación de tareas: Listar todas las tareas necesarias para llevar acabo y terminar las pruebas.
- Asignación de recursos: Determinar los recursos humanos y materiales necesarios para cada tarea a realizar.
- Definición de cronogramas: Definir un calendario detallado para la ejecución de las pruebas.
- Revisión y ajuste: Revisar y ajustar las estimaciones según sea necesario, basandose en la retroalimentación y los cambios en el proyecto.
Técnicas de estimación:
Dentro de las técnicas de estimación de pruebas se encuentran:
- Basada en experiencia; se apoya en el conocimiento obtenido por expertos que han participado en proyectos parecidos, teniendo en cuenta aspectos como la dificultad del proyecto, el tamaño del equipo y las tecnologías a utilizar, entre otros.
Pasos para realizarla:
- Reunir a un grupo de expertos en pruebas.
- Proporcionar una descripción detallada del proyecto.
- Los expertos discuten y comparten sus experiencias en proyectos similares.
- Cada experto proporciona una estimación del esfuerzo necesario.
- Se revisan las estimaciones y se llega a un consenso.
Ejemplo:
En el proyecto para desarrollar un nuevo sitio web, el equipo de pruebas con una amplia experiencia en la página web realiza un análisis, después de haber recibido que el experto evalúa que 250 horas de pruebas de la complejidad de la integración con varias API, teniendo en cuenta la calidad de la calidad de El código fuente en proyectos anteriores, asume 220 horas; Después del diálogo, están de acuerdo con una evaluación de 235 horas.
- Análisis de puntos de función: Miden la funcionalidad desde el punto de vista del usuario final y se utilizan para estimar el tamaño del software y el esfuerzo de prueba requerido.
Pasos para realizarla:
- Identificar y contar los puntos de función (entradas, salidas, consultas, archivos lógicos y archivos internos).
- Clasificar cada punto de función según su complejidad (bajo, medio, alto).
- Asignar valores de ponderación a cada categoría.
- Calcular el total de puntos de función.
- Usar datos históricos para determinar el esfuerzo por punto de función.
Ejemplo:
Supongamos que un proyecto tiene las siguientes características:
10 entradas simples (peso 3)
5 salidas complejas (peso 7)
8 consultas medias (peso 4)
2 archivos lógicos complejos (peso 10)
3 archivos internos medios (peso 5)
Total de puntos de función = (103) + (57) + (84) + (210) + (3*5) = 30 + 35 + 32 + 20 + 15 = 132 puntos de función.
Si históricamente se necesitan 3 horas por punto de función, el esfuerzo estimado sería 132 * 3 = 396 horas.
- Basada en casos de prueba: Esta implica contar el número de casos de prueba y estimar el esfuerzo basado en el tiempo promedio necesario para desarrollar y ejecutar cada caso de prueba.
Pasos para realizarla:
- Identificar y contar todos los casos de prueba necesarios.
- Estimar el tiempo promedio para crear y ejecutar un caso de prueba.
- Multiplicar el número de casos de prueba por el tiempo promedio por caso.
Ejemplo Detallado:
En un proyecto de e-commerce, se identifican 600 casos de prueba:
200 para funcionalidades de usuario (login, registro, compra)
200 para integración con el sistema de pagos
200 para pruebas de rendimiento y seguridad
Se estima que cada caso de prueba toma 1.5 horas para ser escrito y ejecutado. Total estimado: 600 * 1.5 = 900 horas.
- Técnica delphi: Es un proceso iterativo donde se reúnen estimaciones de varios expertos de manera anónima. Se discuten las diferencias y se repiten las rondas hasta alcanzar un consenso.
Pasos para realizarla:
- Seleccionar un panel de expertos.
- Cada experto proporciona una estimación de manera anónima.
- Se compilan y se comparten los resultados de la primera ronda.
- Los expertos revisan y ajustan sus estimaciones en base a la información compartida.
- Repetir las rondas hasta alcanzar un consenso.
Ejemplo :
Un proyecto de desarrollo de una plataforma de gestión educativa reúne a cinco expertos en pruebas de software y las estimaciones iniciales son 400, 450, 500, 550 y 600 horas. Después de decir las razones detrás de cada estimación, los expertos ajustan sus cifras a 450, 475, 500, 525 y 550 horas. En la tercera ronda, se llega a un consenso de 500 horas.
- Modelos algorítmicos (COCOMO): Usa modelos matemáticos para estimar el esfuerzo de pruebas basándose en varios factores, incluyendo el tamaño del software y características del proyecto.
Pasos para realizarla:
- Determinar el tamaño del software en KLOC (Líneas de Código).
- Seleccionar los parámetros del modelo basados en el tipo de proyecto.
- Calcular el esfuerzo utilizando la fórmula algorítmica.
Ejemplo:
Para un software de 80 KLOC, usando el modelo básico de COCOMO con a = 2.5, b = 1.05 y un multiplicador M=1.2: Effort = 2.5 × (80)1.05 × 1.2 = 275 personas-mes
- Historia de usuario y puntos de historia: En metodologías ágiles, se utiliza una métrica de esfuerzo relativa llamada puntos de historia para estimar el trabajo requerido para completar historias de usuario.
Pasos para realizarla:
- Dividir el trabajo en historias de usuario.
- Asignar puntos de historia a cada historia basándose en su complejidad y tamaño relativo.
- Usar la velocidad del equipo (puntos de historia completados por sprint) para calcular el esfuerzo.
Ejemplo:
Un equipo ágil tiene una velocidad de 30 puntos de historia por sprint y tienen una historia de usuario para implementar una nueva funcionalidad con una estimación de 8 puntos de historia. Dado que un sprint es de 2 semanas, estiman que completarán la historia en aproximadamente un tercio del sprint, es decir, 4 días de trabajo.
Estas técnicas se pueden adaptar y combinar según las necesidades del proyecto, proporcionando una visión más completa y precisa del esfuerzo requerido para las pruebas de software.