Comment rédiger un plan de test matériel avec TofuPilot
Un plan de test matériel définit ce qui est testé, à quelle étape, avec quel équipement et selon quels critères. Sans plan, la couverture de test dépend de la dernière personne qui a écrit un script. Ce guide explique comment structurer un plan de test de l'EVT à la production et l'implémenter en Python avec TofuPilot.
Ce que couvre un plan de test
| Section | Contenu |
|---|---|
| Vue d'ensemble du produit | Ce que fait le produit, spécifications clés |
| Étapes de test | Quels tests sont exécutés à l'EVT, DVT, PVT, production |
| Procédures de test | Instructions pas à pas pour chaque test |
| Liste d'équipements | Instruments, bancs de test, logiciels |
| Critères de réussite/échec | Limites de mesure par test |
| Exigences de données | Ce qui est enregistré, où, durée de conservation |
| Rôles | Qui écrit les tests, qui les exécute, qui examine les résultats |
Le plan de test est un document vivant. Il commence de manière approximative en EVT et se précise à chaque phase de fabrication.
Étape 1 : Mapper les exigences aux étapes de test
Commencez par les exigences produit et décidez quand chacune est vérifiée.
| Exigence | EVT | DVT | PVT | Production |
|---|---|---|---|---|
| Tension de sortie à ±5 % | X | X | X | X |
| Résiste à une chute de 1 m | X | |||
| Fonctionne de -20°C à 60°C | X | X | ||
| Démarrage firmware en moins de 2 s | X | X | X | X |
| Courant de fuite inférieur à 500 uA | X | X | ||
| FPY supérieur à 95 % | X | X |
Toutes les exigences ne nécessitent pas un test à chaque étape. L'EVT se concentre sur les fonctionnalités de base. Le DVT couvre les tests environnementaux et de stress. Le PVT valide le processus de fabrication. Les tests de production sont exécutés sur chaque unité.
Étape 2 : Définir les procédures de test
Chaque procédure de test devient un script OpenHTF. Définissez les mesures et les limites directement dans le code pour que le plan de test et l'implémentation restent synchronisés.
import openhtf as htf
from openhtf.util import units
@htf.measures(
htf.Measurement("output_voltage_V")
.in_range(minimum=4.75, maximum=5.25)
.with_units(units.VOLT),
htf.Measurement("boot_time_ms")
.in_range(maximum=2000)
.with_units(units.MILLISECOND),
htf.Measurement("leakage_current_uA")
.in_range(maximum=500)
.with_units(units.MICROAMPERE),
)
def phase_production_checks(test):
"""Test de production : tension, temps de démarrage, sécurité."""
test.measurements.output_voltage_V = 5.02
test.measurements.boot_time_ms = 1350
test.measurements.leakage_current_uA = 85.0Étape 3 : Spécifier les équipements et bancs de test
Documentez chaque instrument dans le plan de test. Cela évite les problèmes du type « ça marche sur mon poste ».
| Instrument | Modèle | Usage | Calibration |
|---|---|---|---|
| DMM | Keysight 34461A | Tension et courant | Annuelle |
| Alimentation | Rigol DP832 | Alimentation du DUT | Annuelle |
| Banc de test | PCB jig custom v2.1 | Contact par pointes pogo | Vérification par équipe |
| PC | Tout, Python 3.10+ | Exécution des tests | N/A |
Étape 4 : Définir les limites initiales
Commencez avec les limites de la fiche technique ou des spécifications de conception. Resserrez-les après que les données DVT montrent la distribution réelle.
import openhtf as htf
from openhtf.util import units
# EVT : limites larges, découverte du design
evT_voltage = htf.Measurement("voltage_V").in_range(
minimum=4.5, maximum=5.5
).with_units(units.VOLT)
# DVT : resserrées d'après les données EVT
dvt_voltage = htf.Measurement("voltage_V").in_range(
minimum=4.7, maximum=5.3,
marginal_minimum=4.75, marginal_maximum=5.25,
).with_units(units.VOLT)
# Production : limites finales avec marges
prod_voltage = htf.Measurement("voltage_V").in_range(
minimum=4.75, maximum=5.25,
marginal_minimum=4.8, marginal_maximum=5.2,
).with_units(units.VOLT)Étape 5 : Connecter à TofuPilot
Enregistrez chaque exécution de test dans TofuPilot dès le début. Les données EVT alimentent les limites DVT. Les données DVT alimentent les limites de production. Cela ne fonctionne que si les données sont capturées de manière cohérente.
from tofupilot.openhtf import TofuPilot
test = htf.Test(phase_production_checks)
with TofuPilot(test):
test.execute(test_start=lambda: input("Scanner le numéro de série : "))TofuPilot suit les résultats à travers toutes les étapes de test. Ouvrez l'onglet Analytics pour voir les distributions de mesures, les tendances de rendement et les schémas de défaillance. Ces données alimentent le plan de test au fur et à mesure que vous affinez les limites et ajoutez ou supprimez des étapes de test.
Erreurs courantes
| Erreur | Correction |
|---|---|
| Tout tester à chaque étape | Mapper les exigences à des étapes spécifiques |
| Limites issues uniquement de la fiche technique | Affiner d'après les données de production réelles |
| Plan de test dans un fichier Word, code ailleurs | Définir les limites dans le code, les garder synchronisées |
| Pas de suivi de calibration | Enregistrer les informations d'instrument à chaque exécution |
| Ne pas collecter les données EVT | Commencer l'enregistrement dès le premier prototype |
Un plan de test n'est pas un document à rédiger une seule fois. Révisez-le après chaque phase de fabrication et mettez à jour les limites, procédures et équipements en fonction de ce que montrent les données.