Amélioration des performances du système TestStand

Aperçu

Les performances de votre système de test peuvent avoir une incidence importante sur la productivité et les coûts de votre chaîne de fabrication. Les systèmes de test lents peuvent nécessiter une duplication coûteuse ou réduire la couverture des tests, ce qui peut avoir des répercussions sur la qualité. L’optimisation des performances de votre logiciel de test peut améliorer les temps de test et assurer des tests approfondis en utilisant moins de stations de test.

Cet article décrit certaines pratiques exemplaires pour optimiser les performances des stations de test développées avec le logiciel TestStand de NI. Il est important de se rappeler qu’aucune solution ne s’applique à tous les systèmes de test. Certaines approches réduiront les performances de certains systèmes de test tout en les augmentant dans d’autres. Prenez le temps de comparer les résultats de vos tests avant et après l’implémentation de tout changement dans votre système afin de pouvoir évaluer les avantages et les inconvénients potentiels. 

Contenu

Options de configuration TestStand

TestStand a plusieurs options de configuration qui peuvent avoir une incidence sur les performances. Les sections suivantes décrivent ces options.

  • Traçage de séquence
  • Options pour équilibrer la vitesse d’exécution et l’utilisation de la mémoire

 

Traçage de séquence

Le traçage de séquence fournit un retour immédiat et l’état de l’opération en cours, comme Réussi (Pass), Échec (Fail), Erreur (Error) ou Omis (Skipped). Cependant, le traçage de séquence a des conséquences sur les performances en diminuant la vitesse d’exécution. Les approches suivantes peuvent vous aider à améliorer la vitesse d’exécution sans sacrifier les avantages du traçage de séquence.

Pour améliorer les performances lorsque le traçage de séquence est activé, définissez la vitesse de traçage sur rapide pour vous assurer qu’aucun délai supplémentaire n’est ajouté entre les pas. Utilisez l’onglet Exécution (Execution) de la boîte de dialogue Options de la station (Station Options) pour configurer le traçage, accessible via Configurer  » Options de la station (Configure » Station Options).

Même lorsqu’il est défini sur la vitesse la plus rapide, le traçage ajoute quelques millisecondes de temps système par pas pour mettre à jour le volet Affichage de l’exécution (Execution View) après l’exécution de chaque pas. Pour des performances optimales, vous pouvez procéder à la désactivation totale du traçage. Toutefois, si vous désactivez le traçage de séquence, l’affichage d’exécution n’est pas mis à jour pendant l’exécution de la séquence.

Pour équilibrer les performances avec les avantages du traçage en termes de convivialité, utilisez le paramètre Traçage des appels de séquence (Sequence call trace) pour désactiver le traçage dans des sous-séquences particulières.  Pour utiliser cette approche, organisez vos tests en groupes logiques et créez des sous-séquences pour chacun.  Par exemple, dans une séquence de test pour un dispositif mobile, des tests pour chaque composant, tels que les données cellulaires, l’entrée utilisateur et les systèmes audio, peuvent être implémentés dans des séquences séparées. Pour le pas SequenceCall de chaque composant, désactivez le traçage dans l’appel de séquence.

  1. Sélectionnez Propriétés » Options d’exécution (Properties » Run Options).
  2. Définissez la propriété du paramètre de traçage des appels de séquence sur Désactiver le traçage en séquence (Disable tracing in sequence).

L’organisation de la séquence de test de cette manière vous permet d’utiliser le traçage de séquence pour la séquence de niveau supérieur sans la surcharge de performance du traçage de chaque sous-pas. Cette approche peut également être facilement adaptée aux tests parallèles, car vous pouvez appeler chaque sous-séquence de manière asynchrone. Reportez-vous à la section Amélioration des performances de test grâce à des tests parallèles pour plus d’informations sur la mise en parallèle de votre séquence de test.

Utilisez les pas d’appel de séquence avec le traçage désactivé pour améliorer les performances et voir l’état d’exécution

 

Options pour équilibrer la vitesse d’exécution et l’utilisation de la mémoire

