• Aucun résultat trouvé

2.4 Une approche BDD pour les tests d’int´ egration syst` eme

3.1.3 Grammaire des instructions du langage

Nous nous sommes adapt´es au vocabulaire courant usit´e dans les tests d’int´egration de l’ing´enierie syst`eme. Notre partenaire du projet ACOVAS a aussi d´efini les termes ”proc´e- dure de test”, ”chapitre de test”, ”bloc de test” et ”bloc d’initialisation”. Nous ´etablissons dans ce qui suit le lien entre ces notions. Une proc´edure de test en langage pivot r´ef´e- rence plusieurs chapitres de test. Un chapitre de test est compos´e d’un bloc d’initialisation optionnel et d’un ensemble de blocs de test. Il r´ef´erence aussi les outils concourants `a la

r´ealisation du test. Le bloc d’initialisation est optionnel car la validation de certains objec- tifs demande de v´erifier le comportement du SUT d`es lors qu’il est mis sous tension. Les instructions possibles dans ces blocs sont set, check, manualAction et call. Les proc´e- dures, les chapitres et les blocs de test sont d´esign´es par un nom. La figure 3.5 pr´esente le m´eta-mod`ele du langage pivot.

Figure 3.5 – M´eta-mod`ele de la structure et des instructions du langage pivot

Le langage permet de manipuler les param`etres avioniques grˆace aux instructions set et check. Les param`etres avioniques sont formalis´es via un langage d´evelopp´e s´epar´ement pour des besoins de r´eutilisabilit´e. Les instructions set et check manipulent des r´ef´erences `

a ces param`etres.

L’instruction set est compos´ee d’une r´ef´erence `a un param`etre avionique et de la va- leur `a assigner. L’instruction se termine par l’unit´e de mesure du param`etre manipul´e. Cette instruction permet de g´erer des param`etres entiers, bool´eens ou r´eels. Le type et l’unit´e d’un param`etre sont d´efinis dans un fichier ICD d´ecrit ult´erieurement. Le listing 3.1 montre la grammaire EBNF de l’instruction set. Les concepts valueFloat, valueInteger et valueBoolean sont support´es par des types de donn´ees propos´es par MPS. Les uni- t´es propos´ees par le langage sont amen´ees `a ´evoluer en fonction des besoins. Le concept IDparameter est une r´ef´erence au param`etre avionique identifi´e par le triplet nom de l’ap- plication (applicationRef), nom du bus (busRef) et nom du signal (signalRef). Les param`etres utilis´es dans les instructions du langage pivot sont formalis´es via le langage

ICD pr´esent´e `a la section 3.1.5.

Listing 3.1 – Grammaire EBNF de l’instruction set

s e t := IDParameter , s e t E g a l , p a r a m e t e r U n i t s e t E g a l := s e t B o o l e a n | s e t F l o a t | s e t I n t e g e r s e t F l o a t := IDparameter , ’ = ’ , v a l u e F l o a t s e t I n t e g e r := IDparameter , ’ = ’ , v a l u e I n t e g e r s e t B o o l e a n := IDparameter , ’ = ’ , v a l u e B o o l e a n IDparameter := a p p l i c a t i o n R e f , busRef , s i g n a l R e f p a r a m e t e r U n i t := ’ kg / s ’ | ’ °C’ | ’ ’

