La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Didier Besset présente. Agenda Niveaux de test Le cas FDPZ Primitives de test Conclusions.

Présentations similaires


Présentation au sujet: "Didier Besset présente. Agenda Niveaux de test Le cas FDPZ Primitives de test Conclusions."— Transcription de la présentation:

1 Didier Besset présente

2 Agenda Niveaux de test Le cas FDPZ Primitives de test Conclusions

3 Niveaux de test Brut Structurel Fonctionnel

4 Tests bruts Le display est considéré comme un ensemble de pixels, la comparaison se fait avec un écran obtenu préalablement, Utile pour des utilisateurs pointilleux! Exemple: jDiffChaser (SourceForge) automatise les copies décrans et les comparaisons entre versions.

5 Tests bruts: pro & con Pro: Facile à mettre en œuvre, Test très rigide; Con: Test trop rigide (?), Cas très limités en pratique, Nadresse pas les aspects dynamiques.

6 Tests structurels On analyse la structure hiérarchique des composants dun écran (en Java, toute sous-classe de Window).

7 Tests structurels: exemple Swing JLayeredPane(glass pane) (content pane)(JMenuBar) JFrame application specific application specific JRootPane application specific

8 Tests structurels: pro & con Pro: Vérifie la consistance hiérarchique du contenu de chaque écran, Rigidité ajustable; Con: Fastidieux à maintenir, Nadresse pas les aspects dynamiques.

9 Tests fonctionnels Principe: faire fonctionner lécran comme un utilisateur; Pour chaque action, il faut Localiser le composant correspondant, Taper les caractères désirés (si besoin est), Effectuer le click ou le Tab nécessaire pour la conclusion de laction; Java: loutil de base est la classe Robot.

10 Tests fonctionnels: pro & con Pro: Flexibilité et robustesse (résiste au changement), Adresse les aspects dynamiques; Con: Nécessite de la préparation, Difficile à mettre en œuvre.

11 Le cas FDPZ Domaine extrêmement critique (ATM), Très forte connectivité avec des autres systèmes, 500000 lignes de code en arrière plan!

12 Le traffic aérien suisse

13 Lespace aérien

14 Tâches principales Préparation Suivi FDPZ Enregistrement des vols Eurocontrol Notification des vols entrant Unités voisines Notification des vols sortant

15 Connectivité MAITRE Pre-processing FPL DB Flight Plan Data Processing ZHR SYLEX OLDI (online data interchange) Delivers wind information Meteo-Server ZECAT Radar TACO CH Tower Approach MV-NT Multi radar tracker O4D Trajectory Prediction&Sector Calc. DIFF Strip Printing QuickRules FDPZ CA- and ATCO-Clients Strip-Printers TACT Tactical Planning System (Slots) FSA STARS Flight status "terminated" FPL T-Box Inform Military FPL SYMA-Clients AFTN (switch) Aeronautical Fix Telecom Network INIS FPL FPL, DLA, CHG, CNL, DEP, ARR, SAM, SRM AIS Printer ARR, DEP

16 Conséquences Nous testons, re-testons, re-re-testons...

17 Caractéristiques FDPZ Architecture client-serveur, LIHM est très dynamique, Beaucoup de métier dans les événements, Une action sur un client a de linfluence sur les autres.

18 Architecture de test Test master Renvoient les résultats de test. Test slave Instructions de test Résultats de test Fédère les résultats de test; Lance le serveur (si besoin est), Lance les test slaves, Effectue le script de test, Lancent un client de type défini, Effectuent les actions requises,

19 Test FDPZ fonctionnels Inutile de reproduire les évènements simples, La classe Robot nest pas utilisée par les tests; Définition de primitives métier: Entrée de valeurs de types définis par le métier, Les actions définies sont des actions utilisateur.

