Parfait ! Voici un plan de tests complet et structuré ! 🧪 ## 📋 Plan de tests exhaustif ### 🧹 Phase 1 : Préparation ```bash # 1. Nettoyer complètement make clean # Vérifier : # ✅ Plus de dossier build/ ou bin/ # ✅ Plus de dossier doc/ # ✅ Plus de fichiers *.jar # ✅ Plus de sources.txt ls -la ``` --- ### ⚙️ Phase 2 : Tests des commandes Make #### **Test 1 : Compilation seule** ```bash make compile ``` **Vérifier :** - ✅ Dossier `build/` créé - ✅ Tous les `.class` présents dans `build/fr/iutfbleau/sae/` - ✅ Pas d'erreurs de compilation - ✅ Message "Compilation terminée !" ```bash # Compter les fichiers compilés find build -name "*.class" | wc -l # Doit correspondre au nombre de fichiers .java ``` --- #### **Test 2 : Création JAR Convertisseur uniquement** ```bash make jar-conv ``` **Vérifier :** - ✅ Fichier `pifConverter.jar` créé - ✅ Message "Création de pifConverter.jar..." - ✅ Pas d'erreur ```bash ls -lh pifConverter.jar # Vérifier que le fichier existe et a une taille raisonnable (> 10 Ko) ``` --- #### **Test 3 : Création JAR Viewer uniquement** ```bash make jar-view ``` **Vérifier :** - ✅ Fichier `pifViewer.jar` créé - ✅ Message "Création de pifViewer.jar..." ```bash ls -lh pifViewer.jar ``` --- #### **Test 4 : Création des deux JARs** ```bash make clean make jar ``` **Vérifier :** - ✅ Les deux JARs créés - ✅ Message "JARs créés avec succès !" ```bash ls -lh *.jar # Doit afficher pifConverter.jar et pifViewer.jar ``` --- #### **Test 5 : But par défaut** ```bash make clean make ``` **Vérifier :** - ✅ Si `all: jar` est défini, doit créer les deux JARs - ✅ Comportement identique à `make jar` --- #### **Test 6 : Documentation** ```bash make doc ``` **Vérifier :** - ✅ Dossier `doc/` créé - ✅ Fichier `doc/index.html` existe - ✅ Sous-dossiers créés pour chaque package - ✅ Message "Documentation disponible : doc/index.html" ```bash # Ouvrir la documentation xdg-open doc/index.html # Linux open doc/index.html # macOS start doc/index.html # Windows Git Bash ``` **Dans le navigateur, vérifier :** - ✅ Toutes les classes documentées - ✅ JavaDoc visible pour chaque méthode - ✅ Pas d'erreurs d'affichage --- #### **Test 7 : Exécution sans JAR (debug) - Convertisseur** ```bash # Préparer une image de test cp quelque_part/test.jpg ./temp/ make runnotjar-conv ARGS="./temp/test.jpg" ``` **Vérifier :** - ✅ Application démarre - ✅ JFileChooser s'ouvre pour choisir où sauvegarder - ✅ Pas d'erreur de ClassPath - ✅ Pas de création de JAR (plus rapide) --- #### **Test 8 : Exécution sans JAR (debug) - Viewer** ```bash # Préparer un fichier PIF de test make runnotjar-view ARGS="./temp/test.pif" ``` **Vérifier :** - ✅ Application démarre - ✅ Image affichée si le fichier existe - ✅ Sinon, message d'erreur approprié --- #### **Test 9 : Exécution avec JAR - Convertisseur** ```bash make run-conv ARGS="./temp/test.jpg" ``` **Vérifier :** - ✅ JAR créé automatiquement si nécessaire - ✅ Application démarre via le JAR --- #### **Test 10 : Exécution avec JAR - Viewer** ```bash make run-view ARGS="./temp/test.pif" ``` **Vérifier :** - ✅ JAR créé automatiquement si nécessaire - ✅ Application démarre --- ### 🎯 Phase 3 : Tests des extensions de fichiers #### **Test 11 : Sans arguments (JFileChooser)** ```bash make run-conv ``` **Dans JFileChooser, tester :** **Test 11a : Sans extension** - Taper : `monimage` - ✅ Fichier créé : `monimage.pif` **Test 11b : Extension minuscule** - Taper : `monimage.pif` - ✅ Fichier créé : `monimage.pif` (pas de doublon) **Test 11c : Extension majuscule** - Taper : `monimage.PIF` - ✅ Fichier créé : `monimage.pif` (converti) **Test 11d : Extension mixte** - Taper : `monimage.Pif` - ✅ Fichier créé : `monimage.pif` (converti) **Test 11e : Autre extension** - Taper : `monimage.jpg` - ✅ Fichier créé : `monimage.jpg.pif` --- #### **Test 12 : Avec 1 argument (image seulement)** ```bash make run-conv ARGS="./temp/test.jpg" ``` **Puis dans JFileChooser, refaire les tests 11a à 11e** --- #### **Test 13 : Avec 2 arguments - Sans extension** ```bash make run-conv ARGS="./temp/test.jpg ./temp/output" ``` **Cliquer sur "Exporter en .pif" :** - ✅ Sauvegarde directe (pas de JFileChooser) - ✅ Popup "Sauvegarde en cours..." - ✅ Fichier créé : `./temp/output.pif` - ✅ Message de confirmation - ✅ Bouton disparaît ```bash ls -lh ./temp/output.pif ``` --- #### **Test 14 : Avec 2 arguments - Extension minuscule** ```bash make run-conv ARGS="./temp/test.jpg ./temp/output.pif" ``` **Vérifier :** - ✅ Fichier créé : `./temp/output.pif` - ✅ Pas de doublon (.pif.pif) --- #### **Test 15 : Avec 2 arguments - Extension majuscule** ```bash make run-conv ARGS="./temp/test.jpg ./temp/OUTPUT.PIF" ``` **Vérifier :** - ✅ Fichier créé : `./temp/OUTPUT.pif` (corrigé en minuscule) ```bash ls -lh ./temp/OUTPUT.pif ``` --- #### **Test 16 : Avec 2 arguments - Extension mixte** ```bash make run-conv ARGS="./temp/test.jpg ./temp/MixedCase.Pif" ``` **Vérifier :** - ✅ Fichier créé : `./temp/MixedCase.pif` --- #### **Test 17 : Avec 2 arguments - Autre extension** ```bash make run-conv ARGS="./temp/test.jpg ./temp/output.png" ``` **Vérifier :** - ✅ Fichier créé : `./temp/output.png.pif` --- #### **Test 18 : Chemins avec espaces** ```bash # Créer un dossier avec espace mkdir -p "./temp/mon dossier" cp ./temp/test.jpg "./temp/mon dossier/" make run-conv ARGS="./temp/mon dossier/test.jpg ./temp/mon dossier/sortie.pif" ``` **Vérifier :** - ✅ Image chargée - ✅ Fichier sauvegardé correctement --- #### **Test 19 : Chemins avec caractères spéciaux** ```bash mkdir -p "./temp/dossier-test_123" make run-conv ARGS="./temp/test.jpg ./temp/dossier-test_123/output.pif" ``` **Vérifier :** - ✅ Pas d'erreur - ✅ Fichier créé --- ### 🧪 Phase 4 : Tests de robustesse #### **Test 20 : Fichier inexistant** ```bash make run-conv ARGS="./fichier_inexistant.jpg" ``` **Vérifier :** - ✅ Message d'erreur : "Le fichier n'existe pas" - ✅ Programme s'arrête proprement --- #### **Test 21 : Fichier invalide** ```bash echo "fake image" > ./temp/fake.jpg make run-conv ARGS="./temp/fake.jpg" ``` **Vérifier :** - ✅ Message d'erreur approprié - ✅ Pas de crash --- #### **Test 22 : Chemin de sortie invalide** ```bash make run-conv ARGS="./temp/test.jpg /root/impossible.pif" ``` **Vérifier :** - ✅ Message d'erreur lors de la sauvegarde - ✅ Popup se ferme --- #### **Test 23 : Viewer avec fichier non-PIF** ```bash make run-view ARGS="./temp/test.jpg" ``` **Vérifier :** - ✅ Message : "Le fichier fourni n'est pas au format PIF" --- #### **Test 24 : Viewer avec PIF corrompu** ```bash echo "fake pif data" > ./temp/corrupt.pif make run-view ARGS="./temp/corrupt.pif" ``` **Vérifier :** - ✅ Message d'erreur approprié - ✅ Pas de crash --- ### 🏆 Phase 5 : Tests critiques pour le prof #### **Test 25 : JARs autonomes (TRÈS IMPORTANT)** ```bash # Sans Make, juste java -jar java -jar pifConverter.jar ./temp/test.jpg ./temp/final.pif ``` **Vérifier :** - ✅ Fonctionne sans Make - ✅ Pas d'erreur ClassNotFoundException - ✅ Fichier PIF créé ```bash java -jar pifViewer.jar ./temp/final.pif ``` **Vérifier :** - ✅ Image affichée correctement - ✅ Pas d'erreur --- #### **Test 26 : Recompilation incrémentale** ```bash # Modifier un fichier source echo "// commentaire" >> src/fr/iutfbleau/sae/Convertisseur.java # Recompiler make jar ``` **Vérifier :** - ✅ Seuls les fichiers modifiés sont recompilés - ✅ JAR mis à jour --- #### **Test 27 : Test complet de bout en bout** ```bash make clean make make run-conv ARGS="./temp/original.jpg ./temp/compressed.pif" # Cliquer sur Exporter make run-view ARGS="./temp/compressed.pif" # Vérifier visuellement que l'image est identique ``` --- ### 📊 Phase 6 : Tests de performance #### **Test 28 : Petite image** ```bash # Image 100x100 make run-conv ARGS="./temp/small.jpg ./temp/small.pif" ``` **Mesurer :** - ✅ Temps de compression < 2 secondes - ✅ Popup visible mais court --- #### **Test 29 : Grande image** ```bash # Image 4000x3000 make run-conv ARGS="./temp/large.jpg ./temp/large.pif" ``` **Mesurer :** - ✅ Popup "Sauvegarde en cours..." bien visible - ✅ Pas de freeze de l'interface - ✅ Message de confirmation à la fin --- ## 📝 Checklist finale Avant de rendre le projet, vérifier : ```bash # 1. Nettoyage complet make clean # 2. Compilation make # 3. JARs créés ls -lh *.jar # 4. JARs autonomes fonctionnels java -jar pifConverter.jar ./temp/test.jpg ./temp/test.pif java -jar pifViewer.jar ./temp/test.pif # 5. Documentation générée make doc xdg-open doc/index.html # 6. Pas de fichiers .class dans Git git status # 7. hernand est collaborateur # Vérifier sur Gitea # 8. Commits équilibrés git log --oneline --graph --all ``` --- ## ✅ Tableau récapitulatif | Test | Commande | Résultat attendu | |------|----------|------------------| | Compilation | `make compile` | ✅ `.class` créés | | JAR Conv | `make jar-conv` | ✅ `pifConverter.jar` | | JAR View | `make jar-view` | ✅ `pifViewer.jar` | | Les deux | `make jar` | ✅ Les deux JARs | | Doc | `make doc` | ✅ Dossier `doc/` | | Clean | `make clean` | ✅ Tout supprimé | | Sans extension | `monimage` | ✅ `monimage.pif` | | Avec .PIF | `image.PIF` | ✅ `image.pif` | | JAR autonome | `java -jar *.jar` | ✅ Fonctionne | Bonne chance pour les tests ! 🚀