stringtranslate.com

Pruebas basadas en modelos

Configuración de prueba basada en modelos generales

Las pruebas basadas en modelos son una aplicación del diseño basado en modelos para diseñar y, opcionalmente, ejecutar artefactos para realizar pruebas de software o pruebas de sistemas . Los modelos se pueden utilizar para representar el comportamiento deseado de un sistema bajo prueba (SUT) o para representar estrategias de prueba y un entorno de prueba. La imagen de la derecha muestra el primer enfoque.

Un modelo que describe un SUT suele ser una presentación abstracta y parcial del comportamiento deseado del SUT. Los casos de prueba derivados de un modelo de este tipo son pruebas funcionales en el mismo nivel de abstracción que el modelo. Estos casos de prueba se conocen colectivamente como una suite de pruebas abstracta . Una suite de pruebas abstracta no se puede ejecutar directamente contra un SUT porque la suite está en el nivel de abstracción incorrecto. Una suite de pruebas ejecutable debe derivarse de una suite de pruebas abstracta correspondiente. La suite de pruebas ejecutable puede comunicarse directamente con el sistema bajo prueba. Esto se logra asignando los casos de prueba abstractos a casos de prueba concretos adecuados para la ejecución. En algunos entornos de prueba basados ​​en modelos, los modelos contienen suficiente información para generar suites de pruebas ejecutables directamente. En otros, los elementos de la suite de pruebas abstractas deben asignarse a declaraciones específicas o llamadas de método en el software para crear una suite de pruebas concreta. Esto se llama resolver el "problema de mapeo". [1] En el caso de las pruebas en línea (ver a continuación), las suites de pruebas abstractas existen solo conceptualmente, pero no como artefactos explícitos.

Las pruebas se pueden derivar de los modelos de diferentes maneras. Debido a que las pruebas suelen ser experimentales y se basan en heurísticas, no se conoce un único método óptimo para la derivación de pruebas. Es habitual consolidar todos los parámetros relacionados con la derivación de pruebas en un paquete que suele conocerse como "requisitos de prueba", "propósito de prueba" o incluso "caso(s) de uso". Este paquete puede contener información sobre las partes de un modelo en las que se debe centrar la atención o las condiciones para finalizar las pruebas (criterios de detención de pruebas).

Debido a que los conjuntos de pruebas se derivan de modelos y no del código fuente, las pruebas basadas en modelos generalmente se consideran una forma de prueba de caja negra .

Las pruebas basadas en modelos para sistemas de software complejos aún son un campo en evolución.

Modelos

Especialmente en la ingeniería basada en modelos o en la arquitectura basada en modelos de Object Management Group ( OMG ) , los modelos se construyen antes o en paralelo con los sistemas correspondientes. Los modelos también se pueden construir a partir de sistemas completos. Los lenguajes de modelado típicos para la generación de pruebas incluyen UML , SysML , lenguajes de programación convencionales, notaciones de máquinas finitas y formalismos matemáticos como Z , B ( Event-B ), Alloy o Coq .

Implementación de pruebas basadas en modelos

Ejemplo de un flujo de trabajo de pruebas basado en modelos (generación de casos de prueba sin conexión). IXIT hace referencia a la información adicional de implementación y hace referencia a la información necesaria para convertir un conjunto de pruebas abstracto en uno ejecutable. Normalmente, IXIT contiene información sobre el conjunto de pruebas, las asignaciones de datos y la configuración del SUT.

Existen varias formas conocidas de implementar pruebas basadas en modelos, que incluyen pruebas en línea , generación fuera de línea de pruebas ejecutables y generación fuera de línea de pruebas implementables manualmente . [2]

Las pruebas en línea significan que una herramienta de pruebas basada en modelos se conecta directamente a un SUT y lo prueba dinámicamente.

La generación fuera de línea de pruebas ejecutables significa que una herramienta de prueba basada en modelos genera casos de prueba como activos legibles por computadora que luego pueden ejecutarse automáticamente; por ejemplo, una colección de clases de Python que incorpora la lógica de prueba generada.

