Test Station Setup

Interface opérateur pour tests

Une interface opérateur permet aux travailleurs en production d'exécuter des tests sans écrire de code. Découvrez ce qu'elle comprend, comment elle se.

JJulien Buteau
beginner9 min de lecture14 mars 2026

Qu'est-ce qu'une interface opérateur pour les tests de fabrication

Une interface opérateur est l'écran que voit un travailleur en production lorsqu'il exécute un test. Elle gère la saisie du numéro de série, affiche les résultats pass/fail, montre les invites pour les étapes manuelles et enregistre tout sans que l'opérateur ne touche au code. Ce guide couvre ce qu'une interface opérateur doit inclure, comment les principaux frameworks de test la gèrent, et comment en configurer une avec OpenHTF et TofuPilot.

Pourquoi les opérateurs ont besoin d'une interface dédiée

Les ingénieurs de test écrivent des scripts Python. Les opérateurs les exécutent. Ce sont des métiers différents avec des besoins différents.

Ingénieur de testOpérateur
Écrit et débogue le code de testExécute les tests des centaines de fois par équipe
Lit la sortie du terminalA besoin de gros indicateurs pass/fail
Sait ce que fait chaque phaseA besoin d'instructions étape par étape
A Python installéPeut ne pas savoir ce qu'est Python
Travaille sur une stationPeut alterner entre les stations

Exécuter un test depuis un terminal fonctionne pendant le développement. En production, l'opérateur a besoin d'un écran dédié qui supprime la complexité et prévient les erreurs.

Ce qu'une interface opérateur doit inclure

FonctionnalitéPourquoi
Saisie du numéro de sérieLecteur de code-barres ou saisie manuelle pour identifier chaque DUT
Contrôles démarrer/arrêterUn bouton pour démarrer, un pour interrompre
Affichage pass/failGrand indicateur coloré visible à distance
Progression des phasesMontre quelle étape est en cours et combien il en reste
Invites opérateurDemande des actions manuelles (retourner la carte, connecter un câble, contrôle visuel)
Champs de saisieCapture les observations de l'opérateur (liste déroulante, case à cocher, texte, numérique)
Affichage des mesuresMontre les lectures en temps réel pendant le test
Messages d'erreurInstructions claires quand quelque chose ne va pas
Historique des testsLes derniers résultats pour la station en cours

Comment les frameworks de test gèrent les interfaces opérateur

NI TestStand

TestStand est livré avec des interfaces opérateur pré-construites en LabVIEW, C# et VB.NET. Le code source est fourni pour que vous puissiez le personnaliser. Il prend en charge les rôles utilisateur (opérateur, développeur, admin), les exécutions de test simultanées et la génération de rapports.

Points forts : Mature, complet, personnalisable. Points faibles : Nécessite une licence TestStand (3-5 K$ par poste), Windows uniquement, lié à l'écosystème NI.

OpenTAP

OpenTAP propose un plugin de panneau opérateur qui fournit une vue simplifiée pour exécuter des plans de test. Il inclut un « mode focus » qui réduit les interactions au démarrage/arrêt et au pass/fail.

Points forts : Cœur open source, multiplateforme. Points faibles : Écosystème .NET, documentation limitée, interface opérateur basique.

OpenHTF

OpenHTF inclut un Station Server intégré qui sert une interface web sur localhost:12000. Il affiche l'état du test, la progression des phases et gère les invites opérateur via le navigateur.

Points forts : Basé sur le web (fonctionne sur tout appareil avec un navigateur), aucune installation nécessaire sur la machine de l'opérateur. Points faibles : L'interface intégrée est minimale. Pour un usage en production, la plupart des équipes associent OpenHTF à un frontend dédié.

pytest avec HardPy

HardPy ajoute un panneau opérateur basé sur navigateur à pytest. Il affiche la hiérarchie des tests, des boîtes de dialogue pour la saisie opérateur et des graphiques en temps réel.

Points forts : Natif pytest, interface web moderne. Points faibles : Projet récent, adoption limitée, fonctionnalités basiques.

Tableau comparatif

