1. Automatisation des tests de validation
pour le module «Clock Configuration »de
l’outil STM32CubeMX
Présenté par Karama TORKHANI
Projet de fin d’études
Encadré par
M.Chiheb ABID (FST)
M.Nawres GHARBI (STMicroelectronics)
Le 21/07/2016
6. 6STM32CubeMX
Ecosystème
STM32CubeMX est un outil graphique dédié pour
les microcontrôleurs STM32.
STM32CubeMX permet de :
• Sélectionner un microcontrôleur à partir du
portefeuille de tout les STM32.
• Configurer facilement un microcontrôleur (pinout,
clock tree, configuration…) et générer lecode
d'initialisation correspondant.
• Générer des rapports de configuration.
• Etc.
Introduction générale
9. 9
Ecosystème
La validation actuelle de la clock tree est manuelle
• Consommation de ressources
• Humaines
• matérielles
• Monotonie
• Fastidiosité
• Base de donnée très complexe.
• Plusieurs documents: datasheets, référence manuals.
• Quantité importante de données.
• Quantité importante de combinaisons possibles dans les
configurations.
• Plusieurs familles et sous familles de microcontrolleurs
Validation
manuelle
Problématique
Introduction généraleProblématique et solution
10. 10
Ecosystème
La solution est de passer à l’automatisation
Validation
automatique
• Le but du projet sera donc de:
• Mettre en place une suite de tests automatiques pour
valider le module ‘Clock Configuration’.
• Lancer les tests et générer des rapports
automatiques de validation.
• Et donc d’assurer :
• Rapidité
• Couverture
• Précision
• Fiabilité
• Réutilisabilité
• Non Régression
Solution proposée
Introduction généraleProblématique et solution
12. Besoins fonctionnels
• Créer des scénarios de tests pour la validation de la
configuration par défaut.
• Créer des scénarios de tests pour la validation des
contraintes pour chaque objet dans une
configuration donnée.
• Construire une bibliothèque d'objets contenant tout
les éléments graphiques.
• Décomposition d'un test sous forme de tests
élémentaires
• Définir une structure des tables de données servant
à stocker les inputs pour un test bien déterminé.
• Génération d'un rapport à la fin de chaque test
permettant d'afficher les résultats de ce dernier :
Cas de succès et cas d'échéance(Bugs).
12
Ingénieur de
validation
Introduction généraleProblématique et solutionSpécification des besoins
13. 13Besoins fonctionnels
Définir les
inputs du
test
Executer le
test
Interpreter le
rapport de test
Conçevoir le
test
UFT
ingénieur de
validation
Diagramme de cas d’utilisation général :Procédure de test
Introduction généraleProblématique et solutionIntroduction généraleProblématique et solutionSpécification des besoins
14. Efficacité
Adéquation avec les besoins de l’utilisateur
Couverture de tous les scénarios possibles
Détection des anomalies en cas d’existence
Stabilité et
Simplicité
Pas d’erreurs durant l’exécution
Simple à utiliser
14Besoins non fonctionnels
Modularité
Tests élémentaires pour ne pas impacter
/perturber l’exécution des autres tests
Facile à maintenir
Introduction généraleProblématique et solutionIntroduction généraleProblématique et solutionSpécification des besoins
16. 16
Base de donnée
Excel Datasheet
Ref Manual
DataTable
UFT
STM32CubeMX
Clock
Configuration
Configuration PCCPinout
Repository Outil de
developpement
des tests
Outil de
configuration
des STM32
Tests
Architecture générale de l’application
Diagramme Chart Flow
Introduction généraleProblématique et solutionIntroduction généraleProblématique et solutionSpécificaatique et solutionConception
17. 17
Démarrer test
check_default
Démarrer test
check_constraint
Get_activation_sta
te
get_backgroun
d_
color
Génerer
rapport(Pass)
Démarrer le main
scénario
inactif
actif
Génerer rapport
(Fail)
Bleu
Rouge
Démarrer test
check_data
Extraire les valeurs
réferences
Vérificatio
n invalide
Vérification
valide
Check_limit_su
p()
Check_limit_inf
()
Génerer
rapport(Pass)
Génerer
rapport(Fail)
Génerer
rapport(Fail)
Scénario de test
Vérification
invalide
Vérificati
on valide
Vérificati
on valide
Vérificati
on
invalide
Diagramme d’activité du scénario globale des tests
Diagramme d’activité
Introduction généraleProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionSpécificatatique et solutionConception
18. 18
Clock TreeHP UFT
Ingénieur validation
Saisir le bloc à tester
Bloc saisi
Démarrer le test
Test démarré
Sélectionner
composant du bloc
Composant du bloc
selectionné
Loop
[List des
composant du
bloc n'est pas
terminée]
Diagramme Check_constraint
Excel
Check_limit_sup() Extraire les valeurs
réferencesValeurs
extraites
vérification
Vérification terminée
Génerer rapport ()
check_limit_inf()
Extraire les valeurs
réferences
Valeurs extraites
Vérification terminée
vérificationGénerer le rapport()
alt
Diagramme de séquence du test: conformité aux contraintes
Diagramme de séquence
Introduction généraleProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionSpécificattique et solutionConception
20. Environnement de travail 20
Outil d’automatisation des tests
Outil de création de la base de donnée des tests
Langage de programmation
Outil de configuration des STM32
Introduction généraleProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionSpcificatiatique et solutionConception Réalisation
21. Spécification du test 21
Les tests suivront les conventions du PTS.
• Le PTS est un document interne, il permet de:
• Décrire les plans de test de validation pour chaque produit.
• Détailler les cas de test et les résultats attendus.
• Il détaille les points suivants:
• Identifiant du test.
• Spécification des entrées.
• Spécification des sorties (résultat attendu).
• Environnement de test.
• Procédures spéciales:
• Actions (Liste des actions à faire pour valider la fonctionnalité en question)
Introduction généraleProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionConceptionIntroduction généraleProblématique et solutionSpcificatiatique et solutionConception Réalisation
22. Préparation des données 22
Peripheral freq_max freq_min conditon source_mux background object_type borne_inf borne sup step
PLL_Q 216 na Enabled/disabled PLL_N yes JavaList 2 15 1
PLL_N 432 100 Enabled/disabled PLLM yes JavaList 50 432 1
PLL_P 180 24 Enabled/disabled PLL_N yes JavaList 2 8 2
PLL_I2S_N 432 100 Enabled/disabled PLLM yes JavaList 50 432 1
PLL_I2S_R 216 na Enabled/disabled PLL_I2S_N yes JavaList 2 7 1
PLL_I2S_Q 216 na Enabled/disabled PLL_I2S_N yes JavaList 2 15 1
PLL_SAI_N 432 100 Enabled/disabled PLLM yes JavaList 50 432 1
PLL_SAI_Q 216 na Enabled/disabled PLL_SAI_N yes JavaList 2 15 1
Sous forme Excel les données représenteront les différentes caractéristiques
des objets de l’arbre d’horloge
Introduction généraleProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionConceptionIntroduction généraleProblématique et solutionSpcificatiatique et solutionConception Réalisation
23. Création de la bibliothèque d’objets 23
La bibliothèque est une collection d'objets et de propriétés avec lesquelles
UFT sera en mesure de reconnaître les objets graphiques et agir dessus
• L’identification des éléments de
l’interface à tester peut être non
évidente vu que plusieurs
éléments présentent des
propriétés similaires.
• les relations visuelles
permettront de cerner l’objet à
tester en le référant à d’autres
le distinguer de manière unique.
Introduction généraleIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionConceptionIntroduction généraleProblématique et solutionSpcificatiatique et solutionConception Réalisation
24. Les tests réalisés 24
Parmi les tests réalisés on cite:
• Scénario de test principal
• Cette action fera appel au actions réutilisables.
• Check-default
• Ce test s’assurera des valeurs par défaut.
• Check-data.
• Ce test s’assurera que toutes les valeurs possibles sont présentes.
• Check-constraint
• Calculer tous les chemins possibles.
• Peut tester par bloque.
• Contrôle les sources et les diviseurs.
• Teste les contraintes de fréquence.
Introduction généraleIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionConceptionIntroduction généraleProblématique et solutionSpcificatiatique et solutionConception Réalisation
25. 25Rapport de test
• Nom du test
• Date/temps de lancement et fin
• Temps total
• Résultat: succès ou échec
• Pourcentage de réussite
• Pourcentage d’échec
• Nombre d’échec/succès/avertissements
• Nombre d’itérations
Introduction généraleIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionConceptionIntroduction généraleProblématique et solutionSpcificatiatique et solutionConception Réalisation
27. 27
• Des tests plus rapides en temps d’exécution.
• Détection des bugs plus tôt.
• Des tests plus fiable.
• Des tests plus précis.
• Une meilleure couverture des fonctionnalités.
• Intégration des tests sur la plateforme de validation
automatique.
Conclusion
Introduction généraleIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionConceptionIntroduction généraleProblématique et solutionSpcificatiatique et solutionConceptionRéalisationConclusion et perspecttive
28. 28Perspectives
• Augmenter la couverture du test en:
• Automatisant la validation du code généré pour la Clock
• Automatisant la validation de la fenêtre de configuration des paramètres
électriques de la Clock
Introduction généraleIntroduction généraleProblématique et solutionProblématique et solutionIntroduction généraleProblématique et solutionProblématique et solutionConceptionIntroduction généraleProblématique et solutionSpcificatiatique et solutionConceptionRéalisationConclusion et perspecttive
Bonjours MSR les jurys j ai l’honneur de vous présentés mon projet de fin d’études intitulé Automatisation
STMicroelectronics, qui représente l’organisation d’acceuil , est le 5éme leader mondiale de semi-conducteurs qui fournie a ses clients (Samsung sony siemens ,,) un large éventail d’application électroniques dans les domaines industriels analogiques automobile numérique capteurs sans fils et particulièrement le domaine des microcontrôleurs.
Ce stage a été réalisé dans l’équipe Tools validation l’unique responsable de la validation fonctionnel des microcontrolleurs, cette équipe appartienne a la division des Microcontrôleurs
Cette division est l’une des premiers fournisseurs des microcontrôleur dans le monde grâce a sa famille des microcontrôleur puissant STM32.
La structure interne d'un microcontrôleur comporte typiquement :
Une unité de calcul et de commande
Mémoire ROM
Mémoire RAM
Un contrôleur d’interruption
Un compteur/temporisateur (timer)
Des entrées/sorties parallèles (ports)
Un UART (port série)
Il peut aussi posséder :
Un Watchdog : (surveillance du programme)
Une sortie PWM (modulation d’impulsion)
Un CAN/CNA (Convertisseur analogique numérique)
Un interface I²C, CAN…
Dhabitude Pour pouvoir configurer un microcontrôleur STM32 ; il faut étudier profondement le datasheetet et le manuel de référence associés au microcontrôleur et comprendre le comportement des registres des périphériques à configurer, puis passer à la configuration des périphériques en écrivant manuellement un code c qui contient l’initialisation et la configuration de microcontrôleur.
Et cela n’est pas évident du tout.
D’où, un outil écosystème qui aide au configuration des microcontrôleurs demeure indispensable.
STM32CubMX est l’outil écosystème fournit par STMicroelectronics , pour aider le développeur au choix du microcontroleur STM32 , simplifier et automatiser la configuration et la génération de code C pour l'initialisation du microcontrôleur.
Dhabitude Pour pouvoir configurer un microcontrôleur STM32 ; il faut étudier profondement le datasheetet et le manuel de référence associés au microcontrôleur et comprendre le comportement des registres des périphériques à configurer, puis passer à la configuration des périphériques en écrivant manuellement un code c qui contient l’initialisation et la configuration de microcontrôleur.
Et cela n’est pas évident du tout.
D’où, un outil écosystème qui aide au configuration des microcontrôleurs demeure indispensable.
STM32CubMX est l’outil écosystème fournit par STMicroelectronics , pour aider le développeur au choix du microcontroleur STM32 , simplifier et automatiser la configuration et la génération de code C pour l'initialisation du microcontrôleur.
Dhabitude Pour pouvoir configurer un microcontrôleur STM32 ; il faut étudier profondement le datasheetet et le manuel de référence associés au microcontrôleur et comprendre le comportement des registres des périphériques à configurer, puis passer à la configuration des périphériques en écrivant manuellement un code c qui contient l’initialisation et la configuration de microcontrôleur.
Et cela n’est pas évident du tout.
D’où, un outil écosystème qui aide au configuration des microcontrôleurs demeure indispensable.
STM32CubMX est l’outil écosystème fournit par STMicroelectronics , pour aider le développeur au choix du microcontroleur STM32 , simplifier et automatiser la configuration et la génération de code C pour l'initialisation du microcontrôleur.
Dhabitude Pour pouvoir configurer un microcontrôleur STM32 ; il faut étudier profondement le datasheetet et le manuel de référence associés au microcontrôleur et comprendre le comportement des registres des périphériques à configurer, puis passer à la configuration des périphériques en écrivant manuellement un code c qui contient l’initialisation et la configuration de microcontrôleur.
Et cela n’est pas évident du tout.
D’où, un outil écosystème qui aide au configuration des microcontrôleurs demeure indispensable.
STM32CubMX est l’outil écosystème fournit par STMicroelectronics , pour aider le développeur au choix du microcontroleur STM32 , simplifier et automatiser la configuration et la génération de code C pour l'initialisation du microcontrôleur.
pour assurer la réutilisation des ces derniers à tout moment par n'importe quel autre scénario de tes
On a identifier les acteurs:
Ingénieur de validation : C’est l’acteur principal intervenant dans le jeu du test logiciel. Ce dernier est chargé d’imaginer le scénario du test automatique, d’écrire son script, d’assurer son exécution correcte et enfin d’interpréter le rapport de test généré en fin de chaque exécution.
HP UFT : C’est un acteur non humain secondaire. Il intervient comme étant un outil indispensable pour la réalisation d’un test dès son implémentation, passant par son exécution et arrivant à la génération de son rapport final.
On presente le diagramme de cas d’utilsation generale
L’utilisateur va collecter les données à partir d’une fiche technique d’un microcontrôleur et du manuel de référence, les organiser sous forme d’une table de données (forme Excel) et préparer le fichier de configuration de l’environnement du test (chemins d’accès, variables…) sous forme XML.
Puis
L’ingénieur de validation doit concevoir un test qui couvre tous les cas de tests possibles et qui vérifie les critères de modularité et de réutilisabilité
L’ingénieur de validation n’a qu’à définir l’emplacement de la table de données pour que le test puisse le reconnaître et lancer ce dernier. Le test doit s’exécuter sans erreurs.
Après avoir exécuté le test, l’ingénieur de validation doit examiner les résultats donnés à travers le rapport généré, déterminer les cas d’échéance et lancer un bug pour le corriger par le responsable du développement de l’outil.
Parmi les critères non fonctionnels que doit vérifier un test, on peut citer :
Efficacité : Un test doit être en adéquation avec les besoins de l’utilisateur, couvrir tous les scénarios possibles et surtout détecter les anomalies en cas d’existence.
Modularité : Un test doit être décomposé par des tests élémentaires appelés actions de sorte qu’une réforme au niveau d’une action n’engendre pas la perturbation du fonctionnement des autres actions.
Stabilité : Un test ne doit pas présenter des erreurs d’exécution ou des problèmes de communication avec les tables de données qu’il utilise.
Simplicité : Un test doit être assez simplifié pour faciliter son utilisation et sa maintenance par n’importe quel acteur.
on presente l’architecture generale de lappli.
elle est divisée en 3 parties:
la 1ere partie constitue notre base de donnée sous forme de fiches excel exploré a partir des datasheet et le manuel de reference
La 2ieme partie represente notre outil de dev de test automatiques basé sur la correspondance entre le repo qui est notre bibliothèque
d’objet et la data table généré à partir de l’excel.
La 3ème partie représente l’outil STM32CubeMX qui configure les microcontroleurs. Il intègre 4 modules: ....
En fait Les tests developpes vont concerner le module clock config.
Ce diagramme d’activité est relative au main scénario de tout les tests afin de valider le module clock configuration.
Il englobe 3 tests:
le 1 er test est responsable de la vérification de la config par défaut de la clock tree tout en générant un rapport détaillant
le 2 ème test concerne la vérification des données ....
Le 3ème test est responsable de vérifier la conformité des contraintes mentionées au niveau des datasheet
présente une vision de l’ensemble des actions qui forment la main scénario dont le but est de valider le module clock configuration de l’outil STM32CubeMX. En effet, lors du démarrage, trois tests se déclenche séquentiellement chacun permet de valider une fonctionnalité bien déterminée du module. La première action qui dérive du main scénario conduit à une vérification de la configuration par défaut de la Clock tree tout en générant un rapport détaillant l’état (actif ou inactif) de tout item présent dans la Clock Tree. De plus le rapport signale un cas d’échec ou de succès au cas de respect des contraintes. La deuxième action concerne que les diviseurs présents dans la clock tree. Dans le cas où une valeur d’un tel paramètre n’est pas existante, la configuration en cours s’arrête et le test va signaler un cas d’échec à travers le rapport généré. Ce rapport précise la valeur manquante du paramètre en question et les valeurs des paramètres configurées avec succès dans ce cas de test. La troisième action permet de vérifier si la configuration respecte les contraintes spécifiques à chaque périphérique. Enfin, le rapport de test va lister en détail pour chaque action, les scénarios de test pour lesquels la configuration est erronée et les scénarios qui ont passé avec succès.
Ce diagramme montre les détails de la validation du critère de la conformité aux contraintes. Contrairement au test qui valide la configuration par défaut, ce test valide la clock tree par bloc. Donc l’utilisateur saisie le bloc qu’on désire tester, l’UFT sélectionne un composant du bloc sur lequel il exécute deux tests. Dans les deux cas si le composant déborde de la valeur limite extraite sans que le composant se colore en rouge un rapport est généré signalant la non-conformité avec les contraintes mentionnées au niveau de la fiche technique du microcontrôleur contenant le périphérique en question. Si le composant se colore en rouge lors de débordement des limites un rapport de succès de test est aussi généré.
HP Unified Functional Testing(UFT) est l’outil qu’on va utiliser dans la création et l’automatisation des tests. Cet outil est destiné aux tests fonctionnels ou de régression des applications logicielles et particulièrement au niveau de leurs interfaces graphiques. Il facilite la détection des anomalies au niveau de ces applications.