TestStand vous permet de configurer le moment où les modules de code sont chargés et déchargés de la mémoire, ce qui peut avoir une incidence importante sur l’utilisation de la mémoire et la vitesse d’exécution d’une séquence de test. La configuration des modules pour qu’ils restent en mémoire plus longtemps améliorera le temps d’exécution, car les modules n’auront pas besoin d’être rechargés pendant les exécutions de sous-séquences.  Cependant, si trop de modules sont conservés en mémoire, vous pouvez dépasser les limites de mémoire de l’application ou la mémoire physique disponible, ce qui peut également ralentir l’exécution.

Idéalement, vous pouvez apporter des améliorations à votre système de test pour augmenter les limitations de mémoire, plutôt que de décharger les modules de code pour économiser la mémoire. Par exemple :

  • Utilisation de la version 64 bits de TestStand pour augmenter les limites de mémoire de l’application. Pour plus d’informations sur la résolution des problèmes de mémoire avec TestStand 64 bits, reportez-vous à la rubrique d’aide Choisir entre TestStand 32 bits et TestStand 64 bits  
  • Ajout de mémoire physique supplémentaire pour tester les systèmes.
  • Utilisation de disques durs SSD pour améliorer les performances de la mémoire virtuelle.

Si l’utilisation de la mémoire pose toujours un problème, vous pouvez définir les options de chargement/déchargement au niveau du pas ou au niveau du fichier de séquence. Dans la plupart des systèmes de test, vous pouvez combiner les options Précharger pendant l’ouverture du fichier de séquence (Preload when opening sequence file) ou Précharger au début de l’exécution (Preload when execution begins) avec l’option Décharger lorsque le fichier de séquence est fermé (Unload when sequence file is closed) pour des performances optimales.  

 

Objectif Paramètres optimaux
Optimiser les temps d’exécution Utilisez Précharger (Preload) pendant l’ouverture du fichier de séquence et Décharger (Unload) lorsque le fichier de séquence est fermé pour conserver les modules en mémoire jusqu’à ce que la séquence soit fermée.  La conservation des modules chargés en mémoire augmente la vitesse des appels ultérieurs.
Réduire l’utilisation de la mémoire Utilisez Charger dynamiquement (Load Dynamically) et Décharger après l’exécution du pas (Unload after Step Executes) pour supprimer les modules de la mémoire dès qu’ils ne sont plus utilisés. Cependant, les performances diminuent, car le module doit être rechargé chaque fois qu’un pas s’exécute. Ce paramètre présente des risques supplémentaires, tels que la possibilité de perdre des données globales dans un module de code lorsque ce module de code se décharge.

 

Amélioration des performances de chargement des fichiers de séquence

Format de fichier

Le format de fichier peut influencer la vitesse et les performances pendant le chargement de fichiers de séquence volumineux. TestStand vous permet d’enregistrer des séquences dans les formats de fichiers suivants : INI, XML et binaire.  

  • Utilisez le format XML uniquement si le fichier doit être visualisé dans des applications sans accès au moteur TestStand, comme avec l’outil Afficheur de fichier de séquence (Sequence File Viewer) ou un autre afficheur personnalisé.
  • Utilisez le format INI uniquement si votre fichier de séquence doit être compatible avec TestStand 3.x ou avec une version antérieure.
  • Si aucune des conditions ci-dessus ne s’applique, utilisez le format binaire pour les temps de chargement les plus rapides.  

Pour spécifier le format à utiliser pour les nouveaux fichiers de séquence :  

  1. Sélectionnez Configurer » Options de la station (Configure » Station Options).
  2. Dans l’onglet Fichier (File), sélectionnez le bouton Options de format de fichier (File Format Options).  

Pour modifier le format d’un fichier de séquence existant :

  1. Sélectionnez Éditer » Propriétés du fichier de séquence (Edit » Sequence File Properties). 
  2. Sélectionnez Format de fichier (File Format) dans l’onglet Général (General).
  3. Choisissez le format souhaité dans le menu Format de fichier pour les nouveaux fichiers (File Format for New Files).

Utilisez le format de fichier binaire pour les temps de chargement des fichiers de séquence les plus rapides

 

Configuration du répertoire de recherche

