Comparez le test in-circuit (ICT), le test fonctionnel (FCT) et la sonde volante pour la fabrication de PCBA, avec analyse des coûts, compromis de.
JJulien Buteau
intermediate10 min de lecture14 mars 2026
Trois méthodes de test dominent la fabrication de PCBA : le test in-circuit (ICT), le test fonctionnel (FCT) et la sonde volante. Chacune détecte des défauts différents à des coûts différents. La plupart des lignes de production en utilisent deux ou trois en combinaison. Ce guide les compare pour vous aider à choisir la bonne stratégie de test pour votre produit.
L'ICT presse une fixation à lit de clous contre la carte et teste chaque composant individuellement. Il vérifie que les bons composants sont aux bons endroits avec les bonnes valeurs.
Ce que détecte l'ICT
Défaut
Méthode de détection
Mauvaise valeur de résistance
Mesure de résistance
Composant manquant
Détection de circuit ouvert
Court-circuit de soudure
Détection de court-circuit
Mauvaise polarité (condensateur, diode)
Test de capacité/diode
Broches de CI ouvertes
Boundary scan (JTAG)
Problèmes de connexion BGA
Limité (uniquement les broches accessibles)
Coûts de l'ICT
Élément
Coût typique
Fixation (lit de clous)
5 000-50 000 $ selon la complexité de la carte
Délai de la fixation
4-8 semaines
Machine ICT
50 000-500 000 $ (capital)
Temps de test par carte
5-30 secondes
Développement du programme
2 000-10 000 $
Quand utiliser l'ICT
Haut volume (10K+ cartes/an). Le coût de la fixation s'amortit sur le volume.
Cartes complexes avec beaucoup de passifs. L'ICT excelle dans la vérification des valeurs de résistances/condensateurs.
Assemblage CMS avec taux de défauts connus. L'ICT détecte les défauts d'assemblage avant le FCT.
Quand vous avez besoin d'un temps de test rapide. 5-30 secondes vs minutes pour le FCT.
Quand éviter l'ICT
Faible volume (< 5K/an). Le coût de la fixation ne justifie pas le volume.
Cartes simples (< 50 composants). Le FCT seul détecte la plupart des défauts.
Itération de conception rapide. La fixation change à chaque révision de carte.
Conceptions avec beaucoup de BGA. L'ICT ne peut pas accéder aux pads BGA sans boundary scan.
Test fonctionnel (FCT)
Le FCT teste la carte en tant que système fonctionnel. Vous la mettez sous tension, exécutez le firmware et vérifiez le comportement. Le FCT détecte des défauts que l'ICT manque : bugs firmware, problèmes de timing, performances analogiques et interactions au niveau système.
Ce que détecte le FCT
Défaut
Méthode de détection
Défaillance du régulateur de tension
Mesure des rails d'alimentation
Mauvais firmware
Requête de version
Échec de communication
Vérification de réponse UART/SPI/I2C
Consommation de courant excessive (court-circuit)
Mesure de courant
Mauvaise fréquence de quartz
Mesure de fréquence
Dérive de calibration ADC/DAC
Mesure analogique
Autotest échoué
Commande d'autotest firmware
Coûts du FCT
Élément
Coût typique
Fixation de test (pogo pins + connecteurs)
1 000-10 000 $
Délai de la fixation
1-2 semaines
Instruments (DMM, alimentation, etc.)
2 000-20 000 $ (unique, réutilisable)
Temps de test par carte
30 secondes - 5 minutes
Développement du script
Python + OpenHTF (outils gratuits)
Quand utiliser le FCT
Chaque carte de production devrait avoir un FCT. C'est la vérification finale avant l'expédition.
Tout volume. Le faible coût de fixation le rend viable même pour 100 unités/an.
Après l'ICT. Le FCT vérifie le comportement système que l'ICT ne peut pas tester.
Comme seul test pour les cartes simples. Si la carte a < 50 composants, le FCT seul peut suffire.
FCT avec Python et TofuPilot
ict_vs_fct/fct_example.py
import openhtf as htf
from openhtf.plugs import BasePlug
from openhtf.util import units
from tofupilot.openhtf import TofuPilot
class BoardPlug(BasePlug):
"""Interface carte pour le FCT."""
def setUp(self):
self._voltages = iter([3.31, 5.01, 1.81])
self._current = 0.12
def read_voltage(self) -> float:
return next(self._voltages)
def read_current(self) -> float:
return self._current
def query_firmware(self) -> str:
return "2.1.0"
def tearDown(self):
pass
@htf.measures(
htf.Measurement("rail_3v3").in_range(3.2, 3.4).with_units(units.VOLT),
htf.Measurement("rail_5v0").in_range(4.8, 5.2).with_units(units.VOLT),
htf.Measurement("rail_1v8").in_range(1.7, 1.9).with_units(units.VOLT),
)
@htf.plug(board=BoardPlug)
def test_power(test, board):
test.measurements.rail_3v3 = board.read_voltage()
test.measurements.rail_5v0 = board.read_voltage()
test.measurements.rail_1v8 = board.read_voltage()
@htf.measures(
htf.Measurement("firmware_version").equals("2.1.0"),
htf.Measurement("idle_current").in_range(0.05, 0.20).with_units(units.AMPERE),
)
@htf.plug(board=BoardPlug)
def test_system(test, board):
test.measurements.firmware_version = board.query_firmware()
test.measurements.idle_current = board.read_current()
def main():
test = htf.Test(
test_power,
test_system,
procedure_id="FCT-001",
part_number="PCBA-100",
)
with TofuPilot(test):
test.execute(test_start=lambda: input("Scanner le numéro de série : "))
Chaque mesure est envoyée à TofuPilot avec les limites, les unités et le statut réussite/échec. Vous obtenez automatiquement le FPY, le Cpk et le Pareto des défaillances.
Sonde volante
Les machines à sonde volante utilisent des sondes motorisées qui se déplacent vers chaque point de test. Aucune fixation nécessaire. La machine se programme à partir de vos fichiers Gerber et de la liste de nets.
Ce que détecte la sonde volante
Les mêmes défauts que l'ICT : courts-circuits, circuits ouverts, mauvaises valeurs, composants manquants. Certaines machines ajoutent :
Mesure de capacité
Mesure d'inductance
Intégration boundary scan (JTAG)
Tests fonctionnels basiques (limités)
Coûts de la sonde volante
Élément
Coût typique
Fixation
0 $ (sans fixation)
Temps de mise en route
Heures (à partir des Gerber + liste de nets)
Machine
100 000-500 000 $ (capital)
Temps de test par carte
1-10 minutes (selon les points de test)
Coût par carte chez le CM
5-50 $ selon la complexité du programme
Quand utiliser la sonde volante
Prototypes et premiers articles. Zéro coût de fixation, mise en route rapide.
Faible volume (< 5K/an). Moins cher que les fixations ICT.
Itération de conception. Pas de fixation à modifier quand la carte change.
BGA complexes. Certaines machines à sonde volante peuvent tester les pads BGA via boundary scan.
Quand éviter la sonde volante
Haut volume. Trop lent (1-10 minutes vs 5-30 secondes pour l'ICT).
Quand vous avez besoin du FCT de toute façon. La sonde volante ne remplace pas le FCT pour les tests au niveau système.
Contraintes budgétaires chez le CM. Certains sous-traitants facturent un supplément pour le temps de sonde volante.
Stratégie de test par volume
Volume (unités/an)
Stratégie recommandée
Pourquoi
1-100 (prototype)
FCT uniquement
Faible volume, fixation simple, détecte la plupart des défauts
100-1 000
Sonde volante + FCT
La sonde volante détecte les défauts d'assemblage, le FCT les problèmes système
1 000-10 000
Sonde volante ou ICT + FCT
Évaluer le ROI de la fixation ICT en haut de la fourchette
10 000-100 000
ICT + FCT
La fixation ICT est rentabilisée, temps de test rapide
100 000+
AOI + ICT + FCT
Couverture complète, débit maximal
Stratégie de test par complexité de carte
Complexité de carte
Composants
Tests recommandés
Simple (driver LED, carte capteur)
< 50
FCT uniquement
Moyenne (carte MCU, dispositif IoT)
50-200
Sonde volante + FCT
Complexe (multi-rail, signal mixte)
200-500
ICT + FCT
Très complexe (RF, numérique haute vitesse)
500+
AOI + ICT + FCT + spécialisé
Comparaison de couverture
Type de défaut
AOI
ICT
Sonde volante
FCT
Composant manquant
Oui
Oui
Oui
Parfois
Mauvaise valeur
Non
Oui
Oui
Parfois
Court-circuit de soudure
Oui
Oui
Oui
Parfois
Joint de soudure froid
Oui
Non
Non
Parfois
Pierre tombale
Oui
Non
Non
Non
Mauvaise polarité
Non
Oui
Oui
Parfois
Bug firmware
Non
Non
Non
Oui
Problème de rail d'alimentation
Non
Non
Non
Oui
Échec de communication
Non
Non
Non
Oui
Dégradation des performances
Non
Non
Non
Oui
Aucune méthode de test unique ne détecte tout. La combinaison de l'ICT (ou sonde volante) pour les défauts d'assemblage et du FCT pour les défauts système vous offre la meilleure couverture.