Pruebas de caja negra

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 4 de febrero de 2019; las comprobaciones requieren 2 ediciones .

La prueba de caja negra o prueba de comportamiento  es una estrategia (método) para probar el comportamiento funcional de un objeto (programa, sistema) desde el punto de vista del mundo externo, que no utiliza el conocimiento sobre la estructura interna (código) del objeto. siendo probado. En otras palabras, las pruebas de caja negra las realizan evaluadores que no tienen acceso al código fuente de la aplicación. La estrategia se refiere a los métodos sistemáticos de selección y creación de pruebas para un conjunto de pruebas. La estrategia de prueba de comportamiento proviene de los requisitos técnicos y sus especificaciones [1] .

El concepto de una caja "negra"

Se entiende por "caja negra" un objeto de estudio cuya estructura interna se desconoce. El concepto de "caja negra" fue propuesto por W. R. Ashby . En cibernética, permite estudiar el comportamiento de los sistemas, es decir, sus reacciones a diversas influencias externas, y al mismo tiempo abstraerse de su estructura interna.

Al manipular solo con entradas y salidas, se pueden realizar ciertos estudios. En la práctica, siempre surge la pregunta de hasta qué punto el homomorfismo de la caja "negra" refleja la adecuación de su modelo estudiado, es decir, qué tan completamente se reflejan en el modelo las propiedades básicas del original.

La descripción de cualquier sistema de control en el tiempo se caracteriza por una imagen de la secuencia de sus estados en el proceso de moverse hacia la meta que enfrenta. La transformación en el sistema de control puede ser uno a uno y entonces se llama isomorfa, o solo uno a uno, en una dirección. En este caso, la transformación se llama homomórfica.

La caja "negra" es un modelo homomórfico complejo de un sistema cibernético en el que se respeta la diversidad. Sólo entonces es un modelo satisfactorio del sistema cuando contiene tal cantidad de información que refleja la diversidad del sistema. Se puede suponer que cuanto mayor sea el número de perturbaciones que actúan sobre las entradas del modelo del sistema, mayor será la diversidad que debe tener el controlador.

Actualmente se conocen dos tipos de cajas "negras". El primer tipo incluye cualquier caja "negra", que puede considerarse como un autómata , llamado finito o infinito. El comportamiento de tales cajas "negras" es conocido. El segundo tipo incluye tales cajas "negras", cuyo comportamiento solo puede observarse en un experimento. En este caso, de forma explícita o implícita, se expresa una hipótesis sobre la predictibilidad del comportamiento de la caja "negra" en un sentido probabilístico. Sin una hipótesis preliminar, cualquier generalización es imposible o, como dicen, es imposible sacar una conclusión inductiva basada en experimentos de caja negra. N. Wiener propuso el concepto de caja "blanca" para designar el modelo de caja "negra". La caja "blanca" consta de componentes conocidos, es decir, X, Y, δ, λ conocidos. Su contenido se elige especialmente para implementar la misma dependencia de entrada y salida que la caja "negra" correspondiente. En el proceso de investigación y generalizaciones en curso, hipótesis y establecimiento de patrones, se hace necesario ajustar la organización de la caja "blanca" y cambiar los modelos. En este sentido, al modelar, el investigador debe referirse repetidamente al esquema de relación de caja "negra" - "blanca".

Estudiando el comportamiento de la caja "negra"

Consideremos cómo se estudia e investiga el comportamiento de la caja "negra" del segundo tipo. Supongamos que se nos da algún sistema de control, cuya estructura interna se desconoce. El sistema de control tiene entradas y salidas .

La forma de estudiar el comportamiento de esta caja "negra" es realizar un experimento, cuyos resultados se pueden presentar en forma de tabla. una.

Este método de estudiar la caja "negra" se llama protocolo. Los valores de las cantidades de entrada a veces se pueden elegir arbitrariamente.

tabla 1

La forma de estudiar la caja "negra"
Estado de entrada Estado de salida Tiempo
............ ............ ....
............ ............ ....

Otra forma de explorar es alimentar algunas secuencias estándar a las entradas. Este método es especialmente atractivo porque permite comparar el comportamiento de varias cajas "negras" con la condición de elegir aquellas que cumplan con los requisitos.