La configuration du répertoire de recherche a une incidence directe sur le temps requis pour charger les fichiers de séquence et les modules de code dotés de chemins relatifs. La configuration du répertoire de recherche a une incidence sur les performances du chargement initial et sur l’exécution des tests, ainsi que sur les itérations suivantes si les modules sont chargés dynamiquement. Utilisez la boîte de dialogue de configuration du répertoire de recherche pour afficher et modifier les répertoires de recherche. Sélectionnez Configurer » Rechercher les répertoires (Configure » Search Directories) pour ouvrir la boîte de dialogue Éditer les répertoires de recherche (Edit Search Directories). 

Pendant la résolution d’un chemin relatif de module de code, TestStand utilise la procédure suivante :

  1. Ajoutez le chemin du module de code au premier répertoire de recherche.
  2. Vérifiez si le chemin absolu du fichier existe sur le disque.
  • S’il existe, le chemin est résolu.
  • S’il n’existe pas, passez au répertoire suivant.

TestStand vérifie la liste des répertoires de recherche pour résoudre un chemin relatif vers un fichier de module de code

 

Étant donné qu’un seul chemin est calculé pour chaque répertoire de recherche, ce processus n’a généralement pas d’incidence importante sur les performances.  

Toutefois, si un répertoire de recherche a l’option Rechercher les sous-répertoires (Search Subdirectories), le processus se répète pour chaque sous-répertoire dans le chemin spécifié.  Si le chemin contient une grande hiérarchie de répertoires, cette option peut grandement nuire aux performances.  En outre, si plusieurs fichiers portant le même nom existent dans la hiérarchie, le fichier incorrect peut être chargé. Pour ces raisons, évitez d’utiliser cette option pour les répertoires de recherche que vous ajoutez.  À la place, assurez-vous que tous les chemins du module de code sont spécifiés à l’aide d’un chemin relatif vers le répertoire de recherche de base.

Pour optimiser davantage l’ordre des répertoires de recherche, suivez les instructions suivantes :

  • Placez les répertoires contenant la majorité des modules de code vers le haut de la liste et les répertoires les moins fréquemment utilisés vers le bas.
  • Placez les répertoires situés sur les lecteurs réseau plus bas dans la liste, car l’accès au réseau est plus lent que l’accès au disque local.
  • Si vous devez utiliser l’option Rechercher (Search) dans les sous-répertoires, placez ces répertoires au plus bas de la liste comme fourre-tout.   

Pendant la conception de la structure de répertoires de votre système de test, pensez à enregistrer les modules de code dans un répertoire sous le chemin du fichier de séquence ou à un emplacement de module de code précis.   

  • L’utilisation de chemins relatifs au fichier de séquence garantit que le premier chemin de recherche (le répertoire du fichier de séquence actuel) renvoie toujours le fichier correct et évite d’avoir à effectuer des recherches supplémentaires. Cette disposition vous permet également de déplacer le dossier entier vers un autre emplacement ou ordinateur sans avoir à modifier les répertoires de recherche. Utilisez cette approche pour les modules de code qui ne sont utilisés que par un seul fichier de séquence ou un ensemble de fichiers de séquence associés.
  • L’utilisation d’un emplacement de module de code précis vous permet de référencer facilement des modules de code à partir de différents fichiers de séquence en ajoutant l’emplacement à la liste des répertoires de recherche.  Utilisez cette approche pour les modules de code partagés par de nombreux fichiers de séquence.

 

Amélioration des performances du module de code

TestStand peut appeler des modules de code dans divers environnements de développement pour effectuer des pas de test. La configuration de ces modules de code et des environnements de développement peut avoir une incidence importante sur les performances.  Dans n’importe quel environnement de module de code, vous pouvez obtenir de meilleures performances en transmettant uniquement les données nécessaires dans et hors d’un module de code. Évitez de transmettre de grandes quantités de données qui ne seront pas accessibles ou modifiées par le module de code.

Modules de code compilés (DLL)

