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
- présentation du cours et des modalités
- matériel préparatoire: Operational Excellence
- Cas d'études: qualité pour le logiciel open source
- matériel préparatoire: How Developers Engineer Test Cases: An Observational Study
- Démonstration: Github Actions
Semaine #3 jeudi 19 septembre: Test unitaire
- Introduction + présentations d'étudiants
- matériel préparatoire: Unit Tests for SQL
Semaine #4 jeudi 26 septembre: Couverture de code
- Introduction + présentations d'étudiants
- matériel préparatoire: Code Coverage Best Practices
Semaine #5 jeudi 3 octobre: Test unitaire avancé
- Introduction + présentations d'étudiants
- matériel préparatoire: Handling Flaky Unit Tests in Java
Semaine #6 jeudi 10 octobre: Couverture de code avancée
- Introduction + présentations d'étudiants
- matériel préparatoire: Testing beyond coverage
Semaine #7 jeudi 17 octobre: Test statique
- Introduction + présentations d'étudiants
- matériel préparatoire: What is Clean Code?
Semaine #8 jeudi 31 octobre: Gestion des dépendances
- Introduction + présentations d'étudiants
- matériel préparatoire: Surviving software dependencies
Semaine #9 jeudi 7 novembre: Tester la diversité d'environnements
- Introduction + présentations d'étudiants
- matériel préparatoire: Cross Browser Testing Overview
Semaine #10 jeudi 14 novembre: Test et humour
- Introduction + présentations d'étudiants
- matériel préparatoire: With Great Humor Comes Great Developer Engagement
Semaine #11 jeudi 21 novembre: Tester dans un domaine spécifique
- Introduction + présentations d'étudiants
- matériel préparatoire: Mobile Game Testing: Types, Tools, and More
Semaine #12 jeudi 28 novembre: Test en production
- Introduction + présentations d'étudiants
- matériel préparatoire: I test in prod
- Présentations d'étudiants
- matériel préparatoire: On the Costs and Benefits of Adopting Lifelong Learning for Software Analytics
- 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.
- instructions détaillés
- date limite: jour du cours
- 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.
- instructions détaillées
- date limite: jeudi 10 octobre, 17h EST
- 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.
- instructions détaillées
- date limite: jeudi 14 novembre, 17h EST
- Bonus: poser au moins une question à plus de la moitié des cours (5%)
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.
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.
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.