Prácticas Recomendadas para el Desarrollo de la Interfaz de Usuario de TestStand

Información general

Una Interfaz de Usuario de TestStand es una aplicación que proporciona una interfaz gráfica para ejecutar pruebas en una estación de producción. Normalmente usted usa una aplicación de interfaz de usuario para ejecutar pruebas y usa el Editor de Secuencias TestStand para desarrollar pruebas. Puede personalizar la interfaz de usuario para que se adapte a sus necesidades de prueba específicas o incluso para desarrollar pruebas, si es necesario.

Este artículo examina prácticas recomendadas para diseñar y desarrollar su aplicación de interfaz de usuario TestStand:

  • Describe los componentes que proporciona TestStand
  • Explica cómo utilizar la arquitectura TestStand para construir un sistema de prueba expansible y de fácil mantenimiento

Contenido

Arquitectura de una Interfaz de Usuario de TestStand

TestStand está diseñado utilizando una arquitectura modular, utilizando distintos componentes que tienen cada uno un solo propósito, lo que hace que el desarrollo y mantenimiento de todo el sistema sea más sencillo.

La interfaz de usuario es un componente distinto dentro de la arquitectura modular TestStand

La interfaz de usuario es un componente distinto dentro de la arquitectura modular TestStand

El componente de interfaz de usuario proporciona el mecanismo para que los desarrolladores y operadores de pruebas creen y ejecuten las secuencias en un sistema de pruebas. En una arquitectura modular, debe existir un límite claro entre la interfaz de usuario y la aplicación de TestStand subyacente. Esto tiene los siguientes beneficios:

  • Interactúe a la perfección con un sistema de pruebas utilizando diferentes interfaces de usuario.  Por ejemplo, un desarrollador de pruebas puede usar el editor de secuencias para desarrollar secuencias, mientras que un operador de pruebas usa una interfaz de operador para ejecutar pruebas y ver los resultados.
  • Realice cambios en la interfaz de usuario sin el riesgo de cambiar el comportamiento de la prueba en sí.

Las interfaces de usuario de TestStand se comunican con la API del Motor TestStand para realizar sus diversas funciones, como obtener el estado de las ejecuciones de prueba, crear y editar secuencias y configurar ajustes. TestStand también proporciona un conjunto de controles de interfaz de usuario y una API de IU separada que le permite crear rápidamente sus propias interfaces de usuario de TestStand.


Controles de Interfaz de Usuario (UI) de TestStand

Los controles de la interfaz de usuario (UI) de TestStand son un conjunto de controles ActiveX que implementan la funcionalidad común que las aplicaciones requieren para mostrar, ejecutar y depurar secuencias de prueba. Estos controles ActiveX reducen significativamente la cantidad de código fuente que requiere una interfaz de usuario para interactuar con la API de TestStand para manejar las tareas de la interfaz de usuario. Puede usar las páginas de Propiedades o llamar a las propiedades y métodos disponibles para configurar estos controles. consulte el tema de ayuda TestStand UI Controls para obtener más información sobre cómo usar los Controles de IU de TestStand en LabVIEW, CVI, C # o VB.NET.

Controles del Administrador y Controles Visibles

Los Controles de IU de TestStand proporcionan dos conjuntos de controles de interfaz de usuario: controles del administrador y controles visibles.

Los controles del administrador llaman a la API de TestStand para realizar tareas como cargar archivos, iniciar ejecuciones y recuperar información de secuencia y ejecución. Los controles del administrador también le notifican cuando ocurren eventos de la aplicación, como cuando un usuario inicia sesión, una ejecución alcanza un punto de interrupción o un usuario cambia el archivo o la secuencia que está viendo. Los controles del administrador son invisibles en tiempo de ejecución.

Los controles visibles muestran información al usuario, como un control de vista de ejecución que muestra el estado de ejecución actual. Los controles visibles también permiten al usuario interactuar con la IU, como usar un control de botón para ejecutar una prueba.  Los controles visibles deben estar conectados a un control del administrador para definir cómo funcionan.  Esta conexión se implementa utilizando los métodos de conexión de los controles del administrador. Cuando usted conecta controles, la lógica interna de administrar el comportamiento del control visible es manejada automáticamente por los controles del administrador.  Puede hacer conexiones de visualización, conexiones de lista, conexiones de comando y conexiones de fuente de información, según el tipo de control del administrador y control visible que conecte, y el comportamiento deseado del control visible.

Conecte los controles visibles de la interfaz de usuario de TestStand a los controles del administrador para definir su comportamiento

Conecte los controles visibles de la interfaz de usuario de TestStand a los controles del administrador para definir su comportamiento.