FonctionnalitéTestStandOpenTAPOpenHTF + TofuPilotHardPy
Saisie du numéro de sérieOuiOuiOuiOui
Affichage pass/failOuiOuiOui (streaming)Oui
Invites opérateurOuiLimitéOui (15+ types de saisie)Oui (dialogues)
Saisies basées sur imageNonNonOuiNon
Streaming en temps réelOuiLimitéOui (MQTT)Oui
Gestion des rôlesOuiNonOuiNon
Basé sur le webNon (bureau)Non (bureau)OuiOui
Mode kiosqueConfiguration manuelleNonOuiNon
Coût3-5 K$/posteGratuit (cœur)Gratuit (offre Lab)Gratuit
PlateformeWindowsWindows/LinuxTout navigateurTout navigateur

Prérequis

  • Python 3.10+
  • OpenHTF installé (pip install openhtf)
  • SDK Python TofuPilot installé (pip install tofupilot)

Étape 1 : Ajouter des invites opérateur à votre test

OpenHTF gère l'interaction opérateur via des invites. L'opérateur voit un message et fournit éventuellement une saisie avant que le test ne continue.

operator_test.py
import openhtf as htf
from openhtf.plugs import user_input


@htf.plug(prompts=user_input.UserInput)
def phase_visual_inspection(test, prompts):
    """Demander à l'opérateur d'effectuer un contrôle visuel."""
    prompts.prompt(
        "Inspectez la carte pour détecter les ponts de soudure ou les composants manquants. "
        "Appuyez sur Entrée quand c'est fait."
    )


@htf.plug(prompts=user_input.UserInput)
@htf.measures(
    htf.Measurement("operator_serial").with_args(docstring="Numéro de série scanné"),
)
def phase_scan_serial(test, prompts):
    """Demander à l'opérateur de scanner le numéro de série du DUT."""
    serial = prompts.prompt(
        "Scannez le code-barres sur l'étiquette du DUT.",
        text_input=True,
    )
    test.measurements.operator_serial = serial

Étape 2 : Diffuser vers l'interface opérateur TofuPilot

TofuPilot fournit une interface opérateur web qui diffuse la progression du test en temps réel. L'opérateur voit les invites, les mesures et les résultats pass/fail dans un navigateur. Pas de terminal, pas de code.

operator_test.py
from tofupilot.openhtf import TofuPilot

test = htf.Test(
    phase_scan_serial,
    phase_visual_inspection,
)

with TofuPilot(test):
    test.execute(test_start=lambda: input("Scanner le numéro de série : "))

Lorsque le test s'exécute, TofuPilot diffuse l'interface vers une URL que l'opérateur peut ouvrir sur n'importe quel appareil. La console affiche l'URL automatiquement.

Étape 3 : Déployer en production

Pour un usage en production, configurez la station de l'opérateur pour que le navigateur s'ouvre automatiquement en plein écran :

ParamètreRecommandation
NavigateurChrome ou Edge en mode kiosque (plein écran, pas de barre d'adresse)
ÉcranGrand moniteur ou écran tactile à la station de test
SaisieLecteur de code-barres configuré comme saisie clavier
Taille de policeZoom navigateur à 125-150 % pour la lisibilité à bout de bras
Démarrage automatiqueLancer le navigateur au démarrage, naviguer vers l'URL de streaming TofuPilot

Le flux de travail de l'opérateur devient : scanner le code-barres, suivre les invites, voir le résultat pass/fail. Pas de terminal, pas de système de fichiers, aucune connaissance Python requise.

Choisir la bonne approche

SituationRecommandation
Utilise déjà TestStandUtiliser l'interface opérateur intégrée sauf si vous migrez
Tests en Python, besoin d'une interface rapideOpenHTF + streaming TofuPilot (pas de code frontend à écrire)
Tests basés sur pytestHardPy pour les invites basiques, ou TofuPilot pour une interface opérateur complète
Besoins personnalisés (branding, tableau de bord multi-stations)Construire un frontend personnalisé via l'API TofuPilot
Budget zéro, doit fonctionner maintenantStation Server OpenHTF sur localhost:12000

Plus de guides

Mettez ce guide en pratique