Pruebas basadas en modelos 01
1. Descripción general
El nombre chino de MBT es prueba basada en modelos. Las pruebas basadas en modelos son un método de prueba en el campo de las pruebas de software.
2. Antecedentes
? Las pruebas de software son la última línea de defensa de la calidad de un producto de software y son una parte indispensable y más importante de la línea de productos. Detrás de cada producto de software de alta calidad hay mucho trabajo de prueba. Y las pruebas son probablemente la parte más costosa y que requiere más mano de obra del proceso de desarrollo de software. En el proceso de diseño de casos de prueba, hay más o menos problemas que hacen que los resultados de las pruebas de software no sean ideales. A continuación se presenta un nuevo método de prueba, la prueba de modelo básico, que es una rama de las pruebas automatizadas. Basa el diseño de casos de prueba en el modelo del sistema bajo prueba y genera automáticamente casos de prueba basados en el modelo. Desde la perspectiva del control de calidad, podemos formular el contenido de la prueba, pero no hay garantía de que la prueba cubra todas las combinaciones posibles, mientras que MBT permite a los desarrolladores y evaluadores de software centrarse únicamente en establecer la corrección del sistema y la estandarización. del modelo, y luego generar casos de prueba confiables a partir de modelos de sistemas de acuerdo con diferentes estrategias de diseño de casos de prueba a través de herramientas MBT especializadas.
En comparación con las pruebas tradicionales, ventajas:
(1) El mantenimiento de los casos de prueba es más fácil: mantenga el modelo, no es necesario prestar atención a los detalles de los casos de prueba
p>? (2) Los defectos del software se descubren antes: en el proceso de construcción de un modelo del sistema bajo prueba, es necesario tener una comprensión relativamente completa del sistema bajo prueba y luego algunos problemas en el sistema bajo prueba. La prueba se puede descubrir en el proceso de modelado inicial. No es necesario esperar hasta que se ejecute una gran cantidad de casos de prueba para descubrirlo.
(3) Mayor nivel de automatización de pruebas: después del modelado, MBT puede hacerlo. generar automáticamente casos de prueba, sin la necesidad de escribir documentos de prueba manualmente
(4) La tasa de cobertura de la prueba aumenta, lo que hace posible realizar pruebas exhaustivas (es decir, pruebas exhaustivas): el proceso de diseño de pruebas tradicional se basa en El trabajo manual y MBT evitarán el diseño manual de casos de prueba al generar rutas de prueba. Las limitaciones del pensamiento generarán casos de rutas de prueba más ricos, pero si es necesario realizar pruebas "completas" está determinado por el impacto de las pruebas fallidas en el negocio. MBT sólo técnicamente ofrece posibilidades de prueba exhaustivas.
? (5) El mantenimiento indirecto de casos de prueba basados en modelos es más eficiente: el mantenimiento tradicional requiere mano de obra, lo que requiere mucha mano de obra y costos de tiempo para volver a probar el diseño. Para utilizar MBT, solo necesita mantener el modelo de prueba, y la herramienta MBT puede completar automáticamente el trabajo de generar casos de prueba;
?Desventajas, es decir, las razones por las que no se promociona ampliamente :
?(1 ) El costo de aprendizaje es alto: los desarrolladores y evaluadores deben dominar el modelado y la selección de herramientas
(2) La inversión inicial en el uso de MBT es ? relativamente grande: las herramientas MBT existentes pueden no ser adecuadas. Si desea personalizar sus propios productos, debe considerar la escalabilidad y la lógica compleja del proceso, lo que significa que requiere mucho tiempo y energía
(3; ) Explosión de casos de uso
En resumen, existen muchos métodos de prueba. Hay muchos tipos, y MBT tiene sus propias ventajas y desventajas en comparación con las pruebas tradicionales. Si cualquier componente de una aplicación puede simularse mediante un modelo, controlarse mediante un controlador y compararse mediante resultados de pruebas, entonces la aplicación es la mejor candidata para MBT.
2.1? Proceso general 2.2? Diseño de modelo (diseño de modelo)
¿El diseño del modelo se utiliza para describir el sistema bajo prueba para construir casos de prueba?
(1) ) Enfoque del modelo:
(2) Clasificación del modelo MBT:
2.3 Selección de pruebas (selección de requisitos de prueba)
Pruebas de guía ¿Cómo funciona el generador de casos de uso (prueba? generación) generar casos de prueba
2.4 ¿Pruebas? Generación de rutas (generación de casos de prueba)
Generar casos de prueba según el modelo y la selección de requisitos de prueba.
GraphWalker es una herramienta Java de código abierto que completa esta parte del trabajo.
2.5 Ejecución de pruebas (prueba de ejecución)
Ejecutar pruebas y comparar expectativas
2.6? Ejemplo de FSM: modelado de funciones relacionadas con el inicio de sesión de Haipaike mallpc, de la siguiente manera
Una flecha representa una acción de prueba
Un nodo representa una verificación de prueba
2.7 Herramientas comunes: BPM-X, fMBT, GraphWalker
p>
3. Introducción a GraphWalker
GraphWalker es una herramienta de generación de casos de uso basada en modelos de prueba, que admite principalmente modelos FSM y EFSM. Lee el modelo en forma de gráfico dirigido y genera rutas de prueba, lo cual es adecuado para sistemas basados en transiciones de estados controlados por eventos y de múltiples estados.
4. Modelado usando GraphWalker
En un gráfico dirigido, los vértices (o nodos) representan algunos estados deseados y los bordes (arcos, flechas, transiciones) representan los objetivos en orden. para lograr lo deseado Cualquier acción requerida por el estado; 4.1 Herramienta de modelado: yEd
4.2 ¿Regla de modelado 1
4.3 Regla de modelado 2
4.4 Palabras clave de modelado?
4.5 Soporta múltiples modelos:
GraphWalker puede usar varios modelos en una sesión. Esto significa que GraphWalker puede optar por saltar de un modelo a otro al generar rutas. Esto resulta muy útil a la hora de dividir diferentes funciones en varios modelos.
Ejemplo de ejecución fuera de línea de varios modelos:
java -jar graphwalker-cli-4.0.0-SNAPSHOT.jar -d todo fuera de línea -m Model_A Graphml aleatorio (edge_coverage (100)) -m Model_B.graphml aleatorio (edge_coverage (100)) -m Model_C.graphml aleatorio (edge_coverage (100))? -m Model_D.graphml aleatorio (edge_coverage (100)) –o
Cuando la generación de ruta alcanza el vértice v_B en el modelo A, debe considerar la palabra clave COMPARTIDA: B. Esto le indicará a GraphWalker que busque en todos los demás modelos con el mismo nombre la misma palabra clave: B. En nuestro ejemplo, hay Sólo uno, y es en el Modelo B.
Ahora GraphWalker decide si salta del modelo A e ingresa el vértice v_B en el modelo B, o permanece en el modelo A. Esta decisión se basa en la aleatoriedad.
Funciones multimodelo:
5. Generador de rutas y condiciones finales
6. Cómo funciona GraphWalker
Como tercero biblioteca Por ejemplo: utilice la biblioteca de terceros GraphWalker para implementar pruebas de modelos automatizadas
7. Línea de comando GraphWalker: omitida aquí
8 La diferencia entre los servicios Restful o WebSocket: omitida aquí.
9. Interfaz API Web Socket: omitida aquí
10. Interfaz API REST: omitida aquí
11. Código fuente de GraphWalker:
Núcleo de la herramienta GraphWalker: Graphwalker-core
Referencia: Sitio web oficial http://graphwalker.github.io/
Observaciones:
FSM: Máquina de estados finitos ? Máquina de Estados Finitos
EFSM: Máquina de Estados Finitos Extendida