Para obtener más detalles sobre el uso de los controles de la interfaz de usuario de TestStand en diferentes entornos de programación, consulte el tema de ayuda Controles para Interfaz de Usuario de TestStand.  También puedes usar el Connecting UI Controls Demo para ver el comportamiento de las conexiones disponibles que usted puede crear.

Además, puede usar los controles proporcionados de forma nativa en su entorno de programación junto con los Controles de IU de TestStand. Cuando trabaje con controles nativos, puede usar la API de Interfaz de Usuario para comunicarse directamente con los controles del administrador para implementar la funcionalidad relacionada con TestStand. Consulte el ejemplo Building a TestStand UI with Native Controls Example para obtener más información sobre cómo escribir una aplicación que llame directamente a la API de TestStand.


Ejemplos Sencillos y con Funciones Completas para Aplicaciones de Interfaz de Usuario

TestStand proporciona varios ejemplos y componentes que puede usar para ayudarlo a construir una interfaz de usuario. Las interfaces de usuario de ejemplo proporcionan un punto de inicio para desarrollar una interfaz de usuario personalizada. TestStand también incluye componentes de interfaz de usuario que implementan características comunes utilizadas en estas aplicaciones que puede reutilizar en sus propias aplicaciones.

TestStand incluye un ejemplo sencillo y con funciones completas de aplicación de interfaz de usuario en los lenguajes de programación compatibles, incluyendo LabVIEW, LabWindows™/CVI™, C# y VB.net. TestStand proporciona el código fuente de estos ejemplos en cada uno de los lenguajes de programación compatibles. Puede usar este código fuente como punto de inicio para desarrollar una interfaz de usuario personalizada o puede usarlos tal como están.

La interfaz de usuario sencilla tiene una visualización mínima, no incluye una barra de menú y está diseñada como una interfaz para operadores de pruebas en un sistema de prueba implementado. La interfaz de usuario con todas las funciones muestra más información, incluye una barra de menú y proporciona capacidades de depuración.  La interfaz de usuario con todas las funciones también tiene un modo de editor que le permite crear y modificar secuencias de pruebas, como el Editor de Secuencias de TestStand.

Los ejemplos sencillos de la interfaz de usuario son un buen lugar para comenzar cuando se aprende a desarrollar utilizando los Controles de IU de TestStand.  Para las implementaciones de LabVIEW, LabWindows/CVI o C #, puede usar las siguientes guías para obtener una descripción detallada del código fuente y cómo funciona:

 

Administrar las Necesidades de Diferentes Usuarios

Al desarrollar interfaces de usuario para un sistema de pruebas, es importante tener en cuenta los objetivos y las necesidades de todos los usuarios que estarán interactuando con la aplicación.  Los usuarios del sistema de prueba normalmente se pueden clasificar en las siguientes funciones:

  • Desarrollador del Framework: diseña componentes del framework de prueba, que incluyen interfaces de usuario personalizadas, modelos de procesos y tipos de pasos.  
  • Desarrollador de Prueba: crea secuencias de prueba dentro del framework implementado por el desarrollador del framework.
  • Técnico: resuelve los problemas con las pruebas que se ejecutan en un entorno de producción.
  • Operador de Pruebas: configura unidades para la prueba y ejecuta las pruebas en un entorno de producción.

Al planificar y diseñar interfaces de usuario adecuadas para los usuarios del sistema de pruebas, está asumiendo el rol de desarrollador del framework.  Los Controles de IU de TestStand le permiten personalizar completamente su interfaz de usuario según los requisitos de sus usuarios. Por ejemplo, un operador de pruebas solo debe tener la capacidad de iniciar una prueba y ver el resultado.  Sin embargo, un desarrollador de pruebas necesita tener acceso completo para crear y editar archivos de secuencia.

Puede proporcionar a los desarrolladores de pruebas una interfaz de usuario con todas las funciones que permite la creación y edición de archivos de secuencia, como el ejemplo de interfaz de usuario con todas las funciones o el editor de secuencias proporcionado con TestStand.  Para los operadores de pruebas, puede diseñar una interfaz de usuario sencilla que exponga solamente un botón para comenzar la prueba, y un indicador que muestre el resultado de la prueba, para garantizar que los operadores puedan ejecutar la prueba con éxito.  Proporcionar una interfaz de usuario a los operadores que sea más complicada puede ser problemático, ya que requiere capacitación adicional del operador y es propenso a errores debido a la funcionalidad disponible.

