Compliance & Traceability

Traçabilité complète des unités

Liez chaque résultat de test à un numéro de série spécifique et suivez l'historique de test complet de chaque unité tout au long de son cycle de production.

JJulien Buteau
intermediate7 min de lecture14 mars 2026

La traçabilité des unités consiste à lier chaque résultat de test à un numéro de série spécifique afin de pouvoir reconstituer l'historique complet de n'importe quel appareil. TofuPilot capture cela automatiquement lorsque vous exécutez des tests OpenHTF avec des numéros de série, vous offrant une page d'historique consultable pour chaque DUT.

Pourquoi la traçabilité des unités est importante

Lorsqu'une défaillance terrain survient, vous devez répondre : quels tests cette unité a-t-elle passés, quand, sur quelle station, et avec quelles mesures ? Sans traçabilité, vous fouillez dans des tableurs et des fichiers de logs. Avec elle, vous tapez un numéro de série et obtenez la vue complète.

Les référentiels réglementaires comme l'ISO 13485, l'AS9100 et l'IPC-1782 exigent tous de lier les enregistrements de test aux unités individuelles. TofuPilot stocke cette correspondance automatiquement.

Capturer les numéros de série dans OpenHTF

OpenHTF utilise un déclencheur test_start pour capturer le numéro de série du DUT avant l'exécution de toute phase de test. L'approche la plus simple invite l'opérateur à scanner ou saisir le numéro de série.

test_traceability.py
# Test de production avec capture du numéro de série et téléchargement vers TofuPilot
import openhtf as htf
from openhtf.util import units
from tofupilot.openhtf import TofuPilot

@htf.measures(
    htf.Measurement("voltage_output").in_range(minimum=4.8, maximum=5.2).with_units(units.VOLT),
    htf.Measurement("current_draw").in_range(minimum=0.1, maximum=0.5).with_units(units.AMPERE),
)
def power_test(test):
    test.measurements.voltage_output = 5.01
    test.measurements.current_draw = 0.25

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

if __name__ == "__main__":
    main()

Chaque fois que ce test s'exécute, TofuPilot associe les mesures et le résultat réussite/échec au numéro de série scanné. Exécutez le même numéro de série à nouveau et TofuPilot complète son historique.

Saisie programmatique du numéro de série

Sur les lignes automatisées, les numéros de série proviennent de lecteurs de codes-barres ou de systèmes MES plutôt que de la saisie opérateur. Vous pouvez transmettre le numéro de série directement.

test_automated_serial.py
# Saisie automatisée du numéro de série depuis un lecteur de codes-barres
import openhtf as htf
from openhtf.util import units
from tofupilot.openhtf import TofuPilot

@htf.measures(
    htf.Measurement("resistance").in_range(minimum=95, maximum=105).with_units(units.OHM),
)
def resistance_check(test):
    test.measurements.resistance = 100.2

def main():
    # Le numéro de série provient de votre lecteur de codes-barres ou de votre intégration MES
    serial_number = read_barcode_scanner()

    test = htf.Test(resistance_check)
    with TofuPilot(test):
        test.execute(test_start=lambda: serial_number)

if __name__ == "__main__":
    main()

Ajouter des métadonnées à l'unité

Vous pouvez attacher des métadonnées aux exécutions de test pour une meilleure organisation de l'historique de l'unité par étape de production.

test_with_metadata.py
# Étiqueter les exécutions avec l'étape de production pour un historique d'unité plus clair
import openhtf as htf
from tofupilot.openhtf import TofuPilot

@htf.measures(
    htf.Measurement("firmware_version"),
    htf.Measurement("boot_time").in_range(maximum=5.0),
)
def firmware_check(test):
    test.measurements.firmware_version = "2.1.0"
    test.measurements.boot_time = 1.8

def main():
    test = htf.Test(firmware_check)
    with TofuPilot(test):
        test.execute(test_start=lambda: "SN-20260312-001")

if __name__ == "__main__":
    main()

Historique multi-étapes de l'unité

La production réelle implique plusieurs étapes de test : ICT, test fonctionnel, déverminage, contrôle qualité final. Chaque étape s'exécute comme un test OpenHTF distinct avec le même numéro de série. TofuPilot les assemble.

test_multi_stage.py
# Chaque étape de production est téléchargée vers TofuPilot avec le même numéro de série
import openhtf as htf
from tofupilot.openhtf import TofuPilot

@htf.measures(
    htf.Measurement("ict_shorts").in_range(maximum=0),
)
def ict_test(test):
    test.measurements.ict_shorts = 0

@htf.measures(
    htf.Measurement("functional_pass"),
)
def functional_test(test):
    test.measurements.functional_pass = True

def run_stage(phase, serial):
    test = htf.Test(phase)
    with TofuPilot(test):
        test.execute(test_start=lambda: serial)

def main():
    serial = "SN-20260312-001"
    run_stage(ict_test, serial)
    run_stage(functional_test, serial)

if __name__ == "__main__":
    main()

Ouvrez la page de l'unité dans le tableau de bord de TofuPilot pour voir chaque exécution de test, mesure et résultat réussite/échec pour ce numéro de série dans l'ordre chronologique. Vous pouvez filtrer par procédure, station ou plage de dates.

Consulter l'historique de l'unité dans TofuPilot

Une fois vos tests téléchargés, allez sur la page Unités de TofuPilot et recherchez par numéro de série. La page de détail de l'unité affiche :

  • Chaque exécution de test liée à ce numéro de série, à travers toutes les procédures et stations
  • Les mesures individuelles avec le statut réussite/échec et les limites
  • Les horodatages et identifiants de station pour chaque exécution
  • Les liens vers les sous-assemblages associés (si configurés)

C'est la piste d'audit dont les régulateurs et les ingénieurs qualité ont besoin. Aucun code supplémentaire n'est nécessaire.

Plus de guides

Mettez ce guide en pratique