testing integration-testing mbt

testing - Estrategias de prueba basadas en modelos



integration-testing mbt (4)

¿Qué estrategias ha usado con las Pruebas Basadas en Modelos?

  • ¿Lo usa exclusivamente para pruebas de integración o lo ramifica a otras áreas (verificación unidad / funcional / sistema / especificación)?
  • ¿Construyes modelos "sellados" enfocados o evolucionas modelos onibus complejos a lo largo del tiempo?
  • ¿Cuándo en el ciclo del producto inviertes en la creación de MBT?
  • ¿Qué tipo de bibliotecas de prueba básica crea exclusivamente para MBT?
  • ¿Qué diferencia hace en sus bibliotecas de prueba de base funcional para admitir mejor los MBT?


No hemos hecho mucho / mucho de I & T y utilizamos pruebas unitarias casi exclusivamente, sazonados con un poco de pruebas del sistema. Pero nuestro enfoque es claramente en las pruebas unitarias. Soy muy estricto con las API que construimos / proporcionamos, por lo que se supone que, si funciona por sí solo, funcionará en conjunto y no ha habido mucho error todavía.

Nuestros modelos se centran en un único propósito / módulo con la menor cantidad de dependencias posible.

El enfoque siempre es comenzar lo más temprano posible (TDD-un poco), pero desafortunadamente no siempre lo hacemos. El problema es que siempre tienes que vendérselo a la gerencia y luego es difícil porque mientras las pruebas mejoran la estabilidad (control de calidad general), las personas externas (fuera de la tecnología) no pueden relacionarse con lo que eso significa hasta que algo malo sucedió.

Como usamos PHP, empleamos PHPUnit para las pruebas unitarias. En general, hacemos CI con varias herramientas diferentes. :)


[Hay varios ensayos que vale la pena leer sobre esto. no me permitirá publicar más de uno, así que los agregué en una publicación de blog, vinculada al final de esta respuesta.]

Primero, una nota rápida sobre los términos. Tiendo a usar la definición de Testing de James Bach como "cuestionar un producto para evaluarlo". Todas las pruebas dependen de / mental / modelos de la aplicación bajo prueba. Sin embargo, el término Pruebas Basadas en Modelos generalmente se usa para describir la programación de un modelo que puede explorarse a través de la automatización. Por ejemplo, uno podría especificar un número de estados en los que puede estar una aplicación, varias rutas entre esos estados y ciertas afirmaciones sobre lo que debería ocurrir en la transición entre esos estados. Entonces uno puede tener scripts ejecutando permutaciones semi-aleatorias de transiciones dentro del modelo de estado, registrando resultados potencialmente interesantes.

Aquí hay costos reales: construir un modelo útil, crear algoritmos para explorarlo, registrar sistemas que le permitan a uno pasar por fallas interesantes, etc. El que los costos sean razonables tiene mucho que ver con cuáles son las preguntas que desea ¿contestar? En general, comience con "¿Qué quiero saber? ¿Y cómo puedo aprender mejor sobre esto? "En lugar de buscar un uso para una técnica interesante.

Dicho todo esto, algunos excelentes evaluadores han obtenido mucho rendimiento de las pruebas automatizadas basadas en modelos. A veces tenemos preguntas importantes acerca de la aplicación bajo prueba que se exploran mejor mediante pruebas semialeatorizadas automáticas y de alto volumen. Harry Robinson (uno de los principales teóricos y defensores de las pruebas basadas en modelos) describe un ejemplo muy colorido en el que descubrió muchos errores interesantes en las indicaciones de conducción de Google utilizando una prueba basada en modelos (escrita con la biblioteca Watir de ruby). 1

Robinson ha utilizado MBT con éxito en compañías como Bell Labs, Microsoft y Google, y tiene varios ensayos útiles. [2]

Ben Simo (otro gran pensador y escritor de pruebas) también ha escrito bastante valioso sobre las pruebas basadas en modelos. [3]

Finalmente, algunas precauciones: para hacer un buen uso de una estrategia, es necesario explorar tanto sus fortalezas como sus debilidades. Con ese fin, James Bach tiene una excelente charla sobre los límites y desafíos de las Pruebas Basadas en Modelos. Esta publicación de blog de los enlaces de Bach a su charla de una hora (y las diapositivas asociadas). [4]

Terminaré con una nota sobre lo que Boris Beizer llama Pesticide Paradox: "Cada método que utilizas para prevenir o encontrar errores deja un residuo de errores más sutiles contra los cuales esos métodos son ineficaces". Pruebas con guiones (ya sean ejecutadas por una computadora o un persona) son particularmente vulnerables a la paradoja del pesticida, tendiendo a encontrar información cada vez menos útil cada vez que se ejecuta el mismo script. La gente a veces recurre a las pruebas basadas en modelos pensando que soluciona el problema del pesticida. En algunos contextos, las pruebas basadas en modelos pueden encontrar un conjunto mucho más grande de errores que un conjunto dado de pruebas escritas ... pero se debe recordar que aún está fundamentalmente limitado por la paradoja de los pesticidas. Recordando sus límites, y comenzando con las preguntas que MBT aborda bien, tiene el potencial de ser una estrategia de prueba muy poderosa.

Los enlaces a todos los ensayos mencionados anteriormente se pueden encontrar aquí: http://testingjeff.wordpress.com/2009/06/03/question-about-model-based-testing/


La mejor manera es probar usted mismo una herramienta de prueba basada en el modelo. Es la mejor manera de saber si las pruebas basadas en modelos se adaptan a su contexto. Y qué tipo de estrategias es la buena.

Te aconsejo la herramienta "MaTeLo" de All4Tec (www.all4tec.net)

"MaTeLo es un generador de casos de prueba para pruebas funcionales y de sistemas de caja negra. Conforme al enfoque de Pruebas Basadas en Modelos, MaTeLo usa cadenas de Markov para modelar la prueba. Este complemento estadístico permite la validación de productos de forma Sistemática. de los recursos humanos necesarios, un aumento de la reutilización del modelo y la mejora de la relevancia de la estrategia de prueba (debido al objetivo de fiabilidad) MaTeLo es independiente y fácil de usar, ofrece a las actividades de validación pasar de scripting de prueba a prueba real ingeniería y centrarse en el valor real de las pruebas: los planes de prueba "

Puede solicitar una licencia de evaluación e intentarlo usted mismo.

Puede encontrar algunos ejemplos aquí: http://www.all4tec.net/wiki/index.php?title=Tutorials