Al utilizar los Controles de IU de TestStand para desarrollar la interfaz de usuario, usted podrá migrar sin problemas desde la interfaz de usuario completa a la interfaz de usuario sencilla. Ambas interfaces de usuario se basan en el motor, secuencias, modelos de proceso y otros componentes de TestStand, que son compartidos por ambas interfaces de usuario.

Las interfaces de usuario completas, como el editor de secuencias y las interfaces de usuario sencillas del operador pueden interactuar sin problemas con el mismo código de prueba

Las interfaces de usuario completas, como el editor de secuencias y las interfaces de usuario sencillas del operador pueden interactuar sin problemas con el mismo código de prueba

Además de crear interfaces de usuario distintas, también puede usar la administración de usuarios de TestStand para personalizar qué funciones están disponibles en una aplicación de interfaz de usuario sencilla.  Este enfoque es mejor en los casos en los que diferentes roles trabajan con las mismas ejecuciones de pruebas.  Por ejemplo, un técnico responsable de solucionar fallas de prueba necesitará acceso a datos de diagnóstico, como una visualización de la ejecución y/o reporte de prueba, que normalmente no están expuestos a los operadores.  Tener una aplicación de IU separada para el técnico sería problemático, ya que no tendrían acceso a la información de ejecución actual de la aplicación separada.  Para solucionar esto, usted puede crear una interfaz de usuario sencilla que desbloquee visualizaciones adicionales para usuarios más avanzados.  Por ejemplo, la Interfaz de usuario con todas las funciones de TestStand se puede cambiar al modo editor usando ctrl + shift + alt + insert para proporcionar a los usuarios avanzados la capacidad de realizar cambios en las secuencias.

El ejemplo de interfaz de usuario con todas las funciones puede ejecutarse en modo operador o modo editor
El ejemplo de interfaz de usuario con todas las funciones puede ejecutarse en modo operador o modo editor

Cuando usted define usuarios para el administrador de usuarios de TestStand, los Controles de IU de TestStand habilitan o inhabilitan automáticamente su estado en función de los privilegios del usuario actual. También puede definir un comportamiento personalizado basado en los privilegios de usuario con el método de la API de TestStand Engine.CurrentUserHasPrivilege, por ejemplo, ocultando o mostrando ciertas partes de la interfaz de usuario. Consulte el tema de ayuda Managing Users para obtener más información sobre la definición de usuarios y privilegios.

 

Funcionalidad para Implementar Fuera de la Interfaz de Usuario

Al desarrollar una interfaz de usuario de TestStand, es importante definir una línea clara de lo que se implementa en la interfaz de usuario frente a otros componentes del sistema de prueba.  Esta sección describe la funcionalidad común del sistema de prueba y dónde debe implementarse dentro de la arquitectura de TestStand.

Implementar Código de Inicialización en Devoluciones de Llamada Front-End

En muchos casos, un sistema de prueba requiere que se realicen acciones antes de que la prueba comience a ejecutarse. Por ejemplo, es posible que deba inicializar el hardware de prueba y validar que esté calibrado, o verificar los privilegios de usuario para inicializar la interfaz de usuario.

Para manejar estas funciones, puede usar la secuencia LoginLogout en el archivo de secuencia de devoluciones de llamadas Front-End.  Esta secuencia se ejecuta de forma predeterminada mediante el control del administrador de la aplicación de IU de TestStand cuando se inicia TestStand y, de forma predeterminada, muestra el cuadro de diálogo de inicio de sesión al usuario.  Agregar funcionalidad a esta secuencia tiene los siguientes beneficios:

  • Todas las interfaces de usuario de TestStand y el editor de secuencias llaman a la misma secuencia de inicio de sesión, lo que le permite definir la funcionalidad a la que puede tener acceso desde cualquier IU y evitar el código duplicado
  • Puede realizar cambios en el comportamiento de su código adicional sin necesidad de realizar cambios en las interfaces de usuario.

Además de la secuencia LoginLogout, usted puede definir secuencias adicionales en las devoluciones de llamadas front-end para implementar la funcionalidad llamada en un momento diferente.  Para estas secuencias adicionales, deberá agregar código a la interfaz de usuario para llamar a la secuencia en el momento deseado, usando el método Engine.CallFrontEndCallbackEx ().  Este enfoque es conveniente porque no necesita administrar una referencia a un archivo de secuencia, ya que TestStand carga y descarga automáticamente la devolución de llamada Front-End.  


Utilice el menú Herramientas para Tener Acceso a Aplicaciones Complementarias

