menu

Técnicas basadas en una especificación

Pruebas de caja negra
On X @isainstars 'debugging code before going to an anime convention'

¿Qué es la partición equivalente?

La partición equivalente es una técnica de diseño de casos de prueba que divide el conjunto de datos de entrada en clases de datos equivalentes. El objetivo es reducir el número total de casos de prueba necesarios al seleccionar un representante de cada clase, asumiendo que todos los valores dentro de una clase se comportan de manera similar.


¿Cómo se divide los datos en la partición equivalente?

Esta técnica divide los datos de entrada en dos campos: entradas válidas e inválidas. En otras palabras:

  1. Si la condición de un valor de la partición A es verdadera, también deben serlo los demás valores de la partición A.
  2. Del mismo modo, si las condiciones de un valor de la partición B son falsas, los demás valores de la partición B también deben ser falsos.


Una vez conocemos las clases válidas e inválidas, utilizamos las pautas para obtener los casos de prueba (entrada y salida):


  1. Rango de Valores: Si una condición de entrada especifica un rango de valores, por ejemplo, entre 1 y 99 donde cualquier número mayor a 99 o menor a 1 será una clase inválida.
    1 < n < 99
  2. Número de valores: Si alguna condición requiere la especificación del número de valores.
  3. Conjunto de valores: En caso de utilizar valores específicos como los ingresados en estructuras “enum” cualquier otro valor ingresado sería inválidos.

Las pautas para clasificar varían de acuerdo con las necesidades en caso de ser necesario las clases y grupos pueden subdividirse aún más.


Ejemplo práctico

Supongamos que tenemos un programa que se encarga de calcular el precio final de un producto considerando descuentos y costos de envío según el tipo de transporte.


Variable Clase de equivalencia Estado Valor
Precio Total Válida Correcto Total > 100
Precio Total Inválida Incorrecto Total < 0
Precio Total Inválida Incorrecto Valor no numérico
Descuento Válida Correcto 0 ≤ descuento ≤ 10
Descuento Inválida Incorrecto Descuento < 0 o Descuento> 10
Transporte Envío Válida Correcto Camión = 8, Avión = 14
Transporte Envío Inválida Incorrecto Códigos diferentes a 8 o 14

¿Qué es el análisis de valores de la frontera?

Al igual que la técnica anterior se trata de un tipo de prueba de caja negra. El análisis de valores a la frontera, también conocido como valores límites, es utilizado principalmente para detectar cualquier comportamiento incorrecto sobre el sistema. La prueba consiste como su nombre lo indica en las “fronteras” límites que garantizan que el software funcione correctamente.


¿Cómo se aplican los valores en pruebas?

Es común que los programadores cometan errores entorno a los límites, por ejemplo, al calcular los años. Cuando se utilizan condiciones como igual que (=), mayor que (>), menor que (<) o cuántas veces se debe ejecutar un bucle.


Los pasos para aplicar este procedimiento son:

  1. Primero es identificar los casos de prueba -> Identificar las particiones de equivalencia: particiones válidas e inválidas.
  2. Después detectamos los límites de cada una de las particiones. Supongamos que tenemos un programa que solicita la creación de una contraseña, pero esta deberá tener entre 8 hasta 16 caracteres. Podemos decir que los límites de partición válidos son 8 <= Contraseña <= 16 y a partir de ellos podemos comenzar a trabajar.
  3. Una vez tenemos definido los límites y las particiones, comenzamos con algunas variables como: un valor nominal, un valor mínimo, uno por debajo del mínimo, uno por debajo del máximo, el valor máximo (valor límite).

Ejemplo práctico

Tomando uno de los ejemplos de clase supongamos que tenemos una aplicación que tiene como objetivo medir la temperatura y dependiendo del intervalo en la temperatura este muestra un mensaje.

Fragmento del código:


                        for (int temp : arrTemperaturas) {
                            if (temp < 30 || temp > 45) {
                                throw new RuntimeException("EL VALOR " + temp + " NO ES CORRECTO");
                            }
                        }
              
                        // Más código
              
                        // Checamos el valor de la temperatura promedio
                        if (tempPromedio < 36.5) {
                            return "Hipotermia";
                        } else if (tempPromedio > 36.5 && tempPromedio <= 37.4) {
                            return "Normal";
                        } else if (tempPromedio >= 37.5 && tempPromedio <= 39.9) {
                            return "Hipertermia";
                        } else {
                            return "Hiperpirexia";
              }
        
Tabla de temperaturas

Cargando noticias...