viernes, 18 de marzo de 2016

Técnicas de Estimación de Pruebas - Test Case Point Analysis

Uno de los primeros retos a los que se enfrenta un Test Manager al inicio de un proyecto es realizar una buena estimación de tiempos.

Existen multitud de técnicas de estimación de pruebas, pero su precisión depende siempre (en mayor o menor medida) de la experiencia previa y de la capacidad y conocimientos del equipo.

ISTQB, por ejemplo, propone 3 técnicas de estimación:


  1. Estimación experta. Esta técnica consiste en:
    • Identificar todas las tareas a ejecutar (normalmente utilizando un enfoque descendente (“top down”)).
    • Obtener estimaciones para cada tarea por los responsables (de su ejecución) o por expertos.
    • Sumar todos los valores de las tareas. Incluir los factores de corrección (si hay experiencias respecto de la exactitud de ciertos estimadores).
    • Incluir elementos amortiguadores (buffers)/elementos adicionales, con el objeto de cubrir tareas omitidas o subestimadas.

  2. Estimación basada en analogías. Esta técnica consiste en:
    • Clasificar las tareas de pruebas requeridas.
    • Buscar un proyecto que se haya desarrollado en el pasado que contenga una tarea similar a una específica.
    • Utilizar el esfuerzo real de esta tarea como base de la estimación.
    • A través del uso de métricas (líneas de código, número de módulos, número de casos de prueba, etc.) como base, calcular el valor de la estimación total.
    • Considerar factores de corrección.

  3. Estimación basada en porcentajes. Esta técnica consiste en:
    • El esfuerzo para las actividades de pruebas se estiman sobre la base de la totalidad de las actividades del proyecto.
    • El valor del porcentaje requiere ser determinado basándose en la experiencia.
    • La estimación basada en porcentajes no tiene en cuenta el esfuerzo de las pruebas de regresión, que pueden ser una parte sustancial de las pruebas de mantenimiento y asociadas a cambios.
Actualmente, existen otras técnicas de estimación que encajan mejor con las metodologías ágiles como SCRUM, por ejemplo el Planning Poker.

También hay técnicas muy elaboradas que tienen en cuenta multitud de factores, como el TPA (Test Point Analysis) de Sogeti.

En la línea del TPA se encuentra la técnica de TCPA (Test Case Point Analysis). En internet disponéis de múltiples propuestas de aplicación de esta técnica, como por ejemplo las de:
  1. QA Symphony
  2. Cognizant
  3. Priya Chaudhary y C.S. Yadav
Evidentemente, todas estas aplicaciones cuentan con muchas similitudes, pero también tienen diferencias, como los factores a considerar, los pesos de dichos factores, las actividades de pruebas contempladas, etc.

A continuación, propongo un modelo de aplicación del TCPA que aglutina elementos de las referencias anteriores.


Este modelo permite estimar el esfuerzo de pruebas (pruebas manuales) tanto en proyectos puramente funcionales como en otros que impliquen pruebas de otro tipo (usabilidad, rendimiento, seguridad, etc.). Este técnica tiene en cuenta diferentes factores que influyen en la complejidad del diseño y ejecución de los casos de prueba, además de tener en cuenta el resto de tareas de testing (preparación de datos y de entorno, planificación, etc.).

Diseño de Casos de Prueba (TCP-G)
En el diseño de casos de prueba se tienen en cuenta los siguientes factores de complejidad:
ID
Factores
Pesos
1
Número de pasos en el caso de prueba

2
Llamadas o dependencias de otros casos de prueba

3
Establecer una línea base de resultados esperados

Complejidad (sumatorio de Pesos)


Los pesos deben estar comprendidos entre 0 (No Aplicable) y 3 (Complejo):
0 – N/A
1 – Simple
2 – Medio
3 – Complejo

En el caso del factor con ID = 1 (número de pasos en el caso de prueba), hay que hacer la siguiente operación:
Número de pasos
Peso
< 5
1
5 < Pasos < 10
2
> 10
3