Un sistema de prueba a menudo utiliza herramientas o aplicaciones separadas que funcionan junto con la prueba.  Por ejemplo, puede iniciar una utilidad de configuración de base de datos o una aplicación de análisis.  En lugar de crear estas funciones como módulos de una aplicación de interfaz de usuario, puede modularizar su sistema implantando herramientas autónomas y proporcionarles acceso a través de elementos de menú de herramientas personalizadas.  Puede personalizar el menú de herramientas desde el editor de secuencias usando el menú Tools » Customize. En el cuadro de diálogo de personalización, puede agregar nuevos elementos del menú de herramientas y configurar su comportamiento.

Cree herramientas personalizadas para proporcionar funcionalidad adicional a cualquier interfaz de usuario que implemente el menú de herramientas
Cree herramientas personalizadas para proporcionar funcionalidad adicional a cualquier interfaz de usuario que implemente el menú de herramientas

Los cambios que realice se guardan en un archivo de configuración independiente, por lo que todas las interfaces de usuario mostrarán las mismas entradas personalizadas que usted crea.  Para más información, consulte el tema de ayuda Customize Tools Menu Dialog Box.

Usar Modelos de Proceso para Definir Puntos de Entrada de Secuencia

Una interfaz de usuario debe proporcionar una forma para que los usuarios comiencen las ejecuciones de secuencia, pero es importante que la IU no esté directamente acoplada con ningún archivo de secuencia.  Para permitir que los usuarios inicien pruebas, puede crear un botón que llame a un punto de entrada de ejecución de la secuencia actualmente cargada, incluso ejecutando la secuencia directamente, o usando un punto de entrada de modelo de proceso, como Single Pass and Test UUTs.  La interfaz de usuario no debe contener la funcionalidad que se ejecuta antes o después de una ejecución de secuencia; en su lugar, implemente esta funcionalidad a través del modelo de proceso.

Los modelos de proceso también pueden definir puntos de entrada de configuración, que permiten a los usuarios configurar los ajustes del modelo de proceso. Asegúrese de que todas las configuraciones del modelo son ajustadas desde estos puntos de entrada y no directamente a través de la interfaz de usuario. Al incorporar características en el modelo de proceso, las características están disponibles en cualquier aplicación de interfaz de usuario de TestStand y en el editor de secuencias.

Para obtener más información sobre el uso de modelos de proceso, consulte el documento Best Practices for TestStand Process Model Customization.

 

Comunicación entre la Interfaz de Usuario y Otros Componentes

Si bien es importante que la interfaz de usuario esté desconectada de otros componentes del sistema de prueba, como los archivos de secuencia de prueba y los modelos de proceso, es necesario que la interfaz de usuario se comunique efectivamente con estos componentes.  Esta sección proporciona enfoques que puede utilizar para comunicarse entre estos componentes y mantener esta modularidad.

Comunicación entre la Secuencia y la Interfaz de Usuario.

Mientras se ejecuta una prueba, el sistema de pruebas debe proporcionar información al operador que indica el estado actual de la ejecución, como qué prueba se está ejecutando o los resultados de la prueba actual. En general, puede usar los Controles de IU de TestStand para mostrar esta información, como una Vista de Ejecución y una Vista de Reporte. Al conectar estos controles a un control de administrador, siempre se actualizarán para mostrar el estado de ejecución actual, según lo administre el motor.

En algunos casos, es posible que desee mostrar información más específica sobre la prueba.  La secuencia de ejecución o el módulo de código debe pasar esta información a la interfaz de usuario para mostrar o dar instrucciones a la interfaz de usuario para que actúe. Para comunicar esta información sin introducir acoplamiento, puede utilizar mensajes de IU para implementar la comunicación. La alternativa de usar una propiedad de archivo de secuencia o una variable de interfaz de usuario como medio para comunicarse crea dependencias no deseadas entre los archivos de secuencia y la Interfaz de usuario. Por ejemplo, la actualización de un archivo global desde la secuencia y luego la comprobación de su estado en la interfaz de usuario introduce un acoplamiento entre el archivo global y la interfaz de usuario.   Los mensajes de IU son preferidos por dos razones:

  1. Independencia de la IU y los archivos de secuencia: una interfaz de usuario siempre debe ejecutarse con cualquier archivo de secuencia y viceversa.  Al utilizar los mensajes de la interfaz de usuario, no es necesario que existan ciertas propiedades en los archivos de secuencia cuando se utilizan con la interfaz de usuario.  Con los mensajes de la interfaz de usuario:
    • La interfaz de usuario puede ejecutar secuencias que no implementan ciertos mensajes (el código de manejo en la interfaz de usuario simplemente nunca se ejecuta).
    • Las secuencias que publican mensajes personalizados se pueden ejecutar en una IU que no está diseñada para manejarlas (la interfaz de usuario simplemente ignora el mensaje de la IU).
  2. Mantenimiento: los mensajes de la interfaz de usuario evitan la dependencia de las propiedades de los archivos de secuencia o las variables de la interfaz de usuario, lo que significa menos para los desarrolladores de los archivos de secuencia y las interfaces de usuario.