Les modules de code compilés, tels que les assemblys .NET ou les DLL C/C ++, peuvent réduire les performances lorsque vous utilisez une version de débogage de la DLL plutôt qu’une version commerciale. En règle générale, les développeurs utilisent des DLL de débogage dans le développement pour faciliter la recherche et la correction des problèmes dans les modules. Une fois que la séquence de test est prête pour le déploiement, passez à la version des DLL pour améliorer les performances.  

Modules de code LabVIEW

Les VIs LabVIEW étant exécutés directement, ils peuvent être exécutés soit dans l’environnement de développement LabVIEW, soit dans le moteur d’exécution LabVIEW.  Lorsque vous exécutez des VIs LabVIEW dans l’environnement de développement, vous pouvez utiliser les fonctionnalités de débogage pour résoudre les problèmes de module de code, mais la vitesse d’exécution est plus lente.  Pour les tests en production, utilisez le moteur d’exécution LabVIEW pour appeler des VIs. Vous pouvez configurer le serveur LabVIEW utilisé pour exécuter le code LabVIEW à l’aide de la boîte de dialogue de l’adaptateur LabVIEW :

  1. Sélectionnez Configurer » Adaptateurs (Configure » Adapters).
  2. Sélectionnez l’adaptateur LabVIEW, puis cliquez sur Configurer (Configure).
  3. Sélectionnez le moteur d’exécution LabVIEW ou le système de développement LabVIEW.

Pour optimiser davantage les temps de chargement du code LabVIEW, vous pouvez créer vos VIs de module de code dans des bibliothèques de projets empaquetées (PPL).  Comme les PPL contiennent des versions compilées de toutes les dépendances de VI du module de code VIs, LabVIEW peut charger les dépendances en mémoire plus rapidement.  Sinon, si vous déployez votre code à l’aide de l’utilitaire de déploiement TestStand, il peut générer des PPL pour votre VIs dans le cadre du processus de déploiement.

Pour plus d’informations sur l’utilisation des PPL avec l’utilitaire de déploiement TestStand, reportez-vous à la rubrique d’aide Organisation des fichiers de programme de test avec les bibliothèques de projets empaquetées LabVIEW.

Amélioration des performances de test grâce à des tests parallèles

Vous pouvez souvent améliorer la vitesse des tests en utilisant des tests parallèles pour effectuer plusieurs tests simultanément.  TestStand fournit des fonctionnalités pour vous aider à paralléliser le test d’un seul UUT, ou pour tester plusieurs UUT simultanément.   

 

Mise d’une séquence de test en parallèle

Pendant le test d’un seul UUT, vous pourrez peut-être tester plusieurs parties du système en même temps.  Par exemple, considérons la séquence de test pour un appareil mobile. Les tests pour chaque composant, tels que les données cellulaires, l’entrée utilisateur et les systèmes audio, peuvent être implémenté dans des séquences séparées. Plutôt que d’appeler chaque séquence de manière séquentielle, vous pouvez configurer le pas d’appel de séquence pour les appeler de manière asynchrone afin d’accélérer le test.

Pour spécifier qu’un appel de séquence doit être exécuté de manière asynchrone :

  1. Sélectionnez un pas d’appel de séquence et cliquez sur l’onglet Module.
  2. Dans le menu Options d’exécution (Execution Options), sélectionnez l’option Utiliser un nouveau thread (Use New Thread) ou Utiliser une nouvelle exécution (Use New Execution).

L’appel d’une séquence dans un nouveau thread vous permet de tester simultanément différentes parties d’un UUT

Pendant la configuration des appels de séquence asynchrones, tenez compte des différences entre l’utilisation d’un nouveau thread et une nouvelle exécution :

 

Un nouveau thread Une nouvelle exécution
Partage la même collecte de résultats et le même rapport que l’appelant Possède sa propre collecte et rapport de résultats  
Est exécuté directement Peut être exécuté à l’aide d’un point d’entrée de modèle de processus
Partage les valeurs globales du fichier de séquence avec l’appelant A une nouvelle copie des valeurs globales du fichier de séquence
Est résilié ou suspendu avec l’appelant Est indépendamment résilié ou suspendu

 

En règle générale, vous devez utiliser la nouvelle option de thread pour les tests associés dans une séquence de test.  L’utilisation d’une nouvelle exécution est plus appropriée pour des fonctionnalités plus indépendantes, telles qu’un moniteur d’état qui doit s’exécuter indépendamment de la séquence de test.

 

