Los arreglos de cobertura son una poderosa herramienta de diseño que puede usarse para diseñar casos de prueba para probar eficientemente sistemas deterministas. Para tales sistemas, una entrada particular siempre generará la misma salida y, como resultado, los diseños estadísticos estándar son generalmente ineficientes. Resulta que las fallas en estos sistemas típicamente son precipitadas por ciertas combinaciones de solo algunos factores. Una matriz de cobertura garantiza que todas las combinaciones de un número específico de factores (llamado la fuerza) hayan sido cubierto Con la menor cantidad de casos de prueba posibles.
En su reciente enviar , Bradley Jones describió la cobertura de arreglos como la nueva y más emocionante GAMA característica que viene en el próximo lanzamiento de JMP .
La nueva plataforma Covering Array está en JMP Pro 12 , e incluye estas cuatro grandes características:
1. Los " Optimizar" Botón: La plataforma intenta construir el diseño más pequeño posible, y en algunos casos los diseños son óptimos. Sin embargo, cuando el diseño creado por la plataforma no es óptimo, la plataforma habilita un botón "Optimizar" que se puede usar para reducir aún más el tamaño del diseño. Tienes la oportunidad de especificar el número de iteraciones de optimización. Puede cancelar la optimización en cualquier momento, y el optimizador devolverá el mejor diseño encontrado.
2. Los " Restringir combinaciones de nivel de factor ”Control: al definir un diseño, a veces es necesario restringir ciertas combinaciones de nivel de factor (es decir, combinaciones no permitidas). Por ejemplo, suponga que estaba probando una aplicación basada en navegador, querría asegurarse de que su diseño no contenga navegadores incompatibles, pares de sistemas operativos (por ejemplo, IE10, OSX). Los " Restringir combinaciones de nivel de factor El control proporciona dos formas de especificar tales restricciones. La idea es proporcionar un control que sea lo suficientemente flexible como para que tanto los usuarios experimentados como los ocasionales sean acomodados. Puede usar JSL (lenguaje de script JMP) para definir restricciones como una expresión booleana.

Especificar correctamente las restricciones como una expresión booleana a veces puede ser desafiante. Para hacer esto más fácil, puede usar una herramienta similar a un filtro de datos para especificar restricciones.

Tenga en cuenta que los diseños que restringen las combinaciones de nivel de factor también pueden optimizarse.
3. Los " Análisis ”Secuencia de comandos de tabla: si crea una tabla de datos de diseño, se agregará una columna de Respuesta y estará disponible una secuencia de comandos de tabla de“ Análisis ”. Un resultado para cualquiera de estas ejecuciones puede ser pasar, fallar o faltar. Si al menos uno de los resultados es un fracaso, entonces el script de análisis se puede usar para identificar posibles combinaciones de factor / nivel que podrían haber precipitado el fallo. Este problema de identificación a menudo se conoce como el problema de "localización de fallas".

4. Los " Diseño de carga ”Opción de menú: esta opción le permite cargar un diseño de matriz de cobertura desde una tabla de datos JMP. Imagine que tiene un diseño y está interesado en evaluar las propiedades de cobertura del diseño. O tal vez le gustaría ver si se puede reducir el número de ejecuciones mientras se conserva la cobertura. Siempre que su diseño esté en un formato que JMP pueda abrir como una tabla de datos, puede usar esta opción para cargarlo en la plataforma.

Incluso puede cargar un diseño con combinaciones no permitidas siempre y cuando las combinaciones no permitidas se especifiquen como una expresión booleana en una propiedad de tabla "Combinaciones no permitidas".
Para más información sobre la cobertura de matrices, lea La discusión de Brad en su post. para esta serie y el post de Ryan Lekivetz, que describe cómo lo usó inteligentemente Cubriendo arrays en un proyecto de mejoras para el hogar. .
Nota del editor: Este post es parte de un Serie de avances de JMP 12. Escrito por las personas que desarrollan el software.