Para obtener más información sobre el uso de los mensajes de la interfaz de usuario, consulte Using TestStand User Interface Messages (UI Messages)

Tipos de Mensajes de la IU

Los mensajes de la IU contienen un No. de mensaje que indica el propósito del mensaje.  TestStand define varios No. de mensajes de la IU, que definen los mensajes que el motor envía automáticamente o que los controles de la interfaz de usuario de TestStand manejan automáticamente.  Por ejemplo, el No. de mensaje UIMsg_EndExecution (valor 4) es enviado por el motor después de que finaliza una ejecución.  Los controles del administrador exponen muchos de estos mensajes de IU como eventos individuales; en este caso, puede definir un controlador para el evento ApplicationManager EndExecution en lugar de usar un controlador de eventos de mensajes de IU directamente.

Los otros modelos de proceso predeterminados publican otros mensajes de IU, como UIMsg_ModelState_Identified (Value: 32), que los modelos de proceso publican después de identificar el número de serie de la UUT.  Además, puede publicar mensajes UIMessages predefinidos o personalizados desde sus módulos de código, secuencia(s) de prueba o el modelo de proceso usando el método de la API de TestStand Thread.PostUIMessageEx

Se puede encontrar una lista de No. de mensajes de IU, o códigos de evento, en el tema de ayuda UIMessageCodes.

Puede definir sus propios mensajes UIMessages para operaciones personalizadas, como actualizar datos en una tabla e histograma. Cuando defina mensajes UIM personalizados, especifique códigos de evento únicos comenzando en el código de evento UIMsg_UserMessageBase. Cuando publique un mensaje UIMessage personalizado, pase el código de evento definido y los datos que se mostrarán. Los mensajes de IU proporcionan campos de datos para datos numéricos, de cadena o de ActiveX que especifica al llamar al método postUIMessageEx. Cuando define un controlador para responder al mensaje de IU en su interfaz de usuario, estos datos se exponen como parámetros en la devolución de llamada del evento.

Para definir cómo una interfaz de usuario maneja los mensajes de IU, configure la interfaz del operador para ejecutar el código definido por el usuario cuando se maneja un mensaje de IU agregando una devolución de llamada de evento para uno de los dos eventos del Administrador de la Aplicación:

  • Evento UImessage: este evento se activa cada vez que el administrador de la aplicación maneja cualquier mensaje de la IU.  La devolución de llamada de evento especificada se ejecutará antes de cualquier operación predeterminada de manejo de mensajes de IU.  El argumento de evento de salida de cancelación se puede establecer en Verdadero dentro de la devolución de llamada para anular las operaciones de evento predeterminadas.
  • Evento UserMessage: este evento se activa solo para mensajes de IU personalizados (aquellos con un No. de mensaje de 10,000 o más).  

Para obtener información sobre la definición de controladores de eventos para una interfaz de usuario, consulte el tema de ayuda Handling Events.

Comunicación desde la Interfaz de Usuario a la Prueba de Ejecución

En algunos casos, es posible que desee comunicar información desde la interfaz de usuario a la secuencia de pruebas.  Sin embargo, la comunicación entre una secuencia y una IU siempre debe iniciarse por la secuencia, para garantizar que la secuencia se encuentre en un estado en el que se puedan modificar los datos.  Para lograr esto, la secuencia puede publicar un mensaje de IU con un código personalizado, lo que indica que está listo para la comunicación. Cuando publique el mensaje UIMessage, establezca el parámetro síncrono en Verdadero para que la ejecución espere hasta que la interfaz de usuario procese el mensaje. Cuando la interfaz de usuario procesa el UIMessage, recupera el objeto SequenceContext y escribe o lee ciertas variables, como las variables locales del modelo de proceso.
En muchos casos, la IU no es el mejor lugar para que el usuario especifique los datos relacionados con la prueba.  Por ejemplo, si los datos se relacionan con tareas en los modelos de proceso, un mejor enfoque sería modificar o crear un punto de entrada de configuración, al que puede tener acceso desde el menú predeterminado.

Para ver un ejemplo de cómo publicar y manejar mensajes de IU, incluyendo el uso de mensajes de IU para recopilar datos de la interfaz de usuario, consulte el ejemplo incluido Handling UI Messages

 

Was this information helpful?

Yes

No