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 test | Opérateur |
|---|---|
| Écrit et débogue le code de test | Exécute les tests des centaines de fois par équipe |
| Lit la sortie du terminal | A besoin de gros indicateurs pass/fail |
| Sait ce que fait chaque phase | A besoin d'instructions étape par étape |
| A Python installé | Peut ne pas savoir ce qu'est Python |
| Travaille sur une station | Peut 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érie | Lecteur de code-barres ou saisie manuelle pour identifier chaque DUT |
| Contrôles démarrer/arrêter | Un bouton pour démarrer, un pour interrompre |
| Affichage pass/fail | Grand indicateur coloré visible à distance |
| Progression des phases | Montre quelle étape est en cours et combien il en reste |
| Invites opérateur | Demande des actions manuelles (retourner la carte, connecter un câble, contrôle visuel) |
| Champs de saisie | Capture les observations de l'opérateur (liste déroulante, case à cocher, texte, numérique) |
| Affichage des mesures | Montre les lectures en temps réel pendant le test |
| Messages d'erreur | Instructions claires quand quelque chose ne va pas |
| Historique des tests | Les 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é | TestStand | OpenTAP | OpenHTF + TofuPilot | HardPy |
|---|---|---|---|---|
| Saisie du numéro de série | Oui | Oui | Oui | Oui |
| Affichage pass/fail | Oui | Oui | Oui (streaming) | Oui |
| Invites opérateur | Oui | Limité | Oui (15+ types de saisie) | Oui (dialogues) |
| Saisies basées sur image | Non | Non | Oui | Non |
| Streaming en temps réel | Oui | Limité | Oui (MQTT) | Oui |
| Gestion des rôles | Oui | Non | Oui | Non |
| Basé sur le web | Non (bureau) | Non (bureau) | Oui | Oui |
| Mode kiosque | Configuration manuelle | Non | Oui | Non |
| Coût | 3-5 K$/poste | Gratuit (cœur) | Gratuit (offre Lab) | Gratuit |
| Plateforme | Windows | Windows/Linux | Tout navigateur | Tout 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.
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.
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ètre | Recommandation |
|---|---|
| Navigateur | Chrome ou Edge en mode kiosque (plein écran, pas de barre d'adresse) |
| Écran | Grand moniteur ou écran tactile à la station de test |
| Saisie | Lecteur de code-barres configuré comme saisie clavier |
| Taille de police | Zoom navigateur à 125-150 % pour la lisibilité à bout de bras |
| Démarrage automatique | Lancer 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
| Situation | Recommandation |
|---|---|
| Utilise déjà TestStand | Utiliser l'interface opérateur intégrée sauf si vous migrez |
| Tests en Python, besoin d'une interface rapide | OpenHTF + streaming TofuPilot (pas de code frontend à écrire) |
| Tests basés sur pytest | HardPy 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 maintenant | Station Server OpenHTF sur localhost:12000 |