Ce cours est offert à l'automne 2025. 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 4 tâches.
Prérequis: programmation Java, git et github.
Le cours a lieu en personne les vendredi de 12.30 à 15.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 Z-310 au Pavillon Claire-McNicoll.
Vous pouvez contacter les assistants de cours, Meriem, Yogya et Imen, à 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 vendredi 19 septembre: Test unitaire
- Introduction + présentations d'étudiants
- matériel préparatoire: Unit Tests for SQL
Semaine #4 vendredi 26 septembre: Couverture de code
- Introduction + présentations d'étudiants
- matériel préparatoire: Code Coverage Best Practices
Semaine #5 vendredi 3 octobre: Test unitaire avancé
- Introduction + présentations d'étudiants
- matériel préparatoire: Handling Flaky Unit Tests in Java
Semaine #6 vendredi 10 octobre: Couverture de code avancée
- Introduction + présentations d'étudiants
- matériel préparatoire: Testing beyond coverage
Semaine #7 vendredi 17 octobre: Test statique
- Introduction + présentations d'étudiants
- matériel préparatoire: What is Clean Code?
Semaine #8 vendredi 31 octobre: Gestion des dépendances
- Introduction + présentations d'étudiants
- matériel préparatoire: Surviving software dependencies
Semaine #9 vendredi 7 novembre: Tester la diversité d'environnements
- Introduction + présentations d'étudiants
- matériel préparatoire: Cross Browser Testing Overview
Semaine #10 vendredi 14 novembre: Tester dans un domaine spécifique
- Introduction + présentations d'étudiants
- matériel préparatoire: Mobile Game Testing: Types, Tools, and More
Semaine #11 vendredi 21 novembre: Test et humour
- Introduction + présentations d'étudiants
- matériel préparatoire: With Great Humor Comes Great Developer Engagement
Semaine #12 vendredi 28 novembre: Test en production
- Introduction + présentations d'étudiants
- matériel préparatoire: I test in prod
- Discussion ouverte sur la qualité logicielle et le déroulé d'IFT3915-A25
- matériel préparatoire: On the Costs and Benefits of Adopting Lifelong Learning for Software Analytics
Les étudiants sont évalués sur la base des 4 tâches décrites ci-dessous. Les tâches #1 et #4 sont individuelles, les tâches #2 et #3 se font en binôme. Le poids respectif de chaque tâche est indiqué ci-dessous. La correspondance entre les notes de chaque tâche et la note litérale est dynamique.
- tâche #1: présentation individuelle (30%). 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 augmente la suite de tests de Graphhopper sélectionnées pour le cours, ajoute, documente et automatise l'exécution de 10 nouveaux tests unitaires. Cf. les instructions détaillées et les critères pour la tâche 2.
- instructions détaillées
- date limite: vendredi 10 octobre, 17h EST
- tâche #3: automatisation des tests d'intégration (30%). Les étudiants travaillent en binôme, le même binôme que pour la tâche #2. Chaque binôme modifie Graphhopper pour le test d'intégration. Cf. les instructions détaillées et les critères pour la tâche 3.
- instructions détaillées
- date limite: vendredi 21 novembre, 17h EST
- tâche #4: répondre à 3 quizz (10%). Vous recevrez 3 quizz au cours du semestre qui aborderont des points abordés dans les différentes présentations du cours. Les 3 quizz seront répartis sur le semestre à des dates non déterminées (a.k.a quizz surprises). Les quizz seront distribués via Studium.
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 |
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 |
[demo] | la présentation inclut une démo interactive de l'outil présenté |
[concept] | le présentation inclut une définition claire du concept abordé ainsi que des exemples concrets du concept abordé |
La limite de temps est obligatoire. Tous les autres critères comptent pour un point. Le 2 derniers critères sont exclusifs, en fonction du type de présentation que vous choisissez de faire.
critère | description |
---|---|
tests (25%) | 7 nouveaux tests, incluant un oracle, qui augmentent le score de mutation |
documentation tests (15%) | chaque test est documenté: intention, données de test et oracle sont expliqués et justifiés |
mutation (15%) | exécuté pitest les classes testées, avec tests originaux puis avec nouveaux tests |
documentation mutants (15%) | les mutants détectés par les nouveaux tests sont documentés et la raison pour la détection est expliquée |
faker (10%) | un nouveau cas de test qui utilise java-faker |
documentation faker (10%) | le choix du faker est justifié et son usage est documenté |
exécution (10%) | tous les nouveaux tests s'exécutent avec succès dans la Github action |
critère | description |
---|---|
Github action (GA) (25%) | l'action échoue si le score de mutation est plus bas que sur la dernière exécution de l'action |
documentation GA (25%) | les modifications apportées à l'action ainsi que la validation des modifications sont documentées et justifiées; |
mocks (20%) | 2 classes sont simulées avec des mockito et les tests sont adaptés pour utiliser les mocks |
documentation mocks (20%) | le choix des classes, la définition des mocks, les changements dans les tests sont documentés et justifiés |
humour (10%) | Volkswagen est inclut dans le CI |
Trois quizz surprises au cours du semestre
- 10 questions par quizz
- les quizz sont distribués sur Studium
- la note globale des quizz compte 10% de la note générale du cours