Pour plus d’informations sur le choix d’utiliser un nouveau thread ou une nouvelle exécution, reportez-vous à Quand exécuter une séquence dans une nouvelle exécution ou dans un nouveau thread.

Obtention des résultats des appels de séquence asynchrones

Pour obtenir les résultats de vos sous-séquences asynchrones pour la création de rapports ou l’enregistrement de bases de données, utilisez les pas Attendre (Wait) à la fin de la séquence de lancement pour attendre la fin des appels de séquence asynchrone. Une fois le thread de sous-séquence terminé, TestStand attache les résultats de la sous-séquence asynchrone aux résultats du pas Attendre (Wait), les rendant disponibles pour la génération de rapports et l’enregistrement de bases de données. Pour attendre l’exécution d’une séquence ou d’un thread, sélectionnez Exécution (Execution) ou Thread dans Attendre (Wait) pour le contrôle et spécifiez l’exécution ou le thread à attendre.  Gardez à l’esprit que l’ajout de cette attente peut entraîner un retard d’exécution si la séquence d’appel se termine avant le thread, n’utilisez donc cette approche que lorsque vous avez besoin des résultats du nouveau thread

Utilisez un pas d’attente pour obtenir les résultats d’un appel de séquence asynchrone

 

Test de plusieurs UUT en parallèle

En plus d’utiliser des appels asynchrones dans votre séquence de test, TestStand vous permet de tester plusieurs UUT en parallèle à l’aide des modèles de processus parallèle et par lots.  Ces modèles de processus créent plusieurs exécutions qui exécutent chacune la séquence de test sur un UUT distinct.  Vous pouvez modifier le modèle de processus pour la station actuelle ou pour un fichier de séquence de test individuel.

Testez plusieurs UUT simultanément à l’aide des modèles de processus parallèle et par lots

 

Pour une démonstration de la façon dont les tests parallèles peuvent améliorer les temps de test, reportez-vous à la démonstration des stratégies de test parallèle incluse avec TestStand.

 

Choix entre le modèle de processus parallèle ou par lots

Alors que le modèle de processus parallèle vous permet de démarrer et de terminer les tests des UUT à des moments différents, le modèle de processus Lot (Batch) est conçu pour démarrer et terminer la séquence de test sur tous les UUT en même temps.  

  • Le modèle de processus Parallèle (Parallel) est idéal pour tester plusieurs UUT à l’aide de montages de test séparés, où chaque UUT est testé indépendamment.   
  • Le modèle de processus Lots (Batch) est idéal pour tester les UUT qui sont testés en groupe à l’aide d’un dispositif de test commun ou d’une chambre de test, où les tests doivent être synchronisés pour tous les UUT

 En plus de démarrer et de terminer chaque test par lots en même temps, le modèle de processus par lots vous permet d’utiliser des étapes et des paramètres de synchronisation par lots pour synchroniser davantage les tests entre les UUT du lot. Si certaines parties du test doivent être exécutées en même temps pour tous les UUT, vous pouvez définir des sections synchronisées pour un seul pas à l’aide des paramètres de pas ou pour plusieurs pas à l’aide du type de pas de test de synchronisation par lots.

Utilisez la synchronisation par lots pour vous assurer que certaines parties du test sont synchronisées pour tous les UUT du lot

Pour tous les types de sections de synchronisation par lots, toutes les interfaces de connexion entrent et sortent ensemble de la section.  Vous pouvez en outre configurer la synchronisation pour qu’elle s’exécute séquentiellement ou uniquement dans un seul thread.

Pour plus d’informations sur la synchronisation par lots, reportez-vous à l’exemple Types de pas de test de synchronisation : Synchronisation par lots.

 

Considérations matérielles pour les tests parallèles