Sumando los pesos de los 3 factores se obtiene la Complejidad. Dependiendo del valor de la complejidad se asignan unos TCPs (Test Case Points):

Tipo de Caso de Prueba
Complejidad
TCPs
Simple
< 3
6
Medio
3-6
8
Complejo
> 6
12

Con esta información se calculan los TCP-G a falta de los ajustes finales:
TCP-GSin ajustar = (Nº casos Simples x TCPs Simples) +
(Nº casos Medios x TCPs Medios)+(Nº casos Complejos x TCPs Complejos)

A continuación, hay que tener en cuenta los factores ambientales:
Factores
Pesos de Ajuste
Complejidad del Dominio/Tipo de Aplicación

Integración con otros dispositivos o Sistemas

Soporte multi-idioma o multi-país

Calidad de la documentación

Peso de Ajuste Total (sumatorio de pesos)


Los pesos se calculan en función de esta tabla:
ID
Importancia del factor
Pesos de Ajuste
1
N/A
0
2
Impacto Bajo
0,05
3
Impacto Moderado
0,1
4
Impacto Medio
0,25
5
Impacto Significativo
0,5

El factor de ajuste final es el siguiente:
Factor de Ajuste = 1 + Peso de Ajuste Total

Por tanto, el TCP-G ajustado se calcula así:
TCP-G = TCP-GSin ajustar x Factor de Ajuste

Posteriormente, transformaremos estos TCP-Gs en horas.

Ejecución Manual de Casos de Prueba (TCP-ME)
En la ejecución de los casos de prueba también hay factores que pueden incrementar la complejidad:
Factor
Peso
1
Pre-condiciones y Datos de Prueba

2
Pasos del Caso de Prueba

3
Verificación de resultados


Los pesos deben estar comprendidos entre 0 (No Aplicable) y 3 (Complejo):
0 – N/A
1 – Simple
2 – Medio
3 – Complejo

En el caso del factor con ID = 2 (número de pasos en el caso de prueba), hay que hacer la siguiente operación:
Número de pasos
Peso
< 5
1
5 < Pasos < 10
2
> 10
3

Sumando los pesos de los 3 factores se obtiene la Complejidad. Dependiendo del valor de la complejidad se asignan unos TCPs (Test Case Points):
Tipo de Caso de Prueba
Complejidad
TCPs
Simple
< 3
6
Medio
3-6
8
Complejo
> 6
12

Con esta información se calculan los TCP-ME:
TCP-ME = (Nº casos Simples x TCPs Simples) +
(Nº casos Medios x TCPs Medios) + (Nº casos Complejos x TCPs Complejos)

Si hubiese que ejecutar un caso de prueba más de 1 vez (por ejemplo, para probar en diferentes navegadores, con distintos sistemas operativos, etc.) deberá multiplicarse el número de TCP-ME de ese caso de prueba por el número de veces que se ejecuta el caso para obtener el esfuerzo total.

Otros tipos de pruebas
Si las pruebas que se están realizando no son funcionales, hay que aplicar un factor de corrección adicional a los TCPs calculados anteriormente:
Tipo de Pruebas (TP)
Peso
Pruebas funcionales
1
Usabilidad
1,15
Interfaces
1,25
Base de Datos
1,35
Rendimiento (manual)
1,35
Seguridad
1,40
Algoritmos de cálculo
1,40

Otras tareas del testing
Además del diseño y la ejecución de casos de prueba, el proceso de testing está compuesto de otras tareas que también hay que considerar y estimar:
o   Estrategia de Pruebas
o   Configuración del entorno de pruebas
o   Reuniones
o   Configuración y parametrización de herramientas de pruebas
o   Regresión de casos de prueba (de un 10 a un 20% del total de TCP-ME)
o   Creación de informes
o   Retesting de defectos (suele ser un 10% del total de los TCP-ME)
o   Rediseño/revisión de casos de prueba (10% del total de la fase de preparación)
o   Revisión/reescritura de base de pruebas (5% del total de la fase de preparación)
o   Etc.

