Skip to content

lalogiquefloue/IFT3913

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IFT3913 - Qualité du logiciel

Ce cours est offert à l'automne 2024. Il est organisé suivant le calendrier ci-dessous.

Avec ce cours, les étudiant(e)s auront acquis les compétences suivantes:

  • évaluation automatique de la qualité logicielle
  • concepts fondamentaux du test logicel: données, scénarios, oracles
  • apprentissage par diverses sources de connaissances
  • curiosité et humour pour le logiciel

Les étudiant(e)s sont évalué(e)s sur la base de 3 tâches, suivant les critères énoncés ci-dessous.

Prérequis: programmation Java, git et github.

Le cours a lieu en personne les jeudis de 8.30 à 11.30, en salle Z-317 au Pavillon Claire-McNicoll. Les séances de travaux pratique ont lieu les mardis de 8.30 à 10.30, en salle 1355 au Pavillon André-Aisenstadt.

Vous pouvez contacter les assistants de cours, Meriem, Yogya et Oussama, à cette adresse: dift3913@iro.umontreal.ca

Semaine #1 jeudi 5 septembre: Introduction

Semaine #2 jeudi 12 septembre: Études de cas

Semaine #3 jeudi 19 septembre: Test unitaire

Semaine #4 jeudi 26 septembre: Couverture de code

Semaine #5 jeudi 3 octobre: Test unitaire avancé

Semaine #6 jeudi 10 octobre: Couverture de code avancée

Semaine #7 jeudi 17 octobre: Test statique

Semaine #8 jeudi 31 octobre: Gestion des dépendances

Semaine #9 jeudi 7 novembre: Tester la diversité d'environnements

Semaine #10 jeudi 14 novembre: Test et humour

Semaine #11 jeudi 21 novembre: Tester dans un domaine spécifique

Semaine #12 jeudi 28 novembre: Test en production

  • Introduction + présentations d'étudiants
  • matériel préparatoire: I test in prod

Semaine #13 jeudi 5 décembre: conclusion + tampon

Tâches

  • tâche #1: présentation individuelle (40%). Les étudiants choisissent un thème parmi tous ceux abordés chaque semaine et préparent une présentation technique de 7 minutes sur ce thème.
  • tâche #2: augmentation d'une suite de tests automatique (30%). Les étudiants travaillent en binôme. Chaque binôme choisit une des études de cas sélectionnées pour le cours, ajoute, documente et automatise l'exécution de 10 nouveaux tests unitaires.
  • tâche #3: automatisation des tests sur divers environnements. Les étudiants travaillent en binôme, le même binôme que pour la tâche #2. Chaque binôme travaille sur le même projet que pour la tâche #2, afin d'automatiser l'exécution des tests dans une diversité d'environnements.
  • Bonus: poser au moins une question à plus de la moitié des cours (5%)

Critères d'évaluation

Tâche #1: présentation

critère description
temps la présentation dure entre 6.30 min et 7.30 min (limite stricte)
structure la présentation est bien structurée et la structure est annoncée et visible
introduction la présentation inclut une introduction qui motive l'importance du sujet pour la qualité logicielle
contenu la présentation inclut une partie technique avec des extraits de code, lisibles
originalité la présentation inclut un point original
réflection la présentation inclut une partie réflection / recul sur le sujet
conclusion le dernier slide inclut un message clair et pratique pour l'audience
compréhension l'orat(rice.eur) montre une maitrise et compréhension claire du sujet et peut répondre aux questions de l'audience
élocution l'orat(rice.eur) parle clairement, avec assurance, et interagit avec l'audience. le sens de l'humour responsable est apprécié
slides les slides sont lisibles, n'incluent pas trop de texte et contiennent des illustrations
sources la présentation s'appuie sur au moins 3 sources extérieures qui sont citées en bas de page et sont publiquement accessibles

La limite de temps est obligatoire. Tous les autres critères comptent pour un point.

Tâche #2: tests unitaires automatiques

critère description
tests 10 nouveaux tests qui n'étaient pas présents dans la version initiale du repo
oracle chaque test inclut un oracle qui vérifie, automatiquement, que le programme a le comportement attendu
intention chaque test a une intention claire documentée dans un commentaire
structure les tests sont organisés en suivant le pattern AAA (arrange-act-assert)
documentation le repo inclut une page qui documente où se trouvent les méthodes testées et justifie les choix des méthodes testées
utilité l'exécution des nouveaux tests augmente la couverture de code
exécution les tests, y compris les 10 nouveaux, s'exécutent avec succès dans une Github action

Chacun des critères compte pour un point.

Il est très fortement conseillé que les tests s'exécutent automatiquement et correctement dans une Github action (dernier critère). Si ce n'est pas le cas, la note maximale pour cette tâche ne pourra pas dépasser 4/10.

Bonus: au moins un test utilise la bibliothèque java-faker.

Tâche #3: test sur divers environnements

critère description
flags l'action exécute la compilation et les tests avec 5 flags différents de la JVM *
structure l'action génère des logs clairs qui documentent quels flags sont exécutés
documentation le repo inclut une page qui documente les changements apportés à la Github action pour permettre l'exécution avec cinq flags
motivation la documentation inclut une section qui justifie le choix de chaque flag vis-à-vis de son impact possible sur la qualité, la performance, l'observabilité
qualité la mesure de la couverture est automatisée et le taux de couverture est mesuré à chaque build avec un flag différent; cinq taux de couverture sont mesurés par l'action
humour le repo inclut un élément d'humour responsable et documenté

* les flags doivent être de différents types (par exemple pas 2 flags de type print ou GC)

Chaque critère compte pour un point.

Si l'action ne s'exécute pas correctement, la note maximale pour cette tâche ne pourra pas dépasser 4/10.

Bonus: les commits pour développer cette action sont documentés avec lolcommits.

About

Syllabus pour IFT3913 [automne 2024]

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%