Pendant le test de plusieurs UUT en parallèle, le matériel de test disponible peut devenir un problème pour les performances.  Lorsque vous utilisez une ressource matérielle partagée, vous devez vous assurer qu’un seul thread accède à une ressource matérielle partagée à tout moment pour éviter les conflits de ressources.  En règle générale, vous utilisez les paramètres de verrouillage ou les types de pas de test pour réserver une ressource partagée.  Cependant, si plusieurs threads attendent sur une seule ressource pour terminer un test, la plupart des améliorations potentielles du test parallèle ne seront pas réalisées.  Pour atténuer ce phénomène, vous pouvez utiliser les approches suivantes :

  • Utilisez les types de pas de test Planification automatique (Auto Schedule) pour permettre à d’autres tests de s’exécuter en attendant les ressources.
  • Utilisez Execution Profiler pour rechercher le matériel à l’origine du problème et ajouter du matériel de test supplémentaire.

 

Utilisation de la planification automatique

Le type de pas de test Planification automatique (Auto Schedule) vous permet de configurer un ensemble de tests qui peuvent être exécutés dans n’importe quel ordre pour optimiser le temps de test et l’utilisation du matériel.  Lorsqu’une section programmée automatiquement est exécutée à l’aide du modèle de processus parallèle ou par lots, chaque interface de connexion exécute la première section qui ne nécessite pas de ressource réservée. Pour cette raison, l’ordre d’exécution peut varier entre les différentes exécutions du même test

Utilisez le planificateur automatique pour optimiser l’utilisation du matériel lorsque l’ordre d’exécution n’est pas important

 

Utilisez cette approche lorsque l’ordre d’exécution des tests n’est pas important. Si votre test nécessite que les résultats du test soient présentés dans un ordre précis, n’utilisez pas la planification automatique.

 

Utilisation de Execution Profiler

L’outil Execution Profiler fourni avec TestStand est utile pour indiquer le matériel de test qui limite la vitesse d’exécution du système de test.  Lancez Execution Profiler à partir de l’éditeur de séquence en utilisant Outils » Execution Profiler (Tools » Profile Execution).

Profile Execution vous permet de voir combien de temps chaque ressource matérielle est active, vous permettant de prendre des décisions éclairées sur l’incidence de l’ajout de matériel au système de test.  Dans l’exemple de profil ci-dessous, le multimètre numérique est pleinement utilisé alors que l’oscilloscope n’est utilisé qu’à 66 %.  Selon ce profil, l’ajout d’un deuxième multimètre numérique ou d’un multimètre numérique avec plus de voies améliorerait le temps de test pour cette séquence.

Profile Execution vous permet de visualiser quelles ressources sont des problèmes potentiels dans votre configuration de test

 

Optimisation de l’utilisation du matériel

Vous pouvez améliorer les temps de test en vous assurant que vous interagissez avec le matériel de la manière la plus efficace possible.  Cette section traite des considérations relatives à la gestion des références matérielles et des techniques de mesure pour améliorer les performances.

 

Optimisation des performances de mesures matérielles

Pour toute configuration matérielle donnée, plusieurs facteurs communs peuvent réduire l’efficacité des tests. Par exemple, vous pouvez utiliser un oscilloscope pour mesurer le temps de montée, le temps de descente, la valeur efficace et les valeurs de crête d’un signal. Si vous programmez l’oscilloscope pour capturer le waveform en entier, transférez le waveform vers le système de test, puis effectuez un post-traitement sur les données pour extraire les mesures souhaitées, vous constaterez une baisse des performances en raison de la grande quantité de données transférées. La latence du bus de communication peut avoir des répercussions sur les performances. C’est pourquoi vous devez déterminer si votre instrument a une latence élevée, comme une connexion LAN ou série, ou un bus à faible latence, comme PCI ou PXI.

Si vous configurez l’oscilloscope pour mesurer le temps de montée, déclenchez une acquisition, relisez le temps de montée de l’instrument et répétez pour chaque mesure. Vous devez alors reconfigurer et redéclencher l’oscilloscope pour chaque mesure. Cette option a également tendance à être lente et inefficace.

Étant donné que de nombreux oscilloscopes modernes ont plusieurs voies de mesure, utilisez les étapes suivantes pour accélérer l’exécution des tests :

  1. Réglez le test pour configurer quatre voies de mesure (une pour chacune des mesures ci-dessus) dans l’oscilloscope.  
  2. Déclenchez une seule acquisition.
  3. Relisez chacune des quatre voies de mesure.

