PLC Test Harness
TDD pour l'Automatisme Industriel
Définissez des scénarios de test, exécutez-les contre PLCSim Advanced et obtenez des verdicts PASS/FAIL instantanés. Les tests unitaires pour la logique PLC — comme les développeurs logiciels testent leur code.
Les Tests PLC Sont Encore Manuels
Chaque modification de code est un pari sans tests automatisés
Pas de Tests de Régression
Vous modifiez un bloc fonction et priez pour que rien d'autre ne casse. Sans tests automatisés, chaque changement risque d'introduire des bugs silencieux qui ne se révèlent que sur le terrain.
Vérification Manuelle
Tester signifie forcer manuellement des entrées sur l'automate ou PLCSim, observer les sorties changer et vérifier les valeurs à la main. Fastidieux, sujet aux erreurs et impossible à reproduire systématiquement.
Pas de Documentation de Test
Comment prouver que votre programme fonctionne correctement ? Les procédures de test existent dans des documents Word ou dans la tête d'un ingénieur. Pas de spécifications de test standardisées et exécutables qui voyagent avec le projet.
L'IA Ne Peut Pas Vérifier Son Propre Code
L'IA génère du code PLC, mais comment savoir s'il fonctionne ? Sans tests automatisés, le code généré par l'IA part en production sans vérification. Le Test Harness ferme la boucle.
Comment Fonctionne le PLC Test Harness
Un framework de test structuré pour la logique PLC, accessible via MCP, Copilot et API REST
Définir des Scénarios de Test
Chaque test est une séquence d'étapes : écrire les entrées, attendre que l'automate réagisse, puis vérifier que les sorties correspondent aux attentes. Les tests sont stockés en fichiers .test.json à côté du projet TIA Portal.
4 Types d'Assertions
Correspondance exacte pour booléens et entiers. Tolérance pour les valeurs flottantes (±0.1). Plage pour les vérifications min/max. Différent-de pour vérifier qu'une valeur a changé. Couvre tous les types de données PLC.
Setup & Teardown
Chaque test commence par une phase de setup (initialiser les tags à un état connu) et se termine par un teardown (remise à zéro des tags), même si le test échoue. État propre garanti.
Exécuter Un ou Tous
Exécutez un seul test par nom, passez-en un en ligne, ou utilisez le joker (*) pour lancer toute la suite de tests. Les résultats sont stockés dans last-results.json.
Traçabilité Complète
Chaque exécution produit un rapport détaillé : quelles étapes ont réussi, lesquelles ont échoué, valeurs attendues vs réelles, et horodatages. Exportez ou consultez les résultats à tout moment.
Cycle TDD Piloté par IA
Un LLM connecté peut écrire du code, créer des tests, compiler, télécharger dans PLCSim, exécuter les tests et corriger les erreurs — en totale autonomie. Red → Green → Refactor, pour l'automate.
Le Cycle TDD pour Automate
De la définition du test à la logique PLC validée
1. Écrire le Test
Définissez le comportement attendu : quand Start_Button est appuyé, Motor_Running doit être true sous 500ms. Créez le test avec plc_test_create.
2. Exécuter Contre PLCSim
Lancez le test avec plc_test_run. T-IA Connect écrit les entrées dans PLCSim, attend le délai spécifié, puis lit et vérifie les sorties. Verdict : PASS ou FAIL.
3. Corriger et Itérer
Si une étape échoue, vous voyez exactement ce qui a foiré : attendu Motor_Running = true, obtenu false. Corrigez le programme, recompilez, téléchargez et relancez le test.
4. Construire la Suite de Tests
Accumulez les tests au fil du développement. Lancez la suite complète après chaque changement pour détecter les régressions. Les tests voyagent avec le projet dans .tia-connect/tests/.
Types d'Assertions en Détail
Couvrir chaque type de donnée PLC avec la bonne comparaison
Correspondance Exacte
Pour les booléens et entiers. Motor_Running doit être exactement true. Counter doit être exactement 5. Aucune marge d'erreur.
Tolérance (±)
Pour les valeurs REAL et LREAL. Speed doit être 50.0 ± 0.1. Prend en compte la précision flottante et le bruit des mesures analogiques.
Plage (min/max)
La valeur doit se situer dans une plage définie. Temperature entre 10.0 et 100.0. Parfait pour les entrées analogiques et les valeurs process.
Différent De
Vérifier qu'une valeur a changé par rapport à son état initial. Counter ne doit pas être égal à 0 — confirmant que la logique de comptage s'est bien exécutée.
5 Outils sur 3 Canaux
Disponibles via MCP, Copilot (assistant intégré) et API REST
plc_test_create
Sauvegarder une définition de test avec setup, étapes (entrées → délai → assertions) et teardown. Stocké en fichier .test.json dans .tia-connect/tests/.
plc_test_run
Exécuter un test par nom, en passer un en ligne, ou utiliser * pour tout lancer. Asynchrone via REST (retourne un jobId). Résultats dans last-results.json.
plc_test_list
Lister tous les tests sauvegardés avec leurs noms et descriptions. Vue d'ensemble rapide de la couverture de test du projet.
plc_test_delete
Supprimer un test par nom. Nettoyez les tests obsolètes au fil de l'évolution du projet.
plc_test_get_results
Récupérer les derniers résultats : statut PASS/FAIL par étape, valeurs attendues vs réelles, temps d'exécution et verdict global.
Questions Fréquentes
Cela nécessite-t-il PLCSim Advanced ?
Oui. Le Test Harness écrit les entrées et lit les sorties via l'interface de simulation de PLCSim Advanced. Il ne fonctionne pas avec des automates réels (ce serait dangereux pour des tests automatisés). PLCSim Advanced fournit un environnement sûr et reproductible.
Une IA peut-elle créer et exécuter des tests de façon autonome ?
Tout à fait. Un LLM connecté (via MCP ou Copilot) peut écrire du code PLC, créer un test avec plc_test_create, compiler et télécharger dans PLCSim, exécuter le test, vérifier les résultats et corriger le code si nécessaire. Cycle TDD complet sans intervention humaine.
Où sont stockés les tests ?
Dans le dossier .tia-connect/tests/ à côté de votre projet TIA Portal. Chaque test est un fichier .test.json. Les résultats sont dans last-results.json. Les tests voyagent avec le projet — archivez le projet, archivez les tests.
Combien de temps dure l'exécution d'un test ?
Cela dépend des délais définis dans vos étapes de test (le temps laissé à l'automate pour réagir). Un test typique avec 3-5 étapes et des délais de 200-500ms s'exécute en 1-3 secondes. Une suite complète de 20 tests prend généralement moins d'une minute.