L’instruction check during permet de v´erifier que l’´etat (ou la valeur) d’un ou plu- sieurs param`etres avioniques reste constant. Cette instruction est compos´ee d’une liste de param`etres et de valeurs attendues. Le listing 3.2 pr´esente la grammaire EBNF de l’instruc- tion check during. Le concept during est optionnel ; dans le cas o`u il n’est pas instanci´e, la v´erification est ponctuelle, sans p´eriode de temps. On se retrouve alors dans le cas classique d’une assertion dans le contexte d’un test logiciel.

Listing 3.2 – Grammaire EBNF de l’instruction check during

c h e c k := ’ Check t h a t ’ , *compareEgal , ? during

compareEgal := compareBoolean | c o m p a r e F l o a t | c o m p a r e I n t e g e r c o m p a r e F l o a t := IDparameter , ’== ’ , v a l u e F l o a t , p a r a m e t e r U n i t c o m p a r e I n t e g e r := IDparameter , ’== ’ , v a l u e I n t e g e r , p a r a m e t e r U n i t compareBoolean := IDparameter , ’== ’ , v a l u e B o o l e a n , p a r a m e t e r U n i t p a r a m e t e r U n i t := ’ kg / s ’ | ’°C’ | ’ ’ IDparameter := a p p l i c a t i o n R e f , busRef , s i g n a l R e f d u r i n g := ’ d u r i n g ’ , v a l u e I n t e g e r , t i m e U n i t t i m e U n i t := ’ s e c ’ | ’ ms ’ | ’ min ’

L’instruction check until du langage pivot donne la possibilit´e de s’assurer qu’un param`etre peut atteindre un certain ´etat (ou une certaine valeur) avant un certain laps de temps ; c’´etait l’objectif de l’instruction WAIT pr´esent´ee pr´ec´edemment. Le listing 3.3 pr´esente la grammaire EBNF de l’instruction check until. Le concept until d´efinit le temps durant lequel le test attendra que le syst`eme atteigne les conditions expect´ees.

Listing 3.3 – Grammaire EBNF de l’instruction check until

c h e c k := ’ Check t h a t ’ , *compareEgal , u n t i l compareEgal := compareBoolean | c o m p a r e F l o a t | c o m p a r e I n t e g e r c o m p a r e F l o a t := IDparameter , ’== ’ , v a l u e F l o a t , p a r a m e t e r U n i t c o m p a r e I n t e g e r := IDparameter , ’== ’ , v a l u e I n t e g e r , p a r a m e t e r U n i t compareBoolean := IDparameter , ’== ’ , v a l u e B o o l e a n , p a r a m e t e r U n i t p a r a m e t e r U n i t := ’ kg / s ’ | ’ °C’ | ’ ’ IDparameter := a p p l i c a t i o n R e f , busRef , s i g n a l R e f u n t i l := ’ u n t i l ’ , v a l u e I n t e g e r , t i m e U n i t t i m e U n i t := ’ s e c ’ | ’ ms ’ | ’ min ’

Lors de l’utilisation des instructions set, check during et check until, le testeur choisit le param`etre qu’il souhaite r´ef´erencer. En fonction du type du param`etre (entier, flottant ou bool´een), l’´editeur s´electionne automatiquement la bonne version du concept `

a instancier : SetEgal pour l’instruction set ou CompareEgal pour les instructions check during et check until.

Les figures 3.6 et 3.7 sont des exemples d’utilisation des instructions set et check during. La premi`ere montre deux exemples d’instruction set en langage pivot pour les consignes de la zone 1 et la zone 2. Nous avons choisi d’utiliser le symbole d’affectation clas- sique plutˆot que le mot-cl´e set pour la syntaxe concr`ete de cette instruction. La deuxi`eme figure montre une instruction check during se rapportant aux deux zones. De mˆeme que pour l’instruction set, les symboles == remplacent dans la syntaxe concr`ete les appels aux diff´erentes instructions de comparaison. Nous mettons ainsi en œuvre un polymorphisme pour les op´erateurs d’affectation et de comparaison.

Figure 3.6 – Exemples d’instruction set

Figure 3.7 – Exemple d’instruction check

L’instruction call fait r´ef´erence `a une fonctionnalit´e d’un outil th´eoriquement pr´esent sur le banc de test pour aider `a la mise en œuvre des proc´edures. Dans le cas o`u l’oracle de test n’est pas encore impl´ement´e ou non impl´ementable pour le moment, ce type d’ins- truction permet de faire appel `a un outil ext´erieur dans le but de r´ecup´erer une structure de donn´ees ou de tracer et loguer l’´etat du SUT pour une v´erification manuelle ult´erieure. La liste des outils qu’il est possible de r´ef´erencer est d´efinie grˆace au langage Tool. Ce langage permet de formaliser les outils et de leur faire correspondre une liste de fonctions. Le m´eta-mod`ele de ce langage sera pr´esent´e `a la section 3.1.5. Le choix d’un outil, lors de l’utilisation de l’instruction call, restreint les fonctions possibles `a celles qu’il propose. Ce choix s’´etablit par le biais d’une liste des outils disponibles sur le banc.

Listing 3.4 – Grammaire EBNF des instructions call et manualAction

c a l l := ’ C a l l ’ , t o o l R e f , t o o l F u n c t i o n R e f ’ f u n c t i o n ’ manualAction := ’ Manual A c t i o n : ’ , message

Le langage pivot supporte aussi certains types de tests semi-automatiques grˆace `a l’ins- truction manualAction qui permet de stopper l’ex´ecution d’un test jusqu’`a ce que le testeur

atteste que l’action a bien ´et´e r´ealis´ee. L’ex´ecution de cette instruction fait apparaˆıtre une fenˆetre pop-up contenant un message donn´e par le testeur lors de l’instanciation d’une action manuelle. L’utilisation de ce type d’action donne la possibilit´e d’int´egrer, dans des proc´edures formalis´ees, des actions qui ne sont pas encore r´ealisables automatiquement. Par exemple, l’action de d´econnecter un cˆable de donn´ees d’un calculateur n’est pas automati- sable dans le cas des tests d’int´egration IMA. De mˆeme, le pilotage de certains outils n’est pas automatisable car beaucoup d’entre eux ne proposent pas d’API permettant d’activer leurs fonctionnalit´es via un script. Le listing 3.4 pr´esente la syntaxe EBNF des instructions call et manualAction.