Gestion des durées de vie des références matérielles

L’ouverture et la fermeture fréquentes de sessions sur le matériel peuvent ralentir les performances : durant l’initialisation de la communication avec un périphérique, de nombreux drivers transfèrent de grandes quantités de données pour vérifier les communications et les configurations. Pour cette raison, il est préférable d’initialiser le matériel une seule fois par test, tout en conservant un descripteur de session qui est utilisé tout au long du test pour accéder au matériel.

Pour initialiser le matériel une seule fois dans un test, vous pouvez utiliser le callback du modèle de processus ProcessSetup, qui s’exécute avant tout le code de test.  Dans le cas des modèles de processus parallèle et par lots, ProcessSetup ne s’exécute qu’une seule fois, quel que soit le nombre d’interfaces de connexion de test. Pour nettoyer les références, vous pouvez utiliser le callback ProcessCleanup, qui s’exécute une fois que tous les tests sont terminés. Pour plus d’informations sur la création et l’utilisation de callbacks de modèle de processus, reportez-vous à Utilisation des callbacks dans NI TestStand.

Pour accéder aux sessions matérielles ouvertes dans un callback de modèle de processus, vous pouvez utiliser une variable globale de fichier qui est partagée entre la séquence de callback et MainSequence.  Vous pouvez également utiliser le gestionnaire de session, qui peut gérer automatiquement la durée de vie des sessions matérielles à l’aide d’un objet ActiveX.  Reportez-vous aux exemples de gestionnaire de session pour plus d’informations sur l’utilisation du gestionnaire de session.

 

Optimisation du traitement des résultats

Il existe plusieurs façons d’optimiser l’incidence de la collecte des résultats sur les performances du système.

Utilisation de l’enregistrement à la volée

Pour les processeurs de résultats intégrés, vous pouvez sélectionner l’option À la volée (On-The-Fly) pour effectuer l’enregistrement pendant que la séquence s’exécute, plutôt qu’à la fin de la séquence de test.  Tenez compte de ces avantages et inconvénients lorsque vous choisissez d’utiliser ou non ce paramètre

 

Avantages de l’enregistrement à la volée :

  • Pour l’opérateur de test, possibilité d’afficher le rapport pendant l’exécution du test.
  • Préservation des résultats en cas d’erreur critique dans le programme de test.
  • Utilisation de moins de mémoire s’il est utilisé avec le paramètre Ignorer les résultats (Discard Results) ou Désactiver les résultats (Disable Results) lorsqu’ils ne sont pas requis par le modèle dans les options du modèle de processus.  Lorsque ce paramètre est activé, tous les résultats déjà traités sont supprimés de la collection de résultats pour libérer de la mémoire.  Pour la génération de rapports, vous devez également activer l’option Afficher uniquement les derniers résultats (Only Display Latest Results) dans les paramètres de génération de rapports pour conserver la mémoire de cette manière.  

Inconvénients de l’enregistrement à la volée :

  • Diminution de la vitesse de test en raison de l’augmentation de la surcharge requise pour enregistrer plus fréquemment.
  • Personnalisation plus difficile, car l’enregistrement est implémenté dans un serveur séparé, qui ne peut pas être modifié.

Si une certaine réduction de la vitesse est acceptable afin de bénéficier des avantages de l’enregistrement à la volée, vous pouvez atténuer l’incidence sur les performances en ajustant les paramètres à la volée.  Pour accéder à ces paramètres :

  1. Sélectionnez Configurer » Traitement des résultats (Configure » Result Processing).
  2. Cochez la case Afficher plus d’options (Show More Options), puis cliquez sur le bouton Avancé (Advanced).

Pour améliorer les performances, augmentez l’intervalle de traitement et/ou le nombre maximum de résultats pour diminuer la fréquence à laquelle TestStand enregistre les résultats.   

Traitement des résultats hors ligne

