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.