Software Test Documentation Chat System Sommaire

Transcription

Software Test Documentation Chat System Sommaire
Software Test Documentation
Chat System
INSA de Toulouse
DGEI 4ème année Informatique
Cours de COO - POO
Binome A1B2 : BAUDU Justine et Micouin Coralie
Sommaire
Introduction
I) Tests de connexion et déconnexion
1) Connexion
2) Déconnexion
3) Reconnexion
4) Fermeture de l’application
5) Problèmes avec getLocalHost et certaines configurations
réseaux.
II) Tests d’émission et de réception de messages
1) Envoi à un utilisateur
a) Choisir le destinataire
b) Annuler choix du destinataire
c) Envoi d’un message
d) Envoi d’un message vide
2) Envoi à tous
IV) Tests d’émission et de réception d’un fichier
1) Envoi à un utilisateur
a) Choix du destinataire
b) Choix du fichier
c) Réception d’un fichier
d) Sauvegarde du fichier
2) Envoi à tous
3) Problèmes sur certains ordinateurs
Introduction
Ce document est réalisé dans le cadre du projet “ChatSystem“ en
Conception et Programmation Orientée Objet afin d’aider la compréhension
du fonctionnement de notre application stockée à l’adresse suivante :
http://code.google.com/p/chatsysteme-justine-baudu-coralie-micouin/.
Il permet de comprendre le fonctionnement de l’application par la
réalisation de courts scénario de tests.
I) Tests de connexion et déconnexion
1) Connexion
Une fois l’application lancée, entrez un pseudonyme et cliquez sur le
bouton “Se Connecter”. Si vous n’entrez pas de pseudonyme la connexion
s’effectue quand même.
L’application envoie un Hello en broadcast, l’écran de chat apparaît
en arrière plan et une fenêtre de notification de connexion, en premier
plan, permet seulement d’indiquer à l’utilisateur qu’il est bien connecté.
2) Déconnexion
Si l’utilisateur est déconnecté, il n’a pas accès à cette fonction en
effet, dés que l’utilisateur se déconnecte ou accède pour la première fois
au chat, il n’a aucun bouton pour se déconnecter.
Pour effectuer ce test, il faut donc être connecté et avoir accès à
l’écran principal. Appuyez alors sur le bouton “Se Déconnecter”.
Une fenêtre de confirmation apparaît alors si vous appuyez
sur “Annuler”, vous retournez sur l’écran principal et si vous appuyez
sur “Confirmer”, un Bye est envoyé à tous les utilisateurs connectés,
l’écran d’accueil du chat apparaît en arrière plan et un fenêtre de
notification de déconnexion, en premier plan, permet d’indiquer à
l’utilisateur qu’il est déconnecté.
3) Reconnexion
A la suite d’une déconnexion, on peut se reconnecter au chat. Il suffit
de cliquer sur le bouton “Se connecter” en entrant ou non son pseudonyme
au préalable. Tout se déroule alors comme lors de la première connexion.
4) Fermeture de l’application
Pour fermer l’application, il suffit de fermer la fenêtre principale ou
d’accueil. Si l’utilisateur est connecté, cas de la fermeture depuis la fenêtre
principale, l’application enverra alors un message Bye à tous les autres
utilisateurs connectés et fermera les sockets d’émission et de réception. Si
l’utilisateur est déconnecté, cas de la fermeture depuis la fenêtre d’accueil,
l’application fermera seulement les sockets.
5) Problèmes avec getLocalHost et certaines configurations
réseaux.
La méthode getLocalHost ne renvoie pas toujours la même information en
fonction de la configuration. C’est ainsi que getLocalHost renvoyait toujours
l'adresse de loopback sur le réseau sur lequel le chat a été testé alors que
cette méthode renvoyait bien l’adresse IP sur son réseau en salle de TP.
Évidemment cela posait des problèmes car les chats ne pouvait alors pas
communiquer. Après quelques recherches nous avons trouvé comment
récupérer une adresse IP sur une interface réseau :
http://humbert-florent.developpez.com/java/reseau/avance/.
Nous avons donc repris des morceaux de leur code pour la connexion :
Enumeration<NetworkInterface> interfaces;
interfaces = NetworkInterface.getNetworkInterfaces();
NetworkInterface currentInterface = interfaces.nextElement();
Enumeration<InetAddress> addresses =
currentInterface.getInetAddresses();
moi.setMonIP(addresses.nextElement()) ;
Avec ce code on récupère bien une adresse IP sur le réseau local
(première interface). Mais il est possible que cela ne fonctionne pas si la
configuration du réseau est différente.
Ainsi le réseau sur lequel on a testé notre chat ne permettait pas de
communiquer avec les chats faits par d’autres binômes à cause du
getLocalHost, ni de faire communiquer leur chat seul (sans le nôtre).
II) Tests d’émission et de réception de messages
1) Envoi à un utilisateur
a) Choisir le destinataire
Pour envoyer un message, on doit d’abord être connecté. En effet
le bouton “Envoyer à …” n’est accessible qu’à partir de la fenêtre de chat,
dans laquelle on est forcément connecté. Lorsque l’utilisateur clique sur ce
bouton, une fenêtre de choix de destinataires va apparaître avec une liste
déroulante. Il pourra alors choisir le destinataire. Aussi si aucun utilisateur
n’est connecté, le bouton n’a aucun effet.
b) Annuler choix du destinataire
L’utilisateur, après avoir cliqué sur le bouton “Envoyer à …”, peut
aussi annuler son action, tout simplement en cliquant sur “Annuler”. Alors,
rien n’est envoyé, la fenêtre de choix disparaît et l’utilisateur a de nouveau
accès à l’écran principal dans la même configuration que précédemment.
c) Envoi d’un message
Dès qu’il aura choisi le destinataire, l’application enverra le message
que l’utilisateur avait écrit auparavant. De plus, le message sera effacé de
la zone d’écriture des messages. Et un message (“De moi, mon_nom a
destinataire mon_message”) apparaît dans la fenêtre de discussion.
d) Envoi d’un message vide
S’il n’a rien écrit, il ne se passe rien. Après avoir choisi le
destinataire, rien n’est envoyé, la fenêtre de choix disparaît et l’utilisateur
a de nouveau accès à l’écran principal dans la même configuration que
précédemment.
2) Envoi à tous
L’utilisateur a la possibilité d’envoyer un message à tous les
utilisateurs connectés. Pour cela il faut évidemment qu’il soit lui même
connecté et qu’il ait accès au bouton “Envoyer à tout le monde”. Si
l’utilisateur clique sur ce bouton, l’application enverra le message qu’il
avait tapé, seulement s’il n’est pas vide, à tous les utilisateurs en unicast.
Lorsqu’il appuie, le texte est aussitôt effacé (pour lui permettre de
taper autre chose) et un message (“De moi, mon_nom a tout le monde
mon_message”) apparaît dans la fenêtre de discussion.
III) Tests d’émission et de réception d’un fichier
1) Envoi à un utilisateur
Pour envoyer un fichier, on doit dans un premier temps être connecté
car le bouton “Envoyer un fichier à …” n’est accessible que depuis l’écran
principal. Il suffit alors d’appuyer sur le bouton “Envoyer un fichier à …”,
apparaît alors une fenêtre qui permet tout d’abord de choisir le destinataire
de notre fichier. Pour cela tout se passe comme pour le choix du
destinataire d’un message. Et c’est seulement après avoir choisi le
destinataire que l’on choisit le fichier à envoyer.
a) Choix du destinataire
L’utilisateur doit d’abord choisir le destinataire. Il peut sélectionner,
dans la liste déroulante, un utilisateur parmi la liste des utilisateurs
connectés ou annuler son action, dans ce dernier cas rien ne sera envoyé.
b) Choix du fichier
Après avoir choisi le destinataire, il lui sera demandé de choisir le
fichier à envoyer. Il ne peut choisir qu’un fichier car le bouton “Choisir”
n’est valide que si le fichier sélectionné est un fichier. Une fois le fichier
choisi une notification de fichier est envoyé (en même temps qu’un
message automatique indiquant que l’on a envoyé un fichier). Si
l’utilisateur annule le choix, il ne se passe rien et il retourne sur l’écran
principal.
c) Réception d’un fichier
Lorsqu’un ami veut nous envoyer un fichier, on a une fenêtre de
choix qui apparaît. On peut refuser ou accepter le fichier en appuyant
sur “Oui” ou “Non”. Si le fichier est refusé, l’émetteur de la demande
recevra un AckFile avec un ack à false. Sinon, l’utilisateur devra choisir le
lieu de téléchargement du fichier et un AckFile sera envoyé avec ack égal
à true.
d) Sauvegarde du fichier
Une fois le fichier accepté, il faut choisir le lieu de téléchargement du
fichier. L’utilisateur peut donc choisir le dossier où il souhaite enregister le
nouveau fichier ou annuler la sauvegarde. Si il annule la sauvegarde, la
connexion TCP avec l’utilisateur distant n’est pas réalisée et l’ami reçoit un
AckFile avec un ack à false. Sinon une connexion TCP est ouverte et le
fichier est téléchargé dans le dossier demandé. Attention cependant, si on
reçoit deux fichiers avec un intervalle de temps trop court entre les deux, il
se produit une erreur non traitée, car la première connexion TCP n’est pas
terminée.
2) Envoi à tous
L’utilisateur a la possibilité d’envoyer un fichier à tous les utilisateurs
connectés. Pour faire ce test, il faut évidemment qu’il soit lui même
connecté et qu’il ait accès au bouton “Envoyer un fichier à tous”. Si
l’utilisateur clique sur ce bouton, l’application enverra un message de
notification de fichier à tous les utilisateurs en unicast via le protocol UDP.
À la réception de ce message, l’application distante fait apparaitre
une fenêtre demandant à l’utilisateur s’il souhaite recevoir le fichier. On
peut alors tester deux choses : si on accepte ou si on refuse. On revient
alors au cas de l’émission d’un fichier à destination d’un utilisateur. En
effet les AckFile envoyés par les applications distantes seront traitées
séparément par notre application.
3) Problèmes sur certains ordinateurs
Nous avons rencontré un petit problème, pour l'envoi de fichiers avec
certains PC. Avec les PC portables reliés au wifi, il n'y a pas de problème.
Mais avec les PC fixes reliés par le routeur, une exception été levée :
java.net.SocketException: Protocol family unavailable.