El estudio de los sistemas de control está asociado a los conceptos de “ autómata probabilístico ”, “sistema probabilístico”, lo que requiere el estudio de sus propiedades probabilísticas. Para estos efectos, se puede construir una matriz de probabilidad (Tabla 2), en la que para cada entrada y cada salida se indique la probabilidad condicional , la cual se da en respuesta a [7] dada en la Tabla. 2.

El desarrollo de métodos para construir modelos matemáticos de la caja "negra" es uno de los problemas cibernéticos importantes. Siempre que exista un modelo matemático de la caja "negra", es posible atribuirla a cualquier clase, cuyos sistemas son isomorfos en comportamiento.

Crear una descripción matemática de la caja "negra" es una especie de arte. En algunos casos, es posible formar un algoritmo, según el cual la caja "negra" responde a una señal de entrada arbitraria. En la mayoría de los casos, sin embargo, se intenta establecer ecuaciones diferenciales que relacionen la reacción de la caja "negra" con sus entradas o, como se suele decir, con sus estímulos de entrada.

Para la ciencia, el método de la caja "negra" es de gran importancia. Con su ayuda, se hicieron muchos descubrimientos destacados en la ciencia. Por ejemplo, el científico Harvey predijo la estructura del corazón en el siglo XVII. Modeló el trabajo del corazón con una bomba, tomando prestadas ideas de un área completamente diferente del conocimiento contemporáneo: la hidráulica. El valor práctico del método de la "caja negra" radica, en primer lugar, en la posibilidad de estudiar sistemas dinámicos muy complejos y, en segundo lugar, en la posibilidad de sustituir una "caja" por otra. La realidad circundante y la biología brindan muchos ejemplos de cómo revelar la estructura de los sistemas utilizando el método de la caja "negra".

Principios de las pruebas de caja negra

En este método, el programa se trata como una caja negra . El propósito de las pruebas es averiguar las circunstancias en las que el comportamiento del programa no cumple con la especificación . Para poder detectar todos los errores en el programa, es necesario realizar pruebas exhaustivas , es decir, pruebas en todo tipo de conjuntos de datos . Para la mayoría de los programas, esto no es posible, por lo que se utilizan pruebas razonables , en las que la prueba del programa se limita a un pequeño subconjunto de posibles conjuntos de datos. En este caso, es necesario elegir los subconjuntos más adecuados, los subconjuntos con mayor probabilidad de detección de errores.

Propiedades de una prueba seleccionada correctamente

  1. Reduce más de una cantidad de otras pruebas para ser diseñadas para pruebas razonables.
  2. Cubre una parte significativa de otras pruebas posibles, lo que es un tanto indicativo de la presencia o ausencia de un error antes y después de un conjunto limitado de pruebas.

Técnicas de prueba de caja negra

  1. Partición equivalente.
  2. Análisis de valores límite.
  3. Análisis de las relaciones de causa y efecto.
  4. Suposición de error.

Echemos un vistazo más de cerca a cada uno de estos métodos:

Partición equivalente

El método se basa en dos principios:

  1. Los datos iniciales deben dividirse en un número finito de clases de equivalencia. Una clase de equivalencia contiene tales pruebas que si una prueba de la clase de equivalencia detecta algún error, entonces cualquier otra prueba de esta clase de equivalencia debe detectar el mismo error.
  2. Cada prueba debe incluir tantas clases de equivalencia como sea posible para minimizar el número total de pruebas.

El desarrollo de pruebas por este método se lleva a cabo en dos etapas : la selección de las clases de equivalencia y la construcción de la prueba.

Las clases de equivalencia se distinguen seleccionando cada condición de entrada, que se toma de los términos de referencia o especificación y se divide en dos o más grupos. Para ello se utiliza la siguiente tabla:

Condición de entrada Clases de equivalencia adecuada Clases de equivalencia incorrectas
' ' '