En este caso, la propia experiencia o los tiempos medios de otros proyectos similares en tu empresa, son la mejor referencia para realizar una estimación de estas tareas.

Cálculo del esfuerzo en horas
La experiencia y formación del equipo de pruebas será determinante para poder calcular el esfuerzo de pruebas en horas.
Las tablas de conversión deben compararse con los datos históricos disponibles para ajustar bien la conversión.
A continuación se indica una tabla con capacidades estimativas del número de TCP-Gs y el número de TCP-MEs que podría completar 1 persona en una hora.

TCP-G/persona y hora
5 - 6
TCP-ME/persona y hora 
10 - 15

10 comentarios:

  1. El TCP-ME se calcula por cada caso de prueba, o se calcula para todos los casos de prueba?

    ResponderEliminar
  2. Hola César. Los casos de prueba se clasifican individualmente como simples, medios o complejos. Según su categoría, cada caso tendrá un número "Test Case Points" (TCPs). Con toda esa información obtienes el TCP-ME global de tu set de pruebas.

    ResponderEliminar
  3. Muchas gracias por responder Jesús.
    Entonces, si mal no entiendo, en primer lugar clasifico mi set de pruebas como Simples, Medios y Complejos, luego se calcula la sumatoria de la complejidad (suma de los 3 factores) para cada caso de prueba, y en base al valor, se lo clasifica como Simple, Medio o Complejo, y se le otorga un valor TCPs.
    Por ej. tengo 10 casos de pruebas, de los cuales
    A: 5 son simples
    B: 3 son medios
    C: 2 son complejos
    Del conjunto A, tengo:
    - 2 CPs con complejidad = 3, TCPs = 6
    - 3 CPs con complejidad = 5, TCPs = 8
    Del conjunto B, tengo:
    - 3 CPs con complejidad = 6, TCPs = 8
    Del conjunto C, tengo:
    - 2 CPs con complejidad = 9, TCPs = 12

    Entonces,
    TCP-ME = ((2*6)+(3*8)) + (3*8) + (2*12) = 36 + 24 + 24 = 84
    ¿Está bien aplicada la fórmula?
    Luego, ¿ese valor se transforma a 80 hs?

    Saludos cordiales.

    ResponderEliminar
  4. Hola César, la fórmula sería correcta, aunque si del conjunto A tienes CPs con complejidad 5 se considerarían de Medios en lugar de Simples. Sin embargo, el resultado de la operación no varía en absoluto.

    El resultado, 84 no son horas, sino TCPs (Test Case Points). El paso a horas es lo más complicado, porque depende mucho de la experiencia y conocimientos del equipo que va a realizar la ejecución. De forma orientativa, en el post indico que se puede considerar que una persona puede ejecutar unos 15 TCPs/hora, lo que en tu ejemplo podría suponer unas 5,6 horas.

    No obstante, como he comentado, depende mucho del equipo y de otros factores externos como la estabilidad de los entornos de prueba, la calidad de los datos de prueba, las interrupciones (por ejemplo reuniones), etc.

    ResponderEliminar
  5. Hola.. quisiera saber como estimo el tiempo para la verificación de un BMPS (proceso)

    ResponderEliminar
    Respuestas
    1. Creo que lo mejor en este caso es aplicar la técnica de Ciclos de Procesos (http://jesus.hernandez.abeleira.com/2014/08/ciclos-de-procesos.html). Una vez calculado el número de casos de prueba necesarios podrías aplicar el proceso de estimación explicado en este post teniendo en cuenta los factores de dificultad de los casos, la complejidad de la aplicación, etc.

      Eliminar
  6. Hola quisiera saber lo siguiente:

    La estimación de las pruebas (esfuerzo y duración) se antes del diseño de los casos de prueba o después?

    ResponderEliminar

Compartir