La generación fuera de línea de pruebas implementables manualmente significa que una herramienta de prueba basada en modelos genera casos de prueba como activos legibles para humanos que luego pueden ayudar en pruebas manuales; por ejemplo, un documento PDF en un lenguaje humano que describe los pasos de prueba generados.

Derivación de pruebas algorítmicamente

La eficacia de las pruebas basadas en modelos se debe principalmente al potencial de automatización que ofrecen. Si un modelo es legible por máquina y formal en la medida en que tiene una interpretación de comportamiento bien definida, los casos de prueba pueden, en principio, derivarse mecánicamente.

De máquinas de estados finitos

A menudo, el modelo se traduce o se interpreta como un autómata de estados finitos o un sistema de transición de estados . Este autómata representa las posibles configuraciones del sistema bajo prueba. Para encontrar casos de prueba, se buscan rutas ejecutables en el autómata. Una posible ruta de ejecución puede servir como caso de prueba. Este método funciona si el modelo es determinista o puede transformarse en uno determinista. Se pueden obtener casos de prueba valiosos fuera de lo nominal aprovechando transiciones no especificadas en estos modelos.

Dependiendo de la complejidad del sistema bajo prueba y del modelo correspondiente, el número de caminos puede ser muy grande, debido a la enorme cantidad de configuraciones posibles del sistema. Para encontrar casos de prueba que puedan cubrir un número apropiado, pero finito, de caminos, se necesitan criterios de prueba para guiar la selección. Esta técnica fue propuesta por primera vez por Offutt y Abdurazik en el artículo que inició las pruebas basadas en modelos. [3] Se han desarrollado múltiples técnicas para la generación de casos de prueba y Rushby las analiza. [4] Los criterios de prueba se describen en términos de gráficos generales en el libro de texto de pruebas. [1]

Demostración del teorema

La demostración de teoremas se utilizó originalmente para la demostración automática de fórmulas lógicas. Para los enfoques de prueba basados ​​en modelos, el sistema se modela mediante un conjunto de predicados , que especifican el comportamiento del sistema. [5] Para derivar casos de prueba, el modelo se divide en clases de equivalencia sobre la interpretación válida del conjunto de predicados que describen el sistema bajo prueba. Cada clase describe un cierto comportamiento del sistema y, por lo tanto, puede servir como un caso de prueba. La partición más simple es con el enfoque de forma normal disyuntiva en el que las expresiones lógicas que describen el comportamiento del sistema se transforman en la forma normal disyuntiva .

Programación lógica de restricciones y ejecución simbólica

La programación de restricciones se puede utilizar para seleccionar casos de prueba que satisfagan restricciones específicas mediante la resolución de un conjunto de restricciones sobre un conjunto de variables. El sistema se describe por medio de restricciones. [6] La resolución del conjunto de restricciones se puede realizar mediante solucionadores booleanos (por ejemplo, solucionadores SAT basados ​​en el problema de satisfacibilidad booleano ) o mediante análisis numérico , como la eliminación gaussiana . Una solución encontrada mediante la resolución de las fórmulas del conjunto de restricciones puede servir como caso de prueba para el sistema correspondiente.

La programación de restricciones se puede combinar con la ejecución simbólica. En este enfoque, un modelo de sistema se ejecuta simbólicamente, es decir, se recopilan restricciones de datos sobre diferentes rutas de control y luego se utiliza el método de programación de restricciones para resolver las restricciones y producir casos de prueba. [7]

Comprobación de modelos

Los verificadores de modelos también se pueden utilizar para la generación de casos de prueba. [8] Originalmente, la verificación de modelos se desarrolló como una técnica para verificar si una propiedad de una especificación es válida en un modelo. Cuando se utiliza para realizar pruebas, se proporciona al verificador de modelos un modelo del sistema bajo prueba y una propiedad para probar. Dentro del procedimiento de prueba, si esta propiedad es válida en el modelo, el verificador de modelos detecta testigos y contraejemplos. Un testigo es una ruta donde se satisface la propiedad, mientras que un contraejemplo es una ruta en la ejecución del modelo donde se viola la propiedad. Estas rutas se pueden utilizar nuevamente como casos de prueba.