20 Test setup Test specific data Configuration du test Command for given client Commandes pour un client donné Démarage de client non-standard @Before public void setUp() throws Exception { ConfigurationData configurationData = new ConfigurationData(); configurationData.enableSector(Sector.M1, true); configurationData.enableSector(Sector.M4, true); configurationData.enableAllAlarms(); getPassiveClients().assignConfiguration(configurationData); configurationData = new ConfigurationData(); configurationData.enableSector(Sector.EAST, true); configurationData.enableAllAlarms(); getActiveClient().assignConfiguration(configurationData); startTowerClients(TOWER_LSZR); startTower2Clients(TOWER_EDNY); }

21 Data input Test specific type Business specific types Data input command Input & validate command Create (button click) Add segment (button click & selection) Add segment (button click & selection) final PropertiesMap data = new PropertiesMap(); data.addTypeOfFlight(FlightType.GENERAL); data.addAircraftType("PA34"); data.addWakeTurbulenceCategory(WakeTurbulenceCategory.LIGHT); data.addTrueAirSpeed(new Integer(140)); data.addDeparturePointName("LSGG"); data.addDestinationPointName("LIRA"); data.addRequestedEntryFlightLevel(FlightLevel.createLevel(130)); data.addRequestedExitFlightLevel(FlightLevel.createLevel(130)); data.addEntryPointName("BER"); data.addExitPointName("WIL"); getActiveClient().editFlightPlanSegment(createPlan(ARCID), data); data.clear(); data.addExitPointName("BARIG"); getActiveClient().editFlightPlanSegment(addSegment(1), data); data.clear(); data.addExitPointName("CANNE"); getActiveClient().editAndSaveFlightPlanSegment(addSegment(2), data);

22 Data check Reused type Data input command Data checking command Search command Selection command final PropertiesMap check = new PropertiesMap(); check.addDeparturePointName("LSZR"); check.addDestinationPointName("EDNY"); check.addEntryPointName("SZR"); check.addExitPointName("MOKOP"); getFlexibleClients().checkFlightPlanSegment( search(ARCID_A, 0), check); check.clear(); check.addEntryPointName("MOKOP"); check.addIntermediatePointName("FHD"); check.addExitPointName("DNY"); getFlexibleClients().checkFlightPlanSegment(segment(1), check);

23 Special actions Foreign systems are simulated Data input command Relative time definition Time machine Data input command Common data library final DeferredDate eobt = DeferredDate.nowRoundedToNext(Calendar.MINUTE); getInisSimulator().sendAftnPlanMessage( readParametrizedAftnMessage("FPL A"), eobt.after(5, Calendar.MINUTE)); getInisSimulator().sendAftnPlanMessage( readParametrizedAftnMessage("FPL B"), eobt); getInisSimulator().sendAftnPlanMessage( readParametrizedAftnMessage("FPL C"), eobt); getTimeAgent().accelerateInMinutes(11);

24 Special screen actions Attente d'un changement d'affichage Différentes zones d'affichage Action spéciales getTower2Client().waitVisible(Tower.inbound(ARCID_B)); getTower2Client().waitVisible(Tower.outbound(ARCID_D)); getTowerClient().waitVisible(Tower.outbound(ARCID_A)); getTowerClient().waitVisible(Tower.inbound(ARCID_C)); getTowerClient().applyOnTowerStrip(Tower.outbound(ARCID_A), Tower.sid("KPT2V")); getTowerClient().applyOnTowerStrip(Tower.outbound(ARCID_A), Tower.clearance()); getTowerClient().applyOnTowerStrip(Tower.outbound(ARCID_A), Tower.takeoff()); getFlexibleClients().checkFlightPlanSegment(search(ARCID_A, 0), PropertiesMap.activatedCheck(ARCID_A));

25 Conclusions Tester un IHM est possible, Il faut investir dans des outils ciblés, L'introduction de primitives de tests simplifie l'écriture des tests, Les primitives permettent la formalisation des tests.

26 Questions ?


Télécharger ppt "Didier Besset présente. Agenda Niveaux de test Le cas FDPZ Primitives de test Conclusions."

Présentations similaires


Annonces Google