WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Stratégie de test au sein du processus d'évolution d'architecture de Sodifrance

( Télécharger le fichier original )
par Laurent GARNIER
CNAM Nantes - Ingénieur informatique 2011
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

4 LES TRAVAUX CONNEXES

4.1 Réalisation d'un plugin Eclipse

Durant la réalisation de ce mémoire, j'ai eu à encadrer le stage en entreprise d'un étudiant en Master 2 en Informatique, spécialité architecture logicielle de l'université de Nantes. L'objectif de son stage était la réalisation d'un plugin Eclipse permettant de suivre l'avancement de l'intégration des projets de migration. Cet outil de suivi est centré sur la base de cartographie à laquelle des notions de suivi ont été greffées, et sur l'analyse des codes sources en cours d'intégration.

Dans le processus classique de migration, les scripts de génération des méthodes et des classes ont été modifiés afin d'intégrer deux types de balises :

· Une balise identifiant qui ne doit pas être supprimée.

· Des balises de début et de fin de méthode.

Elles ont toutes comme information principale l'« elementKey », leur identifiant en base. Lorsque l'intégrateur commence à travailler sur une méthode, il supprime la balise de début.

La méthode est alors reconnue comme étant en cours d'intégration. Ensuite, lorsque l'intégrateur estime qu'il a terminé sa méthode, il supprime la balise de fin. La méthode passe alors en statut terminé. Si on prend pour exemple une méthode qui contient dix lignes de code et qui a ses balises de début et de fin, elle comptera pour zéro ligne intégrée. Avec cette même méthode, si la balise de début a été supprimée, elle comptera pour cinq lignes intégrées. Et enfin si cette méthode n'a plus ni balise de début ni balise de fin, elle comptera pour l'ensemble de ses lignes de code, donc pour dix lignes intégrées. Ensuite, pour connaître le niveau d'intégration de la classe, on calcule le rapport entre le nombre de lignes de code intégrées et le nombre de lignes de code total. Certes, ce mécanisme assez basique, laissant des actions manuelles à la charge des intégrateurs n'est pas parfait. En effet, la plupart des erreurs proviennent justement de ces interventions humaines. Mais il permet tout de même d'avoir sur l'ensemble de l'application une idée assez précise de l'avancement de l'intégration.

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

Figure 31 : Copie d'écran de la page Html du taux de couverture de l'application LV

Figure 32 : Copie d'écran de la page HTML détaillant le code d'une méthode de l'application LV

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

4.2 Instrumentation

J'ai réalisé une suite d'outils permettant d'injecter du code dans des applications Visual Basic. L'objectif de ces injections est de produire des traces au format XML qui seront interprétées puis insérées dans la base de cartographie.

4.2.1 Taux de couverture

Le taux de couverture des tests de références est calculé de la manière suivante :

· On ajoute un appel à une méthode de comptage pour chaque ligne de code. Chaque appel prend en paramètre un compteur qui devient son identifiant. Dans le même temps, on insère dans une table de base de données une ligne correspondant à la ligne de code traitée, avec bien sûr le même identifiant.

· Ensuite, lors de l'exécution de l'application instrumentée, après chaque ligne de code, il y aura l'appel à la fonction de comptage. Cette dernière peut selon un paramétrage, soit produire une trace XML donnant la liste des lignes appelées, soit mettre à jour directement la ligne correspondant à son identifiant en base.

· Au final, on se retrouve avec une table contenant l'ensemble des lignes de l'application, et pour chacune d'elle, un indicateur spécifiant si elle a été utilisée lors de l'exécution ou non. De simples requêtes suffisent ensuite pour connaître le taux de couverture24.

J'ai aussi développé un outil produisant un site web statique permettant de mieux visualiser le taux de couverture (cf. Figure 31). La première version de l'outil de couverture était d'une certaine manière plus « intelligente » car elle n'ajoutait pas d'appels à chaque ligne de code, mais uniquement au début des méthodes et dans chaque branche (conditions, boucles), en indiquant le nombre de lignes de code de chaque bloc. La Figure 32 démontre la nécessité d'instrumenter toutes les lignes de l'application.

En effet, ici si l'instruction « CommonDialog.ShowPrinter » provoque une erreur, le reste des lignes jusqu'au traitement d'erreur ne sera pas exécuté. Or, avec la logique précédente, dès l'entrée dans la méthode, l'ensemble des lignes se trouvant hors d'une condition ou d'une boucle, aurait été considérées comme passées, ce qui est faux, puisque la gestion d'erreur force le débranchement jusqu'à la balise « ErrHandler: », donc les lignes 1013 à 1018 n'ont pas été exécutées.

24 100 . nombre de lignes utilisées

nombre de lignes total

).

Taux de couverture : (

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

Figure 33 : Diagramme de séquence d'appels à l'opération « SdfCartography »
de la classe « SdfMigration ».

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Aux âmes bien nées, la valeur n'attend point le nombre des années"   Corneille