Getting Started

Invites opérateur pour tests matériels

Les invites opérateur mettent en pause les tests automatisés pour des étapes manuelles. Apprenez à ajouter des invites avec saisie de texte, choix et.

JJulien Buteau
beginner7 min de lecture14 mars 2026

Comment ajouter des invites opérateur aux tests matériels

De nombreux tests de fabrication mélangent des mesures automatisées avec des étapes manuelles. L'opérateur doit charger un DUT, actionner un interrupteur, effectuer une inspection visuelle ou saisir une valeur. OpenHTF gère cela via des invites opérateur qui mettent le test en pause, affichent un message et collectent éventuellement une saisie. Ce guide explique comment ajouter des invites à vos tests et les afficher via l'interface opérateur TofuPilot.

Quand utiliser les invites

SituationExemple
Chargement du DUT« Placez la carte dans le montage et fermez le clamp »
Inspection visuelle« Vérifiez l'absence de ponts de soudure sur le connecteur J1 »
Mesure manuelle« Lisez l'étiquette et saisissez le code de lot »
Action physique« Appuyez sur le bouton reset du DUT »
Décision go/no-go« La LED s'allume-t-elle en vert ? »
Vérification de sécurité« Vérifiez que le capot de sécurité est fermé »

Les invites maintiennent l'opérateur dans le flux du test. Il voit l'instruction dans la même interface qui affiche les mesures et les résultats réussite/échec.

Prérequis

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

Étape 1 : Ajouter une invite simple

L'invite la plus simple affiche un message et attend que l'opérateur le confirme.

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


@htf.plug(prompts=user_input.UserInput)
def phase_load_dut(test, prompts):
    """Attendre que l'opérateur charge le DUT."""
    prompts.prompt(
        "Placez la carte dans le montage de test. "
        "Fermez le clamp et appuyez sur Entrée."
    )

Le test se met en pause à cette phase jusqu'à ce que l'opérateur réponde. Dans l'interface opérateur de TofuPilot, l'invite apparaît sous forme de carte avec le message et un bouton de confirmation.

Étape 2 : Collecter une saisie texte

Ajoutez text_input=True pour collecter une valeur auprès de l'opérateur. La chaîne retournée peut être stockée comme mesure.

prompted_test.py
@htf.plug(prompts=user_input.UserInput)
@htf.measures(
    htf.Measurement("lot_code").with_args(docstring="Code de lot saisi par l'opérateur"),
)
def phase_enter_lot_code(test, prompts):
    """Demander à l'opérateur de scanner ou saisir le code de lot."""
    lot = prompts.prompt(
        "Scannez le code-barres du code de lot sur l'emballage.",
        text_input=True,
    )
    test.measurements.lot_code = lot

Étape 3 : Utiliser les invites pour l'inspection visuelle

Combinez une invite avec une mesure pour enregistrer le résultat de l'inspection par l'opérateur.

prompted_test.py
@htf.plug(prompts=user_input.UserInput)
@htf.measures(
    htf.Measurement("visual_result").equals("PASS"),
)
def phase_visual_inspection(test, prompts):
    """L'opérateur vérifie les défauts cosmétiques."""
    result = prompts.prompt(
        "Inspectez la carte sous grossissement. "
        "Tapez PASS si aucun défaut trouvé, ou FAIL si des défauts sont présents.",
        text_input=True,
    )
    test.measurements.visual_result = result.strip().upper()

Étape 4 : Ajouter des invites entre les phases automatisées

Mélangez des phases avec invites et des phases automatisées dans le même test. L'opérateur voit un flux continu : les mesures automatisées s'exécutent, puis une invite apparaît, puis d'autres mesures automatisées.

prompted_test.py
from openhtf.util import units


@htf.measures(
    htf.Measurement("supply_voltage_V")
    .in_range(minimum=4.9, maximum=5.1)
    .with_units(units.VOLT),
)
def phase_power_check(test):
    """Automatisé : mesure de la tension d'alimentation."""
    test.measurements.supply_voltage_V = 5.01


@htf.plug(prompts=user_input.UserInput)
def phase_flip_board(test, prompts):
    """Demander à l'opérateur de retourner la carte pour le test face inférieure."""
    prompts.prompt(
        "Retournez la carte de sorte que la face inférieure soit vers le haut. "
        "Appuyez sur Entrée quand vous êtes prêt."
    )


@htf.measures(
    htf.Measurement("bottom_connector_resistance_mOhm")
    .in_range(maximum=100)
    .with_units(units.OHM),
)
def phase_bottom_test(test):
    """Automatisé : mesure de la résistance du connecteur face inférieure."""
    test.measurements.bottom_connector_resistance_mOhm = 38.5

Étape 5 : Connecter à TofuPilot

Assemblez toutes les phases. Les phases avec invites sont rendues automatiquement dans l'interface opérateur TofuPilot. Aucune configuration supplémentaire n'est nécessaire.

prompted_test.py
from tofupilot.openhtf import TofuPilot

test = htf.Test(
    phase_load_dut,
    phase_enter_lot_code,
    phase_power_check,
    phase_visual_inspection,
    phase_flip_board,
    phase_bottom_test,
)

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

Bonnes pratiques

PratiquePourquoi
Gardez le texte de l'invite court (1-2 phrases)Les opérateurs lisent en diagonale, ils ne lisent pas des paragraphes
Utilisez des verbes à l'impératif (« Placez », « Appuyez », « Scannez »)Des instructions claires réduisent les erreurs
Une action par inviteNe demandez pas à l'opérateur de faire trois choses à la fois
Validez la saisie opérateurUtilisez .equals() ou .matches_regex() sur la mesure
Placez les invites aux pauses naturellesEntre les séquences automatisées, pas au milieu d'une mesure
Évitez les invites inutilesChaque invite ajoute du temps de cycle. Automatisez ce que vous pouvez.

Plus de guides

Mettez ce guide en pratique