Tests de bote blanche Pierre Langlois http creativecommons
Tests de boîte blanche Pierre Langlois http: //creativecommons. org/licenses/by-nc-sa/2. 5/ca/ INF 3500 : Conception et implémentation de systèmes numériques
Tests de boîte blanche Sujets de ce thème • • Définitions La couverture de code La couverture de paramètres d’opération La couverture fonctionnelle INF 3500 : Conception et implémentation de systèmes numériques 2
Tests de boîte blanche (ou tests structurels) • Le terme « test de boîte blanche » fait référence à un test qui nécessite de connaître le fonctionnement interne du système. • En anglais: white box, glass box, clear box, structural test. • En s’appuyant sur des principes de couverture, on peut calculer des métriques permettant de déterminer à quel point le test a stimulé le système. • Les tests de boîte blanche ne permettent pas en général de découvrir les fonctionnalités manquantes du système. INF 3500 : Conception et implémentation de systèmes numériques 3
Couverture de code • Dans la couverture de code, on choisit des vecteurs de test pour exercer un élément particulier du design ou de sa description. • Il y en a plusieurs : – Couverture d’énoncés : pourcentage des énoncés du code exécutés. – Couverture de blocs : pourcentage de blocs d’énoncés délimités par des structures de contrôle qui ont été exécutés. Cette métrique a l’avantage d’être plus représentative que la couverture d’énoncés, parce que les blocs comportant plusieurs énoncés n’ont pas un poids plus important que les autres. INF 3500 : Conception et implémentation de systèmes numériques – Couverture de branchements : pourcentage des choix de branchement exécutés. – Couverture d’expressions : pourcentage des composantes des expressions booléennes qui ont affecté la valeur de ces expressions. – Couverture d’états : pourcentage du nombre d’états visités. – Couverture de transitions : pourcentage des transitions de chaque état ayant été prises. – Couverture de changements de signaux : pourcentage de signaux binaires ayant passé de 0 à 1 et de 1 à 0. 4
Couverture de code • Pour chacune des couvertures possibles, on peut calculer une métrique qui exprime: – le nombre de fois où chaque situation se produit; ou, – le pourcentage des situations qui se sont produites. • Par exemple, on voudrait atteindre 100% de couverture des énoncés. Si on n’est qu’à 90%, cela signifie qu’il faut stimuler le circuit avec d’autres vecteurs de test. • Le code doit être instrumenté pour obtenir les métriques (par un outil). INF 3500 : Conception et implémentation de systèmes numériques • Un outil peut présenter l’information obtenue de façon conviviale pour faciliter la sélection de vecteurs de test. • Les différents éléments de couverture ne sont pas tous indépendants. Par exemple, la couverture d’états et la couverture de transitions sont effectivement des sous-ensembles de la couverture d’énoncés et de branchements. 5
Couverture de code Exemple library ieee; use ieee. std_logic_1164. all; use ieee. numeric_std. all; entity conv. RGB 2 CMYK is port ( rouge, vert, bleu : in unsigned(7 downto 0); cyan, magenta, jaune, noir : out unsigned(7 downto 0) ); end conv. RGB 2 CMYK; architecture arch 2 of conv. RGB 2 CMYK is begin process(rouge, vert, bleu) variable cyant, magentat, jaunet, noirt 1, noirt 2 : unsigned(7 downto 0) : = (others => '0'); variable c_ppe_m, m_ppe_j, j_ppe_c : std_logic; begin cyant : = 255 - rouge; magentat : = 255 - vert; jaunet : = 255 - bleu; if cyant < magentat then noirt 1 : = cyant; else noirt 1 : = magentat; end if; if noirt 1 < jaunet then noirt 2 : = noirt 1; else noirt 2 : = jaunet; end if; cyan <= cyant - noirt 2; magenta <= magentat - noirt 2; jaune <= jaunet - noirt 2; noir <= noirt 2; end process; A. Stodghill, Tip o’day: ask for a a refill, Green Options, 2007/06/18. Consulté le 4 septembre 2009, tiré de http: //greenoptions. com/tag/ink-cartridge INF 3500 : Conception et implémentation de systèmes numériques end arch 2; 6
Couverture de code Exemple • Avec les vecteurs de test: (0, 0, 0), (255, 255) INF 3500 : Conception et implémentation de systèmes numériques 7
Couverture de code Exemple • Avec les vecteurs de test: (0, 0, 0), (255, 255), (1, 1, 1), (100, 100) INF 3500 : Conception et implémentation de systèmes numériques 8
Couverture de code Exemple • Avec les vecteurs de test: (0, 0, 0), (255, 255), (20, 50, 0) INF 3500 : Conception et implémentation de systèmes numériques 9
Couverture de code Exemple • Avec les vecteurs de test: (0, 0, 0), (255, 255), (20, 50, 0), (50, 20, 0) INF 3500 : Conception et implémentation de systèmes numériques 10
Création de vecteurs de test selon la couverture de code • Les métriques de couverture de complètent les autres types de tests et donnent une certaine assurance au concepteur que le circuit est bien vérifié. • Un bon ensemble de vecteurs de tests produit une couverture de code de 100%. • Une couverture de code de 100% n’implique pas que l’ensemble de vecteurs de tests soit bon! • Une couverture de 100% pour un ensemble de vecteurs de test ne garantit pas que le circuit rencontre toutes spécifications. INF 3500 : Conception et implémentation de systèmes numériques • Il peut y avoir des exceptions, comme par exemple: – des énoncés qui sont en place pour protéger le système lors d’entrées non valides – des énoncés pour ramener le système dans un état valide à partir d’un état non valide Ces deux cas nécessitent des vecteurs de test spéciaux. 11
Couverture de paramètres d’opération • La couverture de code n’indique si certaines situations ont été exercées ou non, sans égard à la fonctionnalité du système. • Un test plus puissant consiste à identifier les paramètres d’opération du système et à vérifier la couverture des valeurs possibles de ceux-ci. • Par exemple, pour une file d’attente, un paramètre serait le nombre d’éléments dans la file. Il est important de vérifier l’opération de la file quand celle-ci est vide, presque vide, pleine et presque pleine, ainsi qu’en situations mitoyennes. INF 3500 : Conception et implémentation de systèmes numériques • Pour obtenir la couverture des paramètres d’opération, les étapes suivantes peuvent être suivies : – Énumérer les paramètres d’opération du module; – Pour chaque paramètre, déterminer la gamme des valeurs possibles et identifier les valeurs qui doivent absolument être vérifiées et dans quelles circonstances; – Instrumenter le code afin de noter les valeurs de paramètre utilisées; – Simuler le système; et, – Calculer le rapport des valeurs utilisées sur le nombre de valeurs totales; – Établir si les valeurs à vérifier l’ont été. 12
Couverture fonctionnelle • Dans ce genre de couverture, on énumère toutes les fonctions que le système doit pouvoir effectuer. • Par exemple, dans un processeur, il doit être possible de transférer la valeur d’un registre vers un autre. • On doit donc choisir des vecteurs de test qui exercent chacune des fonctions de la spécification. INF 3500 : Conception et implémentation de systèmes numériques 13
Vous devriez maintenant être capable de … • Décrire quelques types de tests de boîte blanche. (B 2) • La couverture de code: décrire et utiliser. (B 2, B 3) • La couverture de paramètres d’opération et la couverture fonctionnelle: décrire et utiliser. (B 2, B 3) INF 3500 : Conception et implémentation de systèmes numériques Code Niveau (http: //fr. wikipedia. org/wiki/Taxonomie_de_Bloom) B 1 Connaissance – mémoriser de l’information. B 2 Compréhension – interpréter l’information. B 3 Application – confronter les connaissances à des cas pratiques simples. B 4 Analyse – décomposer un problème, cas pratiques plus complexes. B 5 Synthèse – expression personnelle, cas pratiques plus complexes. 14
- Slides: 14