Generación de casos de prueba mediante el uso de un modelo de prueba de cadena de Markov

Las cadenas de Markov son una forma eficiente de manejar las pruebas basadas en modelos. Los modelos de prueba realizados con cadenas de Markov pueden entenderse como un modelo de uso: se denominan pruebas basadas en modelos de uso/estadísticos. Los modelos de uso, es decir, las cadenas de Markov, se construyen principalmente con 2 artefactos: la máquina de estados finitos (FSM) que representa todos los posibles escenarios de uso del sistema probado y los perfiles operativos (OP) que califican la FSM para representar cómo se usa o se usará estadísticamente el sistema. El primero (FSM) ayuda a saber qué se puede probar o se ha probado y el segundo (OP) ayuda a derivar casos de prueba operativos. Las pruebas basadas en modelos de uso/estadísticos comienzan con el hecho de que no es posible probar exhaustivamente un sistema y que el fallo puede aparecer con una tasa muy baja. [9] Este enfoque ofrece una forma pragmática de derivar estáticamente casos de prueba que se centran en mejorar la fiabilidad del sistema bajo prueba. Las pruebas basadas en modelos de uso/estadísticos se ampliaron recientemente para que sean aplicables a los sistemas de software integrados. [10] [11]

Véase también

Referencias

  1. ^ de Paul Ammann y Jeff Offutt. Introducción a las pruebas de software, 2.ª edición. Cambridge University Press, 2016.
  2. ^ Pruebas prácticas basadas en modelos: un enfoque basado en herramientas Archivado el 25 de agosto de 2012 en Wayback Machine , Mark Utting y Bruno Legeard, ISBN  978-0-12-372501-1 , Morgan-Kaufmann 2007
  3. ^ Jeff Offutt y Aynur Abdurazik. Generación de pruebas a partir de especificaciones UML. Segunda Conferencia Internacional sobre el Lenguaje Unificado de Modelado (UML '99), páginas 416-429, Fort Collins, Colorado, octubre de 1999.
  4. ^ John Rushby. Generación automatizada de pruebas y software verificado. Software verificado: teorías, herramientas, experimentos: primera conferencia IFIP TC 2/WG 2.3, VSTTE 2005, Zúrich, Suiza, 10-13 de octubre. págs. 161-172, Springer-Verlag
  5. ^ Brucker, Achim D.; Wolff, Burkhart (2012). "Sobre la prueba basada en demostradores de teoremas". Aspectos formales de la informática . 25 (5): 683–721. CiteSeerX 10.1.1.208.3135 . doi :10.1007/s00165-012-0222-y. S2CID  5774837. 
  6. ^ Jefferson Offutt. Generación automática de datos de prueba basada en restricciones. IEEE Transactions on Software Engineering, 17:900-910, 1991
  7. ^ Antti Huima. Implementación de Conformiq Qtronic. Pruebas de software y sistemas de comunicación, Lecture Notes in Computer Science, 2007, Volumen 4581/2007, 1-12, DOI: 10.1007/978-3-540-73066-8_1
  8. ^ Gordon Fraser, Franz Wotawa y Paul E. Ammann. Pruebas con verificadores de modelos: una encuesta. Pruebas de software, verificación y confiabilidad, 19(3):215–261, 2009. URL: [1]
  9. ^ Hélène Le Guen. Validation d'un logiciel par le test statistique d'usage: de la modelisation de la decision à la livraison, 2005. URL:ftp://ftp.irisa.fr/techreports/theses/2005/leguen.pdf
  10. ^ Böhr, Frank (2011). "Pruebas estadísticas basadas en modelos de sistemas integrados". Talleres de la Cuarta Conferencia Internacional sobre Pruebas, Verificación y Validación de Software del IEEE de 2011. págs. 18–25. doi :10.1109/ICSTW.2011.11. ISBN 978-1-4577-0019-4.S2CID 9582606  .
  11. ^ Böhr, Frank (2012). Pruebas estadísticas basadas en modelos de software integrado en tiempo real con señales continuas y discretas en un entorno concurrente: el enfoque de red de uso . Editorial Dr. Hut. ISBN 978-3843903486.

Lectura adicional