concevoir et developper un systeme automatise pour tester flamingo xl l

54 211 0
concevoir et developper un systeme automatise pour tester flamingo xl l

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Université nationale du Vietnam, Hanoi INSTITUT FRANCOPHONE INTERNATIONAL PENTALOG Concevoir et développer un système automatisé pour tester Flamingo XL Mémoire présenté en vue de l'obtention du grade Master informatique, Spécialité "Réseaux et Systèmes Communicants" de l'Université Nationale du Vietnam, Hanoi Réalisé par Anna SAELEE Promotion 17, option RSC Encadres par NGUYEN Manh Tuong LE THI THU Hoa Remerciements Je tiens `a remercier mes encadreurs, monsieur NGUYEN Manh Tuong, le directeur du Pentalog a` Hanoi, et Madame LE THI THU Hoa, le chef du projet pour ses disponibilit´es et ses conseils Ils m’aidaient toujours a` passer tous les moments difficiles et m’ont guid´e a` aller dans la bonne direction du projet Je voudrais remercier monsieur Victor Moraru qui m‘a conseill´e de faire le stage chez Pentalog Je tiens ´egalement a` remercier tous les coll`egues du Pentalog qui m’ont appris les informations du projet et m’ont support´e `a ˆetre confortable pendant la p´eriode du stage, et mes amis, qui m’ont aid´e avec des conseils, des remarques et des critiques R´ esum´ e Actuellement, l’informatique a beaucoup d’int´erˆet dans la vie quotidienne, par exemple : la communication, la distribution des nouvelles et l’´education, etc Il existe pas mal de technologies afin de bien profiter de ces int´erˆets : des sites web, des applications mobile, etc Pour avoir la garantie de logiciel, le processus du test est appliqu´e dans le projet du d´eveloppement de logiciel Le site web est un moyen qu’on utilise pour diffuser des informations a` tout le monde a` travers l’Internet, donc le test `a la main est suffit en raison de v´erifier des contenus affich´es Comme l’informatique n’est jamais rester immobile, l’application Web a ´et´e cr´e´e pour qu’un utilisateur peut interagir avec le site web plus que la lecture des informations Autrement dit que le test devient un processus important pour garantir la qualit´e de l’application Web Afin de tester un logiciel, nous avons diff´erents m´ethodes comme le test unitaire, le test d’int´egration, etc Pourtant, le test du site web peut ˆetre faire `a la main Comme le test dans la fa¸con d’humain peut avoir des erreurs et prend beaucoup de temps, pour cette raison le test d’automatisation du web a ´et´e d´evelopp´e Dans ce travail, nous avons le but de cr´eer des scripts pour le test d’automatisation du web sur le produit Flamingo XL d’Anevia Ces scripts doivent ˆetre r´eutiliser dans l’avenir En plus, le nombre du scripts r´eussis dois ˆetre au minimal de 80% des cas de test total Abstract Today, Information Technology (IT) has a lot of interest in daily life, such as : the communication, the distribution of news and the education, etc There are a lot of technologies in order to benefit these interests : websites, mobile applications, etc For the software warranty, the test process is applied in the software development project The website is one way we use to distribute information to everyone through the Internet, so the test by hand is simply due to check the displayed content As IT is never standing still, the web application was created for a user can interact with the website more than reading the information In other words that why the test becomes an important process to ensure the quality of the Web application To test the software, we have different methods such as the unit test, integration testing, etc However, the test of the website can be done manually As the test in the human’s way may have the error and may take a long time, a web automation test was developed In this work, we have to create scripts for the web automation test on a product of Anevia, Flamingo XL These scripts must be reused in the future In addition, the number of successful scripts have to be at minimum 80% of the total test Table des mati` eres Introduction 1.1 Anevia 1.2 Flamingo XL 1.3 Contexte du travail 1.4 Probl´ematique Bibliographie 2.1 IPTV 2.2 2.3 Flux de transport MPEG2 Packet sniffer 2.4 Testerman 10 2.5 Test d’automatisation 13 Conception et Impl´ ementation 3.1 Conception du projet 18 18 3.2 Impl´ementation 19 Exp´ erimentation 33 Conclusion et Perspective 5.1 Conclusion 36 36 5.2 Perspective 37 A Exemple du biblioth` eque 38 B Exemple des scripts ATS 42 C Exemple du codage de Selenium Webdriver 45 Bibliography 47 i Table des figures 2.1 2.2 Architecture du syst`eme IPTV Architecture point-`a-point de IPTV 2.3 Tableau de Programme d’Information Sp´ecifique (PSI) 2.4 Tableau de l’Association de Programme (PAT) 2.5 2.6 Tableau de la Carte de Programme (PMT) Tableau de l’Acc`es Conditionnel (CAT) 8 2.7 Infrastructure de Testerman 12 2.8 M´ethodes de tests 14 3.1 Services de Flamingo XL 19 3.2 Fenˆetre de Qtesterman 23 3.3 3.4 Exemple de la biblioth`eque utilis´e dans le projet 29 30 4.1 Architecture du syst`eme IPTV 34 Diagramme de d´eveloppement d’un script ATS ii Chapitre Introduction Aujourd’hui, l’Internet est connu par tout le monde Chaque personne l’utilise pour diff´erent but, comme les ´etudes, les travaux et les divertissements, etc Pour ces raisons, l’application Web a ´et´e d´evelopp´ee afin de r´epondre aux besoins des utilisateurs Actuellement, il existe de nombreuses applications Web, qui sont souvent utilis´es pour acc´eder a` des services a` distant Parmi ces applications Web, il y en a des sites-web qui exigent d’avoir un haut niveau de s´ecurit´e, une correction des donn´ees et une consistance des informations, etc par exemple : le site E-commerce, le site de la banque, etc Par cons´equent, le test devient tr`es important pour ce genre d’application Web Normalement, le test d’application Web se fait par les humains C’est-`a-dire, ils testent l’application a` la main En cons´equence, il y a une forte possibilit´e qu’ils fassent des erreurs ou ne respectent pas l’enchaˆınement des ´etapes de test Pour ces raisons, l’utilisation de test d’automatisation est d´evelopp´e Ce test utilise des scripts afin de v´erifier des fonctionnalit´es et la qualit´e de l’application Web, comme : le temps d’attente est acceptable, la vue de page est correct dans diff´erent navigateur Web, etc Un des services qu’on peut adapter avec l’application Web est la distribution des chaˆınes TV Celle-l`a diffuse le multim´edia (l’audio et le vid´eo) sur l’adresse IP En plus, on peut aussi distribuer des chaˆınes de satellite vers le r´eseau local Donc, on n’a pas besoins d’installer pleins d’´equipements pour pouvoir regarder des chaˆınes diffus´es par le satellite Cette technologie est appel´ee IPTV (Internet Protocol Television) et OTT (Over-The-Top TV) 1.1 Anevia En 2003, Anevia est l’un des leader dans la cr´eation de l’infrastructure de logicielles pour la diffusion de la t´el´evision en direct et `a la demande Les produits d’Anevia ont ´et´e d´eploy´es avec succ`es sur diff´erents march´es tels que les m´edias, les op´erateurs t´el´ecom Tier-1 et Tier-2 et dans de nombreuses entreprises priv´ees ou publiques Anevia a commenc´e le d´eveloppement de Vid´eo dans le syst`eme CDN (Content Delivery Networks) qui offrent aux t´el´espectateurs la libert´e de choisir ce qu’ils veulent regarder `a la t´el´evision, partout et a` tout moment Les solutions d’Anevia rendent les CDNs plus efficaces, tout en permettant aux op´erateurs de r´eduire le stockage et la bande passante Ces solutions sont par nature con¸cues pour offrir la meilleure exp´erience multi-´ecrans (NPVR, Timeshifting , OTT et/ou IPTV) `a tous les utilisateurs Sur le march´e d’entreprise, les produits d’Anevia ont ´et´e d´eploy´es sur tous les continents par des centaines d’hˆotels, d’´etablissements, d’enseignement, de soci´et´es priv´ees, etc qui souhaitent diffuser de la vid´eo en direct et `a la demande 1.2 Flamingo XL Flamingo XL est l’un des produits d’Anevia qui est d´edi´e au march´e d’hospitalit´e (hˆopitaux, hˆotels) Les solutions propos´ees permettent de diffuser sur le r´eseau local `a la fois la t´el´evision en direct et les contenus enregistr´es Apr`es avoir re¸cu le signal TV et celui de la radio en direct par satellite, par cˆable et num´erique terrestre, le Flamingo XL les transf`ere sur des r´eseaux IP pour les ordinateurs, les set-top boxes, les t´el´eviseurs modernes et toute autre appareil avec un acc`es r´eseau qui est reli´e avec le Flamingo XL Nous pouvons se connecter a` l’interface Web et de piloter le Flamingo XL en utilisant la connexion SSH 1.3 Contexte du travail Pour assurer la qualit´e du Flamingo XL, le test d’automatisation est adapt´e dans le projet Le script cr´e´e dans ce projet doit ˆetre r´eutiliser dans l’avenir afin de minimiser le temps du test Le langage sp´ecifique du projet est le Python Les outils sp´ecifiques du projet sont le Testerman et le Selenium-RC Ces deux outils permettent de cr´eer des tests automatis´es avec l’application Web ; le Testerman est l’outil principal qui g`ere l’ex´ecution du test d’automatisation, et le Selenium-RC fonctionne comme un sonde permettant de lancer le test sur l’application Web Le d´eveloppement du projet est divis´e en Compr´ ehension du produit : Pour mieux comprendre et d´evelopper les scripts de test d’automatisation, nous devons bien comprendre les fonctionnalit´es et les services fournit par le produit sous test V´ erification des cas de test : Apr`es avoir bien compris le produit, nous devons v´erifier les cas de test reli´es avec ce produit Comme il existe plusieurs version de produit, donc nous devons valider les ´etapes dans les cas de test en raison d’assurer la coh´erence entre le produit sous test et les cas de test utilis´es S’il y a beaucoup de diff´erent, il faut mettre `a jour les cas de test Conception de la structure du codage : Pour que le codage du projet sera bien saisi par tout le monde dans l’´equipe, il est n´ecessaire de concevoir la structure des biblioth`eques et des scripts de test Ce-l`a peut nous aider a` augmenter la qualit´e du codage, par exemple : ´eviter la duplication de la mˆeme fonctionnalit´e dans une biblioth`eque Installation des outils : Nous faisons la pr´eparation de l’ordinateur, comme l’installation de plug-in Firebug et FirePath dans le navigateur Firefox, etc D´ eveloppement des biblioth` eques et des scripts de test d’automatisation : Nous devons d´evelopper les biblioth`eques en Python avant de les d´eployer dans les scripts de test d’automatisation 1.4 Probl´ ematique L’objectif g´en´eral du projet est de transformer le cas de test du Flamingo XL environ 80% a` utiliser les scripts du test d’automatisation Pourtant, ces scripts doivent ˆetre r´eutiliser avec d’autres produits dans la famille de Flamingo (diff´erente version ou plate-forme) Parfois, nous ne pouvons pas transformer le cas de test en script parce qu’il pourra provoquer des probl`emes, par exemple : on peut simuler la rupture de la connexion avec la commande ”sudo ifconfig eth0 down”, mais cette commande peut inciter un probl`eme de connexion sur le serveur C’est-`a-dire, on ne peut pas r´etablir la connexion avec la commande a` distance Donc, il faut ´eviter de transf´erer le cas de test comme ¸ca en script Chapitre Bibliographie Dans cette partie, nous d´ecrivons les informations reli´ee au test d’automatisation dans le domaine du streaming Premi`erement, nous commen¸cons par pr´esenter le protocole IPTV qui nous permet de diffuser la vid´eo de satellite vers le r´eseau Deuxi`emement, nous montrons les informations du flux de transport MPEG2 (TS MPEG2) Troisi`e-mement, nous abordons les outils de capture des trames Quatri`emement, on pr´esente l’outil principal du projet qui nous permet de faire le test d’automatisation, le Testerman Enfin, nous discutons sur les logiciels permettant de tester des applications Web 2.1 IPTV Dans [15], IPTV signifie ”Internet Protocol Television”, et n’importe quel utili- sateur avec un outil IP ,comme le smartphone peut obtenir le service IPTV n’importe o` u et a` tout moment, tant que l’utilisateur peut acc´eder `a l’Internet Les architectures de syst`eme IPTV sont pr´esent´es dans la figure 2.1 Cette derni`ere illustre les principaux composants d’un syst`eme IPTV : Les serveurs d’acquisition : ils codent la vid´eo et ajoutent des m´etadonn´ees de gestion des droits num´eriques (Digital Rights Management : DRM) Les serveurs de distribution : ils fournissent la mise en cache et la QoS contrˆole Les cr´eateurs de la vid´eo a` la demande (VoD) et les serveurs : ils conservent une biblioth`eque de contenus VoD cod´e pour fournir des services de VoD Les routeurs IP : ils acheminent les paquets IP et r´eacheminent rapidement les paquets en cas de d´efaillance de routage Figure 4.1: Architecture du syst`eme IPTV contraire, les scripts des ”Streaming Settings” et ”Web Radio” ont beaucoup de cas de test ´echou´es Le remarque de chaque cat´egorie montre la raison principal des ´echec de script Concernant le pourcentage des scripts ´echou´es, nous pouvons dire que la source du streaming qui est incontrˆolable est le facteur important influant les ATS du ”Web Radio” Un autre facteur qu’on ne peut pas ´eviter est le climat, ce facteur influence la plupart de script du service ”Modules Settings” La raison principal d’´echec est la bande passante du r´eseau, comme nous utilisons le script a` recevoir la diffusion de la vid´eo donc il ne peut pas valider s’il y a beaucoup d’erreur des images re¸cus En cons´equence, nous pouvons dire qu’on a besoin pas mal de d´ebit afin de valider les cas de test sur la diffusion de la vid´eo Il y a la remarque du service ”Web TV” qui est reli´e a` la configuration du ViaMotion qui est un produit d’Anevia permet de distribuer la vid´eo a` partir d’un disque, cela peut donner l’erreur lorsqu’on n’a pas bien configur´e l’acc`es de la vid´eo du ViaMotion Le probl`eme de la bande passante provoque aussi l’´echec sur les ´el´ements de la page Web, parce que le processus du Selenium-RC doit attendre jusqu’`a la page Web sera charg´e Donc si la page n’est pas r´eussi a` tous charg´e dans le temps d’attente, l’´etape suivante du Selenium-RC sera ´echou´e et il rendra l’erreur ”timeout” ou ne pas pouvoir trouver l’´el´ement pr´ecis Pourtant d’autre version du Selenium, le Selenium Webdriver, peut r´esoudre ce probl`eme Nous avons montr´e un exemple de script qui utilise le Selenium-RC dans l’annexe C Pourtant, nous ne pouvons pas l’appliquer dans le projet parce que les commandes du Selenium Webdriver sont diff´erentes de celle du Selenium-RC C’est-`a-dire, nous devons faire la mise a` jour de toutes les biblioth`eques et tous les scripts ATS afin de changer a` utiliser le Selenium Webdriver Apr`es avoir eu les r´esultats des scripts ATS en s´eparant le service du Flamingo XL, nous avons lanc´e tout un ensemble de script ATS Le r´esultat final montre que 66 34 pourcentage de test sont pass´e, donc nous devons valider le reste de 34 pourcentage a` la main Normalement, pour faire les cas de test d’environ 90 cas de test, ¸ca prend environ homme-jour (manday) Appliquant le test d’automatisation,ce travail prend environ homme-jour : un demi-jour pour l’ex´ecution de test d’automatisation et le reste pour valider les cas de test ´echou´e a` la main Ce r´esultat montre que l’utilisation de test d’automatisation peut diminuer le temps pour tester l’application Web Par contre, nous prenons pas mal de temps pour d´evelopper les biblioth`eques et les scripts ATS 35 Chapitre Conclusion et Perspective 5.1 Conclusion Afin de r´eussir ce projet, nous avons ´ecrit des biblioth`eques sur les services de Flamingo XL et 89 scripts ATS pour les cas de test En plus, nous avons fait la mise a` jour des biblioth`eques pour que les scripts ATS d´evelopp´es peuvent fonctionner sur les diff´erentes version du produit Dans ce projet, nous avons appris le test d’automatisation en utilisant les outils Testerman et Selenium-RC Nous trouvons qu’on peut ´ecrire des scripts de test en diff´erents langages par l’utilisation de Selenium-IDE Par contre, nous ne pouvons pas les ex´ecuter comme un ensemble de test C’est-`a-dire, le testeur doit lancer le script, attendre jusqu’`a finir un test et continuer avec un autre script Alors l’utilisation de Testerman peut nous aider a` ´eviter cette situation Nous trouvons que le Testerman est un outil qui permet de d´evelopper des scripts de test d’automatisation sur plusieurs types du SUT Il existe de diff´erentes sondes du Testerman qui nous autorisons de tester des syst`emes vari´es, comme : ”SSH Probe” (connecter a` des ordinateurs `a distants), ”MySQL Probe” (contrˆoler une base de donn´ees SQL) et ”Directory Watcher Probe” (v´erifier des fichiers), etc Pourtant, le langage disponible pour d´evelopper des scripts du test d’automatisation avec Testerman est seulement le Python Donc c’est obligatoire d’utiliser juste le langage Python afin de faire les scripts ATS Nous avons essay´e une autre version de Selenium, Selenium Webdriver, avec quelques scripts du projet Apr`es avoir re¸cu le r´esultat, nous d´eduisons que cette version de Selenium prend moins de temps pendant l’ex´ecution parce qu’il n’attend pas que la page Web soit charg´e compl`etement afin de continuer a` lancer la commande qui est suivant de la charg´e une page Web Pourtant, il y a des diff´erences entre les commandes de Selenium-RC et de Selenium Webdriver Par cons´equent, il est n´ecessaire 36 de faire la mise a` jour sur les biblioth`eques et les scripts ATS afin d’appliquer le Selenium Webdriver au lieu de Selenium-RC, cela prendra pas mal de temps Concernant le temps pour d´evelopper les biblioth`eques et les scripts ATS, nous pensons que le test d’automatisation n’est pas toujours bien pour tester une application Web Comme la cr´eation de biblioth`eque et de script ATS prend pas mal de temps, donc il est mieux si ces biblioth`eques et script ATS pourraient ˆetre r´eutiliser dans l’avenir Autrement dit que l’utilisation du test d’automatisation sur l’application Web est bien pour des sites web qui ont plusieurs versions et tous sont bas´es dans la mˆeme structure 5.2 Perspective Comme l’utilisation du Selenium Webdriver rend le r´esultat efficace que le Selnium-RC, et la diff´erence entre les deux outils est juste la structure des commandes utilis´ees Par cons´equent, nous pensons que le d´eveloppement du script permet d’ajouter des lignes de code suppl´ementaire et de transformer le code du Selnium-RC au Selenium Webdriver pourrait diminuer le temps la transformation du code En plus, le Selenium est un outil open-source donc nous pouvons aussi cr´eer un nouveau module pour soutenir cette transformation 37 Annexe A Exemple du biblioth` eque Un exemple de biblioth`eque en Python m´elangeant avec les commandes et localisateurs du Selenium-RC Fonction g´en´eral import sys def UtilsLog(self=None, logMessage=None): """ this function gives additional information to testerman log() function """ if logMessage == None : return False#quit when has nothing to log try: className = self. class . name except: className = "None" try: methodName = sys._getframe(1).f_code.co_name methodName += "()" except: methodName = "None" #call testerman log log("%s.%s %s" % (className, methodName, logMessage)) length = len("%s.%s %s" % (className, methodName, logMessage)) underscore = ’’ while length: underscore += ’_’ length -= log(underscore) return True def IsTextPresent(selenium, text): """ This check text presenting in GUI 38 @element: location of element Returns: Boolean value """ ret = StateManager(True) selenium.send(["isTextPresent", str(text)]) alt([ [ selenium.RECEIVE(template = True), lambda: ret.set(True), ], [ selenium.RECEIVE(template = any_or_none()), lambda: ret.set(False), lambda: UtilsLog(None, "%s not found" %str(text)), ], ]) return ret.get() def IsElementPresent(selenium, element): """ This check a xPATH presenting in GUI @element: xpath Returns: Boolean value """ ret = StateManager(True) selenium.send(["isElementPresent", element]) alt([ [ selenium.RECEIVE(template = True), lambda: ret.set(True), ], [ selenium.RECEIVE(template = any_or_none()), lambda: ret.set(False), lambda: UtilsLog(None, "%s not found" %element), ], ]) return ret.get() def getAttributeValue(selenium,xpath): """ This get the value of attribute @xpath: xpath to attribute Returns: attribute’s value """ val = ’’ if not IsElementPresent(selenium,xpath): UtilsLog(None, ’ERROR: xpath does not present’) return val selenium.send(["getAttribute", xpath]) selenium.receive(value = ’val’) 39 val = value(’val’) return val def changeLanguage(selenium, lang): """ This change laguage preference @lang: language english or french Returns: Boolean """ ret = False selenium.send(["open", "/ififad/login/index.php"]) selenium.send(["waitForPageToLoad", "30000"]) if IsElementPresent(selenium, "xpath=//select[@id=’chooselang_jump’]"): selenium.send(["select", "xpath=//select[@id=’chooselang_jump’]", lang]) try: selenium.send(["waitForPageToLoad", "30000"]) except Exception as e: UtilsLog(None, e) if lang == "English (en)": if IsTextPresent(selenium, "Log"): ret = True else: if IsTextPresent(selenium, "onnexion"): ret = True else: UtilsLog(None, "Not find //select[@id=’chooselang_jump’]") return ret Fonction sp´ecifique import sys from time import sleep from sampleUtils import UtilsLog, IsTextPresent class IFIFAD(object): """ This class uses to login and logout in GUI """ def init (self, selenium): self.selenium = selenium self.username = None self.password = None def Login(self, username, password): self.ret = True self.selenium.send(["open", "/ififad/login/index.php"]) self.selenium.send(["waitForPageToLoad", "30000"]) 40 self.selenium.send(["type", "xpath=//input[@id=’username’]", username]) self.selenium.send(["type", "xpath=//input[@id=’password’]", password]) self.selenium.send(["click", "//form[@id=’login’]/div/div/input[@type=’submit’]"]) self.selenium.send(["waitForPageToLoad", "30000"]) sleep(60) if not IsTextPresent(self.selenium, "Rechercher des cours"): self.ret = False return self.ret 41 Annexe B Exemple des scripts ATS Un exemple de se connecter sur le IFIFAD # # # # # # # # METADATA BEGIN description prerequisites 1 # # # # # # # # # # # METADATA END from libs.IFI.ififad import IFIFAD PX_SELENIUM_SERVER_URL = ’http://’ + PX_IP_HOST + ’/’ class login_ififad(TestCase): def body(self): #set up (port mapping) 42 sel = self.mtc[’port’] port_map(sel, self.system[’selenium_rc’]) ObjLogin = IFIFAD(sel) ret = ObjLogin.Login(str(get_variable(’PX_USERNAME’)), str(get_variable(’PX_PASSWORD’))) if ret: setverdict(’pass’) else: setverdict(’fail’) # (port unmapping) port_unmap(sel, self.system[’selenium_rc’]) conf = TestAdapterConfiguration(’local’) conf.bind(’selenium_rc’, ’probe:selenium’, ’selenium’, server_url = PX_SELENIUM_SERVER_URL, rc_host = get_variable(’PX_SELENIUM_RC_HOST’), rc_port = get_variable(’PX_SELENIUM_RC_PORT’), browser = get_variable(’PX_SELENIUM_BROWSER’), auto_shutdown = get_variable(’PX_SELENIUM_CLOSE_BROWSER’)) with_test_adapter_configuration(’local’) verdict = login_ififad().execute() Un exemple de changer la lange de la page web # # # # # # # # # # # # # # # METADATA BEGIN description prerequisites 1 43 # # # # METADATA END from libs.IFI.ififad import changeLanguage PX_SELENIUM_SERVER_URL = ’http://’ + PX_IP_HOST class change_language(TestCase): def body(self): #set up (port mapping) sel = self.mtc[’port’] port_map(sel, self.system[’selenium_rc’]) if changeLanguage(sel,"English (en)"): setverdict(’pass’) else: setverdict(’fail’) # (port unmapping) port_unmap(sel, self.system[’selenium_rc’]) conf = TestAdapterConfiguration(’local’) conf.bind(’selenium_rc’, ’probe:selenium’, ’selenium’, server_url = PX_SELENIUM_SERVER_URL, rc_host = get_variable(’PX_SELENIUM_RC_HOST’), rc_port = get_variable(’PX_SELENIUM_RC_PORT’), browser = get_variable(’PX_SELENIUM_BROWSER’), auto_shutdown = get_variable(’PX_SELENIUM_CLOSE_BROWSER’)) with_test_adapter_configuration(’local’) verdict = change_language().execute() 44 Annexe C Exemple du codage de Selenium Webdriver from time import sleep def IsElementPresent(selenium, element): ret = StateManager(True) selenium.send(["is_element_present", element]) alt([ [ selenium.RECEIVE(template = True), lambda: ret.set(True), ], [ selenium.RECEIVE(), lambda: ret.set(False), ], ] ) return ret.get() class IFIFAD(object): def init (self, selenium): self.selenium = selenium self.usernam = None self.password = None def Login(self, username, password): self.ret = True #open the IFIFAD Home page self.selenium.send(["get", "http://fad.ifi.edu.vn/ififad/login/index.php"]) #find an element by name and type username self.selenium.send(["send_keys", "name=username", username]) #find an element by name and type password self.selenium.send(["send_keys", "name=password", password]) 45 #find an element by xpath and click self.selenium.send(["click", "xpath=//form[@id=’login’]/div/div/input[@type=’submit’]"]) sleep(60) if not IsElementPresent(self.selenium, "id=shortsearchbox"): self.ret = False return self.ret 46 Bibliographie [1] Ishan Banerjee, Bao Nguyen, Vahid Garousi, and Atif Memon Graphical user interface (gui) testing : Systematic mapping and repository Information and Software Technology, 55(10) :1679–1694, 2013 [2] Sebastien Lefevre et al Testerman documentation, release 1.4.0 http:// testerman.fr/docs/current/Testerman.pdf Acc`es Octobre, 2014 [3] Walter Fischer Digital video and audio broadcasting technology : a practical engineering guide Springer, 2008 [4] Nisha Gogna Study of browser based automated test tools watir and selenium International Journal of Information & Education Technology, 4(4), 2014 [5] Dor Green Pyshark, python packet parser using wireshark’s tshark http: //kiminewt.github.io/pyshark/ Acc`es 30 Septembre, 2014 [6] Suchismita Harichandan, Namita Panda, and Arup Abhinna Acharya Scrum testing with backlog management in agile development environment 2014 [7] Raymond Hettinger Transforming code into beautiful, idiomatic python https: //www.youtube.com/playlist?list=WL Acc`es 16 Septembre, 2014 [8] Antawan Holmes and Marc Kellogg Automating functional tests using selenium 2006 [9] Takayuki Itoh, Masayoshi Teraguchi, Yumi Yamaguchi, and Akiko Nishikai Web service simple object access protocol request response processing, February 18 2014 US Patent 8,656,037 [10] Ashish Kulkarni, Nimish Kate, Rohit Ghadshi, and Rushikesh Date Signature based packet sniffer International Journal, 2(3), 2014 [11] Ning Liu, Huajie Cui, S-H Gary Chan, Zhipeng Chen, and Yirong Zhuang Dissecting user behaviors for a simultaneous live and vod iptv system ACM Transactions on Multimedia Computing, Communications, and Applications (TOMCCAP), 10(3) :23, 2014 47 [12] Monika Sharma and Rigzin Angmo Web based automation testing and tools International Journal of Information and Computation Technology, 5(1), 2014 [13] Ryland Sherman, David Waterman, and Yongwoog Jeon The future of online video : An economic perspective 2014 [14] Inderjeet Singh and Bindia Tarika Comparative analysis of open source automated software testing tools : Selenium, sikuli and watir International Journal of Information and Computation Technology, 4(15), 2014 [15] Lee Taekyung et Jeon Junri Yim Jaegeol, Lee Gyeyoung Review of iptv system architectures 2014 48 [...]... Actuellement, les clients suivants sont disponibles : 1 un client d’interface de ligne de commande : il peut ˆetre utilis´e pour appeler les ex´ecutions de la suite de tests `a partir d un script shell, ou un Makefile 2 une multi-plate-forme : nomm´e QTesterman qui fournit un IDE pour concevoir, ex´ecuter, contrˆoler et analyser les suites de test 3 un client Web lightweigth : il est limit´e `a l ex´ecution... HTML avec le lien du Web site google# Go to Google 25 #Utilisation du localisateur "link" est# link="Google" 7 Le localisateur ”css” Le localisateur ”css” permet de s´electionner l ´el´ement en utilisant les s´electeurs CSS Ce localisateur fournit un bon ´equilibre entre la structure et les attributs dans le page du site Web #Dans l exemple... #Dans l exemple du codage HTML du localisateur "name", on peut specifier le deuxieme bouton avec le localisateur "css" comme suivant# css="div[id=’pancakes’] > button[value=’Blueberry’]" 8 Le localisateur ”ui” Le localisateur ”ui” est le nouveau localisateur qui permet de localiser un ´el´ement en r´esolvant la chaˆıne UI sp´ecifi´ee a` un autre localisateur et l ´evaluer Afin d’utiliser ce localisateur,... pour simuler l action de l utilisateur lorsqu’il clique sur le bouton ”Fermer” dans la barre de titre d’une fenˆetre ou un onglet Dans la figure 3.3, c’est l exemple d’une biblioth`eque qui repr´esente l utilisation des commandes de Selenium dans le fichier Python (la biblioth`eque du projet) Cet 28 exemple montre qu’on peut utiliser plusieurs localisateurs pour sp´ecifier les ´el´ements d un page Web... seulement un ´el´ement qui a l attribut ”id” Par cons´equence, nous pouvons sp´ecifier seulement cet ´el´ement avec le localisateur ”id” #Il y a 2 possibilites de speficier l element de la forme dans le codage HTML ci-dessus# id="login" login 3 Le localisateur ”name” Le localisateur ”name” permet de s´electionner l ´el´ement avec l attribut ”name” sp´ecifi´e Cependant, il y a une possibilit´e qu’il... 5 Set-Top-Box (STB) : STB est un appareil du cˆot´e client qui interagit avec le terminal de l utilisateur, par exemple : la t´el´evision, l ordinateur, le t´el´ephone portable, etc avec le ”Digital Subscriber Line” (DSL) ou avec le cˆable IPTV et multidiffusion IP La multidiffusion IP est une m´ethode d’envoi des paquets a` un groupe d’IP, qui sont les r´ecepteurs int´eress´es Cette m´ethode utilise... que le Selenium est le A meilleur outil afin de tester l application Web que le Watir En plus, le Testerman est disponible pour le Python donc le Selenium est l outil de bon choix pour d´evelopper le test d’automatisation 17 Chapitre 3 Conception et Impl´ ementation Ce stage a pour but de d´evelopper les scripts de cas de test pour pouvoir les utiliser avec les outils de tests d’automatisation En plus,... coh´erence et r´eduire la qualit´e des travaux dans l ´equipe En plus, le Testerman supporte le Python de version 2.6 ou plus, mais il ne supporte pas encore le Python 3 Pour installer le Python 2.7 et les composants essentiels, nous avons utilis´e les commandes suivants : #Tout d’abord, installer des dependances# $ sudo apt-get install build-essential $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev... ”type” pour d´efinir la valeur d un champ de saisie comme on saisit une valeur sur une page web Cette commande peut ˆetre utiliser afin de d´efinir la valeur d’une liste d´eroulante, des cases `a cocher, etc Dans ces cas, la valeur doit ˆetre dans l option s´electionn´ee mais pas le texte visible 4 La commande ”select” Cette commande est utilis´ee pour s´electionner une option dans la liste d´eroulante... capturer les paquets Pyshark [5] Pyshark est python wrapper pour tshark Il permet au Python d’analyser les paquets en utilisant Wireshark Il existe quelques modules d’analyse de paquets de Python, celui-ci est diff´erent parce qu’il ne fait pas une analyse tous les paquets, il utilise simplement la capacit´e de tshark pour exporter XMLs afin d’analyser les paquets Ce package permet l analyse d un fichier ... Flamingo XL Nous pouvons se connecter a` l interface Web et de piloter le Flamingo XL en utilisant la connexion SSH 1.3 Contexte du travail Pour assurer la qualit´e du Flamingo XL, le test d’automatisation... avec le terminal de l utilisateur, par exemple : la t´el´evision, l ordinateur, le t´el´ephone portable, etc avec le ”Digital Subscriber Line” (DSL) ou avec le cˆable IPTV et multidiffusion IP La... href="http://www.google.co.th">Google 25 #Utilisation du localisateur "link" est# link="Google" Le localisateur ”css” Le localisateur ”css” permet de s´electionner l ´el´ement en utilisant les

Ngày đăng: 29/12/2015, 17:15

Từ khóa liên quan

Mục lục

  • Introduction

    • Anevia

    • Flamingo XL

    • Contexte du travail

    • Problématique

    • Bibliographie

      • IPTV

      • Flux de transport MPEG2

      • Packet sniffer

      • Testerman

      • Test d'automatisation

      • Conception et Implémentation

        • Conception du projet

        • Implémentation

        • Expérimentation

        • Conclusion et Perspective

          • Conclusion

          • Perspective

          • Exemple du bibliothèque

          • Exemple des scripts ATS

          • Exemple du codage de Selenium Webdriver

          • Bibliography

Tài liệu cùng người dùng

Tài liệu liên quan