CentraleSupélecDépartement informatique
Plateau de Moulon
3 rue Joliot-Curie
F-91192 Gif-sur-Yvette cedex
Test, couverture et génération

30 HEE, 18 HPE

Contact

Lina Ye, Safouan Taha lina.ye@centralesupelec.fr,safouan.taha@centralesupelec.fr

Prérequis

aucun

Présentation générale

Le test est une activité de validation qui permet de confronter un logiciel à sa spécification. Ce cours initie au métier de testeur, aux différentes techniques de test et comment les mettre en œuvre tout au long du processus de développement.

Acquis d’apprentissage visés dans le cours

  • Qu'est-ce qu'un cas de test ? Un système sous test ?
  • Techniques de conception de tests:
    • techniques boîte noire (partitionnement, couverture de données...);
    • techniques boîte blanche (couverture du code, mutation...)
  • Génération automatique de cas de test:
    • méthode aléatoire (Fuzzing);
    • exécution symbolique;
    • exécution concolique;
    • génération à base de modèles

Moyens

L'apprentissage se basera sur de la pratique. Après les cours magistraux présentant les concepts théoriques et introduisant les différents outils, des bureaux d'étude permettront aux élèves de prendre en main une multitude d'environnements de test et de travailler sur des cas concrets.

Description des compétences acquises à l'issue du cours

  • C6.3: Spécifier, concevoir, réaliser et valider un logiciel
    • le test est l'activité de validation la plus répandue
    • le test consiste à confronter la spécification à la réalisation dans le but de la validation
  • C2.5: Maîtriser les compétences d'un des métiers de base de l'ingénieur
    • se former au métier de testeur
  • C3.8: Savoir concevoir, réaliser et passer à l'industrialisation
    • le passage à l'industrialisation nécessite une phase importante de test.

Contenu

12 créneaux d'1h30 (18 HPE) : 6 cours (1h30), 3 bureaux d'étude (3h).

  • CM 1 : Introduction, définitions [Safouan]
    • Activités de l'ingénieur de validation (Classification de Beizer...)
    • Différents critères et types de test
    • Automatisation de l'activité de test
    • Formalisation de l'activité de test : introduction aux critères de couverture
    • Limites des tests
  • CM 2 : Test fonctionnel [Safouan]
    • Test aléatoire
    • Test par partitionnement des données (classes d'équivalence, tests aux limites, tests de robustesse...)
    • Test unitaire (principe et mise en oeuvre)
    • Fuzzing (principe et mise en oeuvre)
  • BE (créneaux 3 & 4) [Safouan]
    • Environnement de test unitaire (ex: JUnit, PUnit)
    • Environnement de génération automatique de tests et de partitionnement de données (ex : JMLSpecs)
    • Environnement de génération de tests aléatoires par Fuzzing (ex: OWASP WSFuzzer)
  • CM 5 & 6 : Test structurel [Safouan]
    • Graphes de contrôle et graphes de données
    • Test par couverture code (critères : bloc, décision, condition, MC/DC...)
    • Test par mutation (principe, niveaux et types de mutations)
  • BE (créneaux 7 & 8) [Safouan]
    • Environnement de test par couverture (ex: emma, jcoverage, Simulink/Design Verifier)
    • Environnement de test par mutation (ex: PIT, Proteum)
  • CM 9 & 10 : Test par exécution symbolique [Lina]
    • Prédicats de chemins et résolution de contraintes
    • Exécution symbolique statique
    • Exécution symbolique dynamique (concolique)
  • BE (créneaux 11 & 12) [Lina]
    • Environnement d’exécution symbolique et concolique (PathCrawler, CUTE, Angr, KLEE)

Les 12 HEE restantes sont consacrées à la finalisation des travaux réalisés en bureau d'étude, ainsi qu'aux révisions.

Méthodes d'évaluation

L'évaluation se fera en contrôle continu sur la qualité du travail fourni lors des bureaux d'étude.