Tests d'intégration et conception en autonomie
Ce TD vise
à vous apprendre à mettre en place des tests d'intégration
à concevoir une petite application à plusieurs en prévoyant les tests d'intégration.
4h c'est à dire 2 séances seront consacrées à ce TD.
Vous ne parviendrez peut etre pas à tout faire.
Soyez itératif, faîtes en sorte de toujours avoir un code qui tourne.
Ne trainez pas non plus !
Partie 1 : Tutoriel EasyMock (1/2h grand maximum)
Si vous dépassez le temps passez à la suite et revenez dessus plus tard.
Suivez le “getting started” de
easyMock Mais au lieu d'utiliser maven utilisez directement le
fichier jar ci-joint 1). Pour cela, sur le nom du projet > Properties > Java Build Path > Puis ajouter le .jar ci dessus.
![](/lib/exe/fetch.php?w=300&tok=d607c2&media=2018_2019:s3:concprogobjet:td:capture_d_e_cran_2018-10-30_a_09.47.08.png)
Vérifiez que tout fonctionne et comprenez évidemment.
Partie 2 : Un jeu de Quizz
Vous devez réaliser en groupe de 2 étudiants un jeu de quizz dont voici la spécification.
Spécifications
V0 : Version de base
En tant que joueur, je veux répondre à une question du quizz TRES FORTE PRIORITE
Si j'ai la bonne réponse je gagne 1pt
Si je n'ai pas la bonne réponse, la bonne réponse m'est donnée.
La vérification de la réponse ne dépend pas des minuscules ou majuscules
ex :
“Quelle est la capitale de la France”, je réponds PARIS, le jeu me félicite et m'annonce que j'ai gagné 1 pt
“Quelle est la capitale de l'Espagne”, je réponds madrid … j'ai gagné 1 pt
“Quelle est la capitale de l'Érythrée”, je réponds Assab, le jeu m'annonce que la bonne réponse est Asmara, je n'ai pas gagné de points
En tant que joueur, je veux jouer une partie de quizz, de façon à m'amuser en vérifiant mes connaissances. FORTE PRIORITE
10 questions sont posées au joueur
Seules des questions auxquelles le joueur n'a jamais répondu juste lui sont posées.
S'il n'y a plus assez de questions “nouvelles”, le joueur est invité à charger d'autres questions.
La partie est enregistrée à la fin de la partie, i.e. que si on interrompt la partie en cours de jeu, elle n'est pas enregistrée.
ex :
Je lance une partie à mon nom
10 questions me sont posées et je réponds juste à 4 questions
A la fin de la partie le système me signale que j'ai gagné 4 points et que la partie est enregistrée sous mon nom.
En tant que joueur, je veux consulter les différentes parties que j'ai réalisées, de façon à vérifier ma progression PRIORITE FAIBLE
Je peux voir les dates de parties, le nombre de points marqués par partie.
ex.
Etant donné que J'ai joué 5 parties….
Je visualise les 5 parties avec leur date et le nombre de points marqués.
Je peux en savoir plus sur une partie : durée de la partie, et questions posées et mes réponses ….
En tant que producteur de questions, je veux pouvoir ajouter des questions à la base de questions PRIORITE MOYENNE
Une question est composée d'une question et d'une réponse.
On ne vérifie pas si la question existe déjà, on suppose que le producteur sait ce qu'il fait.
ex.
Etant donné que dans ma base, il y a déjà 3 questions.
J'ajoute la question “Praia est la capitale de quel pays?” réponse Capt Vert
Il y a 4 questions dans la base à présent dont ma nouvelle question.
En tant que joueur, je veux pouvoir charger de nouvelles questions PRIORITE MOYENNE
ex.
Etant donné que j'ai déjà 3 questions dans ma base.
Je charge la nouvelle série de questions datée du 27/10
J'ai maintenant toutes les questions que j'avais avant plus les nouvelles questions.
Attention les références aux questions ne sont pas perdues, i.e. que si j'ai déjà répondu à la question sur “la capitale de Paris”, la question ne me sera pas reposée.
V1A : Plusieurs joueurs
V1B : Des catégories de questions.
V1C : Des difficultés de questions.
V1D : Persistance : les questions sont stockées dans un fichier, de même pour les parties.
A faire
Conception : V0 (Environ 1/2 heure intense)
Conseils
Concevez l'application V0 à deux (i.e. UC, Classes, un diagramme de séquence pour analyser le déroulement d'une partie est conseillé, MAIS ne faîtes que ce qui vous paraît vraiment utile)
Partagez le travail à réaliser
Prévoyez les tests à réaliser pour chacune des histoires, vous pouvez même faire du TDD
Enrichissez les histoires si besoin pour être sûrs de savoir les tester.
![8-O](/lib/images/smileys/icon_eek.gif)
Sauvegardez une copie de votre conception quelle qu'elle soit : photo ou autre. Vous utiliserez cette conception pour faire le point à la fin entre votre travail initial et la réalisation. Vous ne serez pas noté dessus, vous devez apprendre à vous évaluer.
Vous pouvez à partir de là choisir de focaliser sur une histoire ou de traiter plusieurs histoires en même temps.
Développement : V0
Intégration : V0
Mettez vos codes en commun
Testez une histoire et vérifier que vous pouvez dire qu'elle est terminée, c'est à dire que tous les tests passent.
Faîtes les tests sur toutes les histoires, soyez itératif.
![8-O](/lib/images/smileys/icon_eek.gif)
Faîtes une copie de votre architecture;
vous la comparerez avec la précédente et la suivante. Il s'agit ici pour vous de
déterminer si vous aviez fait des erreurs ou des incomplétudes,
déterminer si vous saurez faire mieux la prochaine fois ou non, qu'avez-vous appris éventuellement?
identifier les points que vous aimeriez améliorer (liste des TODO dans le code, le modèle, l'architecture).
V1 : Choisissez une extension, complétez éventuellement les histoires et allez jusqu'au code correspondant.
![8-O](/lib/images/smileys/icon_eek.gif)
reprendre la question précédente.
Si vous êtes ici et que vous en avez envie ajoutez une autre extension.
Quelques trucs utiles
Pour Interroger vous pouvez utiliser:
import javax.swing.JOptionPane;
....
String m = JOptionPane.showInputDialog("Anyone there?");
System.out.println(m); // juste pour expliquer ici
JOptionPane.showMessageDialog(null, "A oui, il y a quelqu'un");
A RENDRE