La selección de clases de equivalencia es una forma heurística, pero hay una serie de reglas:

  1. Si la condición de entrada describe un rango, como "Un número entero toma un valor de 0 a 999", entonces hay una clase de equivalencia válida y dos no válidas.
  2. Si la condición de entrada describe un número de valores, por ejemplo, "El número de líneas en el archivo de entrada se encuentra en el intervalo (1..6)", entonces también hay una clase correcta y dos incorrectas.
  3. Si la condición de entrada describe un conjunto de valores de entrada, entonces el número de clases correctas se determina igual al número de elementos en el conjunto de valores de entrada. Si la condición de entrada describe una situación "obligatoria", como "El primer carácter debe escribirse en mayúscula", una clase es correcta y otra incorrecta.
  4. Si hay razones para creer que los elementos dentro de la misma clase de equivalencia pueden ser interpretados de manera diferente por el programa, es necesario dividir esta clase en subclases. En este paso, el probador debe usar la tabla para crear pruebas que cubran todas las clases de equivalencia correctas e incorrectas. En este caso, el compilador debe minimizar el número total de pruebas.

Definición de pruebas:

  1. A cada clase de equivalencia se le asigna un número único.
  2. Si todavía hay clases correctas que no están incluidas en las pruebas, entonces se escriben pruebas que cubren el máximo número posible de clases.
  3. Si hay clases incorrectas que no están incluidas en las pruebas, entonces se escriben pruebas que cubren solo una clase.
Análisis de valor límite

Las condiciones de contorno  son situaciones que ocurren en los límites superior e inferior de las clases de equivalencia de entrada.

El análisis de valor límite difiere de la partición equivalente de las siguientes maneras:

  1. La elección de cualquier elemento de la clase de equivalencia como representativo se lleva a cabo de manera que se pruebe cada límite de esta clase con una prueba.
  2. Al desarrollar pruebas, no solo se consideran los valores de entrada (espacio de entrada), sino también los valores de salida (espacio de salida).

El método requiere un cierto grado de creatividad y especialización en la tarea a realizar.

Hay varias reglas:

  1. Cree pruebas con entradas incorrectas para una situación menor fuera de rango. Si los valores de entrada deben estar en el rango [-1.0 .. +1.0], marque −1.0, 1.0, −1.000001, 1.000001.
  2. Asegúrese de escribir pruebas para los límites mínimo y máximo del rango.
  3. Use las dos primeras reglas para cada uno de los valores de entrada (use el paso 2 para todos los valores de salida).
  4. Si la entrada y salida del programa es un conjunto ordenado, concéntrese en el primer y último elemento de la lista.

El análisis de valores límite, si se aplica correctamente, puede detectar una gran cantidad de errores. Sin embargo, definir estos límites para cada tarea puede ser una tarea difícil por separado. Además, este método no comprueba combinaciones de valores de entrada.

Análisis de causa y efecto

Pasos de construcción de prueba:

  1. La especificación se divide en secciones de trabajo.
  2. La especificación define muchas causas y efectos. Una causa es una sola condición de entrada o una clase de equivalencia. La consecuencia es una condición de salida o transformación del sistema. Aquí, a cada causa y efecto se le asigna un número.
  3. Con base en el análisis del contenido semántico (semántico) de la especificación, se construye una tabla de verdad en la que se clasifican secuencialmente todas las posibles combinaciones de causas y se determinan las consecuencias para cada combinación de causas.

La tabla está anotada con restricciones y descripciones de combinaciones que no son posibles. La desventaja de este enfoque es el pobre estudio de las condiciones de contorno.

Suposición de error

Un probador con mucha experiencia encuentra errores sin ningún método, pero al mismo tiempo usa inconscientemente el método de adivinar el error. Este método se basa en gran medida en la intuición. La idea principal del método es hacer una lista que enumere posibles errores y situaciones en las que podrían ocurrir estos errores. Luego, en base a la lista, se compilan las pruebas.

Notas

  1. Beizer, 2004 , pág. 33.

Literatura

  • Ross Ashby W. Capítulo 6. La caja negra // Introducción a la cibernética = Introducción a la cibernética. - Editorial de literatura extranjera, 1959. - S. 127-169. — 432 págs.
  • Beizer B. Pruebas de caja negra. Tecnologías de pruebas funcionales de software y sistemas. - Pedro, 2004. - 320 p. — ISBN 5-94723-698-2 .