Como sugiere el nombre, la priorización de casos de prueba se refiere a priorizar casos de prueba en un conjunto de pruebas en función de diferentes factores. Los factores podrían ser la cobertura del código, los módulos críticos/de riesgo, la funcionalidad, las características, etc.
¿Por qué se deben priorizar los casos de prueba?
A medida que aumenta el tamaño del software, el conjunto de pruebas también crece y requiere más esfuerzos para mantener el conjunto de pruebas. Para detectar errores en el software lo antes posible, es importante priorizar los casos de prueba para que los casos de prueba importantes se puedan ejecutar primero.
Tipos de priorización de casos de prueba:
- Priorización General:
En este tipo de priorización se priorizan los casos de prueba que serán de utilidad para las posteriores versiones modificadas del producto. No requiere ninguna información sobre modificaciones realizadas en el producto. - Versión – Priorización específica:
los casos de prueba también se pueden priorizar de modo que sean útiles en una versión específica del producto. Este tipo de priorización requiere conocimiento sobre los cambios que se han introducido en el producto.
Técnicas de priorización:
1. Priorización de casos de prueba basada en cobertura:
este tipo de priorización se basa en la cobertura de código, es decir, los casos de prueba se priorizan en función de su cobertura de código.
- Priorización de cobertura total de declaraciones:
en esta técnica, el número total de declaraciones cubiertas por el caso de prueba se utiliza como factor para priorizar los casos de prueba. Por ejemplo, el caso de prueba que cubre 10 declaraciones tendrá mayor prioridad que el caso de prueba que cubre 5 declaraciones. - Priorización de cobertura de declaración adicional:
esta técnica implica seleccionar iterativamente el caso de prueba con la máxima cobertura de declaración y luego seleccionar el caso de prueba que cubre las declaraciones que quedaron sin cubrir en el caso de prueba anterior. Este proceso se repite hasta que se han cubierto todas las declaraciones. - Priorización de la cobertura total de sucursales:
al utilizar la cobertura total de sucursales como factor para ordenar casos de prueba, se puede lograr la priorización. Aquí, la cobertura de rama se refiere a la cobertura de cada resultado posible de la condición. - Priorización de cobertura de rama adicional:
similar a la técnica de cobertura de declaración adicional, primero selecciona el caso de texto con la cobertura de rama máxima y luego selecciona de forma iterativa el caso de prueba que cubre los resultados de la rama que quedaron sin cubrir en el caso de prueba anterior. - Priorización total del potencial de exposición de fallas: el potencial de exposición de
fallas (FEP) se refiere a la capacidad del caso de prueba para exponer la falla. Las técnicas de cobertura de declaraciones y sucursales no tienen en cuenta el hecho de que algunos errores pueden detectarse más fácilmente que otros y también que algunos casos de prueba tienen más potencial para detectar errores que otros. FEP depende de:- Si los casos de prueba cubren declaraciones defectuosas o no.
- Probabilidad de que la declaración defectuosa provoque que el caso de prueba falle.
2. Priorización basada en riesgos:
esta técnica utiliza el análisis de riesgos para identificar posibles áreas problemáticas que, si fallan, podrían tener malas consecuencias. Por lo tanto, los casos de prueba se priorizan teniendo en cuenta las posibles áreas problemáticas. En el análisis de riesgos, se realizan los siguientes pasos:
- Lista de problemas potenciales.
- Asignación de probabilidad de ocurrencia para cada problema.
- Cálculo de la severidad del impacto para cada problema.
Después de realizar los pasos anteriores, se forma una tabla de análisis de riesgos para presentar los resultados. La tabla consta de columnas como Identificación del problema, Problema potencial identificado, Gravedad del impacto, Exposición al riesgo, etc.
3. Priorización usando Relevant Slice:
en este tipo de priorización, se usa la técnica de división : cuando se modifica el programa, se ejecutan todos los casos de prueba de regresión existentes para asegurarse de que el programa produzca el mismo resultado que antes, excepto donde se haya modificado. Para este propósito, tratamos de encontrar la parte del programa que se ha visto afectada por la modificación, y luego se realiza la priorización de los casos de prueba para esta parte afectada. Hay 3 partes en la técnica de corte:
- Segmento de ejecución:
las declaraciones ejecutadas en el segmento de ejecución del formulario de caso de prueba. - Segmento dinámico:
declaraciones ejecutadas en el caso de prueba que podrían afectar la salida del programa. - Relevant Slice:
declaraciones que se ejecutan en el caso de prueba y no tienen ningún impacto en la salida del programa, pero pueden afectar la salida del caso de prueba.
4. Priorización basada en requisitos:
algunos requisitos son más importantes que otros o son de naturaleza más crítica, por lo tanto, los casos de prueba para dichos requisitos deben priorizarse primero. Se pueden considerar los siguientes factores al priorizar los casos de prueba en función de los requisitos:
- Prioridad asignada por el cliente:
el cliente asigna peso a los requisitos de acuerdo con su necesidad o comprensión de los requisitos del producto. - Complejidad de implementación percibida
por el desarrollador: el desarrollador asigna la prioridad en función de los esfuerzos o el tiempo que se necesitarían para implementar ese requisito. - Volatilidad de los requisitos:
este factor determina la frecuencia de cambio de los requisitos. - Propensión a fallas de los requisitos:
la prioridad se asigna en función de cuán propensos a errores han sido los requisitos en versiones anteriores del software.
Métrica para medir la eficacia del conjunto de pruebas priorizado:
para medir la eficacia del conjunto de pruebas priorizado, podemos usar una métrica llamada APFD (porcentaje promedio de fallas detectadas) . La fórmula para APFD está dada por:
APFD = 1 - ( (TF1 + TF2 + ....... + TFm) / nm ) + 1 / 2n where, TFi = position of first Test case in Test suite T that exposes Fault i m = total number of Faults exposed under T n = total number of Test cases in T
El valor de AFPD puede variar de 0 a 100. Cuanto mayor sea el valor de APFD, mayor será la tasa de detección de fallas. En pocas palabras, APFD indica qué tan rápido el conjunto de pruebas puede identificar fallas o errores en el software. Si el conjunto de pruebas puede detectar fallas rápidamente, entonces se considera que es más efectivo y confiable.