Pour réduire le temps passé à générer des résultats, vous pouvez enregistrer les données des résultats dans un fichier de résultats hors ligne, qui est un format de résultat brut rapide et compact contenant toutes les informations dont TestStand a besoin pour générer un rapport ou un journal dans une base de données.  Étant donné que le fichier ne contient que des données de résultats brutes, son traitement prend moins de temps et peut améliorer le débit des tests.


Vous utilisez l’utilitaire de traitement des résultats hors ligne pour traiter les fichiers de résultats bruts dans un rapport de test ou pour enregistrer les données dans une base de données. Comme il s’agit d’un utilitaire distinct, vous pouvez l’exécuter indépendamment des tests, ce qui vous permet de traiter les résultats ultérieurement ou sur un autre ordinateur. Utilisez cet utilitaire dans les situations où les performances du système de test sont plus importantes que la génération immédiate de rapports. Pour plus d’informations, reportez-vous à l’aide de l’ utilitaire de traitement des résultats hors ligne TestStand.

 

Optimisation du stockage des données

Les données stockées localement sur un disque dur sont enregistrées plus rapidement que les données stockées sur un emplacement réseau, bien que certains mécanismes de transfert de données réseau soient plus rapides que d’autres. Par exemple, l’utilisation de Microsoft Message Queues (MSMQ) pour communiquer avec une base de données crée des fichiers de données intermédiaires locaux qui sont ensuite transférés sur le réseau. Ce procédé est généralement plus rapide et plus sûr que l’écriture directe dans la base de données distante. Alors que TestStand ne fournit pas de fonctionnalité native pour l’utilisation de MSMQ, des outils tiers pour implémenter ce type de communication sont disponibles.

 

Consignation des données requises seulement

La quantité de données enregistrées dans le système est un autre facteur à considérer. Les performances diminuent à mesure que la quantité de données enregistrées augmente. Afin de ne consigner que les données utiles, vous pouvez désactiver l’enregistrement des résultats pour certains pas ou certaines séquences.

Vous pouvez exclure les résultats d’enregistrement pour des pas individuels en désélectionnant l’option Enregistrer les résultats (Record Result) dans Pas » Propriétés » Options d’exécution (Step » Properties » Run Options). Vous pouvez également définir une séquence entière pour exclure l’enregistrement des résultats à l’aide du paramètre Désactiver l’enregistrement des résultats pour tous les pas (Disable Result Recording For All Steps) de la boîte de dialogue Propriétés de la séquence (Sequence Properties).

 

Arrêt du test en cas d’échec

Dans un environnement de production, vous devrez peut-être seulement savoir qu’un UUT a échoué à un test, plutôt que de savoir précisément quel test a échoué. Dans ces cas, vous pouvez mettre fin au test au premier échec pour libérer des ressources système, puis obtenir une analyse plus détaillée des échecs ultérieurement.  

Selon votre test, certains échecs peuvent être plus graves que d’autres. Vous souhaiterez peut-être terminer le test uniquement lorsque certains pas échouent.  Vous pouvez configurer le comportement d’échec pour des séquences ou des pas individuels

Pour terminer le test en cas d’échec d’un pas précis :

  1. Dans les propriétés Pas (Step), sélectionnez Post-action (Post Action).
  2. Dans le menu En cas d’échec (On Fail), sélectionnez Terminer l’exécution (Terminate Execution).

Pour terminer le test en cas d’échec d’une séquence particulière :

  1. Cliquez avec le bouton droit sur une séquence dans le volet des séquences et sélectionnez Propriétés de la séquence (Sequence Properties).
  2. Sélectionnez Goto Nettoyage (Goto Cleanup) pour l’option En cas d’échec du pas (On Step Failure).

Vous pouvez également configurer ce paramètre pour des stations de test particulières, par exemple en se terminant uniquement tôt sur les machines de test en production, tout en effectuant toujours le test dans son intégralité sur les machines de diagnostic en dehors de la ligne de production.  Pour configurer des machines de test particulières pour qu’elles se terminent en cas d’échec du test :

  1. Sélectionnez Configurer » Options de la station (Configure » Station Options).
  2. Dans l’onglet exécution, sélectionnez le paramètre Goto nettoyage immédiat en cas d’échec de la séquence (Immediately Goto Cleanup on Sequence Failure).