Qu'est-ce que le test adaptatif en production
Le test adaptatif ajuste la séquence de test en temps réel en fonction des données issues des étapes précédentes, des résultats historiques ou des conditions du processus. Au lieu de faire passer chaque unité par tous les tests, le test adaptatif décide quels tests exécuter, lesquels ignorer et quelles limites appliquer en fonction de ce que disent les données. Ce guide explique comment fonctionne le test adaptatif, les différents niveaux d'adaptation et les cas où il apporte le plus de valeur.
Test statique vs test adaptatif
| Aspect | Test statique | Test adaptatif |
|---|---|---|
| Séquence de test | Identique pour chaque unité | Ajustée par unité en fonction des données |
| Temps de test | Fixe | Variable (plus court pour les unités conformes) |
| Limites | Identiques pour chaque unité | Peuvent être resserrées ou élargies selon le contexte |
| Logique de décision | Passe/échoue par mesure | Passe/échoue plus score de risque |
| Dépendance aux données | Aucune (exécution à l'aveugle) | Nécessite des données historiques et une analyse en ligne |
Dans le test de semi-conducteurs, le test adaptatif est déployé depuis plus d'une décennie. Advantest et Teradyne proposent des plateformes qui sautent des tests en fonction des données wafer en amont, réduisant le temps de test de 10 à 50 %. En fabrication discrète, le concept est plus récent mais les mêmes principes s'appliquent.
Niveaux de test adaptatif
| Niveau | Ce qui s'adapte | Exemple | Complexité |
|---|---|---|---|
| 1. Arrêt rapide | Ordre des tests | Exécuter le test avec le taux d'échec le plus élevé en premier, arrêter dès un échec | Faible |
| 2. Saut si réussite | Couverture des tests | Si la mise sous tension réussit, ignorer le test détaillé des rails de tension | Moyenne |
| 3. Saut basé sur les données | Sélection des tests | Un modèle ML prédit que cette unité va réussir d'après les données amont, ignorer le test | Élevée |
| 4. Limites dynamiques | Critères passe/échoue | Resserrer les limites pour un lot d'un nouveau fournisseur, relâcher pour un lot éprouvé | Élevée |
| 5. Clôture autonome | Terminaison du test | L'IA détermine que suffisamment de tests ont été effectués pour cette unité | Très élevée |
La plupart des équipes de production opèrent au niveau 1 (ordonnancement par arrêt rapide) sans appeler cela du test adaptatif. Les niveaux 2-3 offrent les plus grandes réductions de temps de cycle. Les niveaux 4-5 sont des capacités émergentes.
Où le test adaptatif apporte de la valeur
| Scénario | Temps de test statique | Temps de test adaptatif | Gain |
|---|---|---|---|
| Produit à haut rendement (98 % FPY) | 60 secondes | 45 secondes (ignorer les vérifications redondantes sur les unités conformes) | 25 % |
| Produit multi-variantes | 90 secondes (tous les tests) | 50-70 secondes (tester uniquement les étapes spécifiques à la variante) | 22-44 % |
| Produit mature, processus stable | 60 secondes | 30 secondes (ignorer les tests avec un taux d'échec historique de 0 %) | 50 % |
| Nouveau produit, processus instable | 60 secondes | 60 secondes (ne rien ignorer, les données sont nécessaires) | 0 % |
Le test adaptatif apporte le plus de valeur lorsque le rendement est élevé et le produit est mature. Lorsque vous êtes encore en phase d'apprentissage, exécutez tout et collectez les données.
Prérequis
- Python 3.10+
- OpenHTF installé (
pip install openhtf) - SDK Python TofuPilot installé (
pip install tofupilot)
Étape 1 : Implémenter l'ordonnancement par arrêt rapide
La forme la plus simple de test adaptatif : placer les phases qui échouent le plus souvent en premier. Lorsqu'une unité échoue tôt, ignorer les phases restantes.
import openhtf as htf
from openhtf.util import units
from openhtf import PhaseResult
@htf.measures(
htf.Measurement("power_good").equals("PASS"),
)
def phase_power_check(test):
"""Test avec le taux d'échec le plus élevé. Exécuter en premier, arrêter en cas d'échec."""
result = "PASS"
test.measurements.power_good = result
if result != "PASS":
return PhaseResult.STOP
@htf.measures(
htf.Measurement("firmware_version").equals("3.1.0"),
)
def phase_firmware(test):
"""Deuxième taux d'échec le plus élevé. Exécuter ensuite."""
test.measurements.firmware_version = "3.1.0"
@htf.measures(
htf.Measurement("output_voltage_V")
.in_range(minimum=4.9, maximum=5.1)
.with_units(units.VOLT),
)
def phase_output(test):
"""Échoue rarement. Exécuter en dernier."""
test.measurements.output_voltage_V = 5.01Étape 2 : Ignorer les tests redondants
Si une phase de test a eu un taux d'échec de 0 % sur les 10 000 dernières unités, envisagez de la retirer de la séquence. Utilisez le Pareto des défaillances de TofuPilot pour identifier ces phases.
@htf.measures(
htf.Measurement("communication_check").equals("PASS"),
)
def phase_communication(test):
"""Taux d'échec de 0,01 %. Candidat à l'omission pour les produits matures."""
test.measurements.communication_check = "PASS"La décision d'ignorer un test doit être fondée sur les données. TofuPilot suit les taux d'échec par étape de test. Ouvrez l'onglet Analytique pour voir quelles phases ont des taux d'échec nuls ou quasi nuls sur des milliers d'unités.
Étape 3 : Enregistrer les résultats pour l'apprentissage continu
Le test adaptatif nécessite une collecte de données continue. Même lorsque vous ignorez un test sur la plupart des unités, exécutez la séquence complète sur un échantillon pour valider que les tests ignorés réussissent toujours.
from tofupilot.openhtf import TofuPilot
test = htf.Test(
phase_power_check,
phase_firmware,
phase_output,
phase_communication,
)
with TofuPilot(test):
test.execute(test_start=lambda: input("Scanner le numéro de série : "))Risques et mesures de protection
| Risque | Mesure de protection |
|---|---|
| Ignorer un test qui aurait détecté un défaut | Exécuter la séquence complète sur 5-10 % des unités comme échantillon d'audit |
| Un changement de processus invalide les décisions d'omission | Réévaluer après tout ECO, changement de fournisseur ou modification du processus |
| Sur-optimisation basée sur des données stables | Définir un seuil minimum de couverture de test qui ne peut pas être réduit |
| Exigences réglementaires pour un test à 100 % | Certaines industries (médical, aérospatial) exigent chaque test sur chaque unité |
Le test adaptatif ne consiste pas à tester moins. Il consiste à tester plus intelligemment. L'objectif est de maintenir le même taux de détection de défauts avec moins de temps et de coût.