PhantomJS va nous servir de "Web-Driver" et cela sera là son unique utilité. De quoi s'agit-il ? Afin que Python puisse interagir avec le navigateur Web (Chrome, Firefox ou autres), de la même manière que la communication avec une base de données, il nous faut un driver (pilote). C'est là qu'intervient le Web Driver, il permet la communication entre le navigateur Web et notre script Python. De base, Selenium peut utiliser différents drivers pour différents navigateurs (Chrome, Firefox, Opéra) mais ce qui nous intéresse, ce n'est pas d'ouvrir un navigateur mais d'avoir un navigateur headless (sans interface graphique, uniquement en ligne de commandes). C'est là qu'intervient PhantomJS, qui fournit lui-même son Web Driver. L'utilité c'est donc la rapidité d'exécution par rapport aux navigateurs classiques.
Les expressions régulières sont utilisées pour distinguer les blocs spécifiques de code source que vous voulez extraire de la page. Par exemple, si vous essayez d’extraire un article, vous pouvez utiliser le code au début de l’article et le code à la fin de l’article pour créer une expression régulière qui indique à Zennoposter que l’article est au milieu de ce code. S’il y a plusieurs articles sur la page, plusieurs résultats peuvent être sauvegardés dans une liste.
I would point out that depending upon what site you are on, there may be a more efficient way (perhaps an exposed web service) than scraping data from the page and working with mechanize/selenium to do what you want. If you are on the web, browser driver tools are the hammers, and they will get the screws in the wood, but sometimes another tool will work better.
Dans le chapitre « Instruments et applications »  : […] La nouvelle génération des spectrophotomètres est entièrement automatisée. Ils permettent l'enregistrement rapide, routinier et répétitif des spectres d'absorption ou d'émission avec un nombre de manipulations considérablement réduit et, donc, un faible coût d'exploitation ; dans ce cadre, on peut citer l'emploi des supports […] Lire la suite☛ http://www.universalis.fr/encyclopedie/spectrophotometrie-optique/#i_2513
Si vous êtes adepte des langages de programmation PHP ou C#, ZennoPoster a aussi quelque chose en réserve pour vous. Ce logiciel a conçu différents modules pour contrôler le navigateur selon vos préférences. Par exemple, si vous souhaitez utiliser votre propre code, vous n'avez pas besoin d'utiliser le modèle parce que vous pouvez créer votre propre programme - en contrôlant entièrement le navigateur. C'est vraiment pratique et polyvalent ! Vous pouvez utiliser ce logiciel à votre avantage en utilisant toutes ces langues tout en étant capable de gérer votre navigateur virtuellement en même temps.
Analysons le script. On crée tout d'abord un nouveau fichier python (par exemple, macro.py) avec l'éditeur de fichiers de notre choix (cela peut être un simple Notepad, un NotePad++, un SublimeText ou encore un IDE propriétaire tel que Visual Studio). Une fois ce fichier crée, on l'édite, et on commence par importer le WebDriver de selenium (from selenium import webdriver). On définit ensuite PhantomJS en tant que WebDriver avec la directive webdriver.PhantomJS(), on définit la taille du navigateur avec set_window_size(x,y).
Les exemples décrits ci-dessus sont relativement simples. Cependant les possibilités de paramétrages permettent des créer des objets types beaucoup plus complexes. Par exemple, TestComplete peut tester le nombre de nœuds enfants ainsi que leurs types, s’adaptant ainsi à la quasi-totalité des situations rencontrées lors de la création de tests fonctionnels.

Eléments essentiels de votre politique de qualité, les automates de tests permettent la robotisation de vos cas de tests. Ils sont notamment très utiles pour les tests de non régression qui doivent être répétés à chaque nouvelle version d’un logiciel. Quels sont les principaux automates disponibles sur le marché ? Quels sont leurs points forts ? Tour d’horizon. 
The governor could not actually hold a set speed; the engine would assume a new constant speed in response to load changes. The governor was able to handle smaller variations such as those caused by fluctuating heat load to the boiler. Also, there was a tendency for oscillation whenever there was a speed change. As a consequence, engines equipped with this governor were not suitable for operations requiring constant speed, such as cotton spinning.[16]
En une phrase, un test unitaire est une opération qui vérifie une certaine partie du code. Il est réalisé sur des fichiers ou des programmes isolés de toutes relations avec d'autres programmes et qui permet de valider la qualité du code et les performances des différents modules. Ces tests pourront être exécutés automatiquement les uns à la suite des autres, autant de fois que nécessaire, afin de vérifier la stabilité du code.
Aujourd’hui je vous propose de réaliser une petite application qui va se connecter à un site et qui va aller télécharger un fichier. Le meilleur dans l’histoire c’est que tout cela va se faire automatiquement sans que vous ayez à lever le petit doigt. De la magie ? Non, nous devons cela à la gem Mechanize que je vais vous présenter sans plus attendre.
WebDriver est basé sur un modèle client-serveur. Un client de test envoie des "commandes" via des requêtes HTTP à un serveur WebDriver après initialisation d'une session. Ce dernier distribue les commandes auprès des drivers des navigateurs concernés. Ces drivers exécutent les commandes sur les navigateurs en question via des mécanismes d'automatisation interne, de l'OS ou du JS. C'est en réalité plus compliqué que cela, car ces drivers peuvent eux-même être des serveurs WebDriver (Internet Explorer), communiquer via des web sockets (Safari), etc. Le driver n'est pas nécessairement un binaire, les drivers de Firefox et de Safari sont des extensions du navigateur par exemple.
Ainsi qu’évoqué plus haut, le plus grand défi à relever dans l’automatisation des tests est la difficulté à les maintenir dans le temps. Aussi pour répondre à cette problématique, nous avons mis en place différentes stratégies, parmi lesquelles l’utilisation du Page Object pattern, ou encore des pattern plus évolués comme le Screenplay pattern qui est une approche pour écrire du code de haute qualité pour les tests automatisé et qui est basés sur les principes du SOLID on peut citer à titre d’exemple, le Single Responsability principle ou le Open Closed principle.
Nous avons mis au point une méthodologie afin d’aider nos clients à choisir le logiciel d’automatisation de test le plus adapté à leurs besoins et à optimiser l’utilisation de ces outils, nouveaux et existants. Cette méthodologie consiste en premier lieu à définir les objectifs auxquels les outils doivent répondre et à spécifier les tests à automatiser, tels que le test fonctionnel ou la validation back-end. Puis, il s’agit de définir les exigences, de créer un tableau de bord d’évaluation, de réaliser une validation de principe et enfin, de préparer les outils pour le déploiement. Les clients peuvent également optimiser l’utilisation de leurs outils d’automatisation grâce à l’identification de l’ensemble des besoins en test à travers l’entreprise, à la création d’un inventaire des outils disponibles et à une revue des accords de licence existants, garantissant que seules les licences nécessaires seront achetées.
Industrial automation incorporates programmable logic controllers in the manufacturing process. Programmable logic controllers (PLCs) use a processing system which allows for variation of controls of inputs and outputs using simple programming. PLCs make use of programmable memory, storing instructions and functions like logic, sequencing, timing, counting, etc. Using a logic based language, a PLC can receive a variety of inputs and return a variety of logical outputs, the input devices being sensors and output devices being motors, valves, etc. PLCs are similar to computers, however, while computers are optimized for calculations, PLCs are optimized for control task and use in industrial environments. They are built so that only basic logic-based programming knowledge is needed and to handle vibrations, high temperatures, humidity and noise. The greatest advantage PLCs offer is their flexibility. With the same basic controllers, a PLC can operate a range of different control systems. PLCs make it unnecessary to rewire a system to change the control system. This flexibility leads to a cost-effective system for complex and varied control systems.[88]
Afin de profiter au mieux de l’automatisation des tests, voici huit recommandations issues de notre expérience, acquise au cours de plus de 50 projets internationaux d’automatisation des tests en entreprise. Ces conseils sont destinés à aider l’amélioration du retour sur investissement en automatisation de tests et à améliorer la qualité logicielle.

La reconnaissance d’objets est une fonctionnalité importante pour un outil d’automatisation de tests fonctionnels. Les entreprises utilisant des composants graphiques avancés ou personnalisés pour leurs développements apprécieront les fonctionnalités leur permettant de reconnaître ces objets particuliers. La capacité par exemple d’un outil tel que TestPartner à reconnaître des objets Telerik constitue un plus indéniable.
De même, lié à des problèmes de gestionnaire de fenêtre, la gestion native du driver de Firefox (native events) n'est pas activée par défaut sur Linux. C'est donc la gestion "synthétique" qui est utilisée (synthetic events). À savoir l'injection de JavaScript. Ce qui empêche l'utilisation de l'API des interactions utilisateurs avancés (drag-N-drop & co) car elle est mal supportée avec les événements synthétiques. Et la maintenance de cette gestion native par le passé pour Firefox a introduit des régressions.

Agent-assisted automation refers to automation used by call center agents to handle customer inquiries. There are two basic types: desktop automation and automated voice solutions. Desktop automation refers to software programming that makes it easier for the call center agent to work across multiple desktop tools. The automation would take the information entered into one tool and populate it across the others so it did not have to be entered more than once, for example. Automated voice solutions allow the agents to remain on the line while disclosures and other important information is provided to customers in the form of pre-recorded audio files. Specialized applications of these automated voice solutions enable the agents to process credit cards without ever seeing or hearing the credit card numbers or CVV codes[90]
The total number of relays, cam timers and drum sequencers can number into the hundreds or even thousands in some factories. Early programming techniques and languages were needed to make such systems manageable, one of the first being ladder logic, where diagrams of the interconnected relays resembled the rungs of a ladder. Special computers called programmable logic controllers were later designed to replace these collections of hardware with a single, more easily re-programmed unit.
Une automatisation est une technique ou un ensemble de techniques ayant pour but de réduire ou de rendre inutile l'intervention d'opérateurs humains dans un processus où cette intervention était coutumière. Il n'y a évidemment pas automatisation lorsque l'opérateur humain est remplacé par la force animale, ni lorsqu'un processus artificiel est substitué à un processus naturel. L'automatisation désigne uniquement une transformation de processus exclusivement créés par l'homme : techniques ou ensemble de techniques. Elle tend donc à économiser l'intervention humaine sous toutes ses formes (apport d'énergie mis à part) :
Si vous pensez aux tâches en ligne que vous réalisez, il y a probablement des actions qui viennent à l’esprit et pour lesquels le logiciel serait très utile pour mais qui ne serait simplement pas commercialisable ou rentable pour un développeur. Ces actions seraient trop spécifiques pour en justifier le développement d’un logiciel pour les executer.

Full automation commonly defined as requiring no control or very limited control by the driver; such automation would be accomplished through a combination of sensor, computer, and communications systems in vehicles and along the roadway. Fully automated driving would, in theory, allow closer vehicle spacing and higher speeds, which could enhance traffic capacity in places where additional road building is physically impossible, politically unacceptable, or prohibitively expensive. Automated controls also might enhance road safety by reducing the opportunity for driver error, which causes a large share of motor vehicle crashes. Other potential benefits include improved air quality (as a result of more-efficient traffic flows), increased fuel economy, and spin-off technologies generated during research and development related to automated highway systems.[71]
Les essais logiciels sont de plus en plus longs et complexes, les délais de plus en plus courts et les impacts d’une anomalie critiques. Les technologies de l’information sont partout, la qualité doit y être aussi. Cette présentation traite des bonnes pratiques à implémenter afin de réduire et d’éliminer ces enjeux présents dans vos processus d’entreprise. Vous en saurez plus sur l’importance d’automatiser, les défis du passage du manuel à l’automatisation et pourquoi les outils actuels n’offrent pas le ROI escompté. Une nouvelle démarche pour simplifier l’adoption et assurer le ROI est aussi présentée.
Maintenant, il faut rédiger en français le déroulement de tous les cas de test et des suites de tests. (Exemple : charger la page, vérifier la présence des 4 liens vers les sous parties du sites ainsi que la présence et la validité des informations affichées dans la page...). Cela peut être le travail du responsable du projet ou des responsables qualités etc...
En ce qui concerne l’Extreme Programming, c’est une des méthodes issue de la méthodologie Agile, qui préconise d'écrire les tests en même temps, voire avant même le développement de la fonction à tester. Il s’agit du Test Driven Development ou Développement piloté par les tests.. Ceci permet de définir précisément l'interface du module à développer. On écrit la procédure de test qui reproduit le bogue avant de développer la fonctionnalité. Une fois la fonctionnalité développé, on lance le test, qui ne doit indiquer aucune erreur. Nous reparlerons un peu plus tard de cette méthode.
Le code en Ecmascript vous permet d'utiliser l'ensemble des fonctionnalités proposées par la bibliothèque Qt ainsi qu'une trentaine d'objets plus simples à utiliser, voir la page du wiki. Vous pouvez par exemple ouvrir un serveur TCP ou UDP, exécuter des requêtes sur une base de données MySQL ou bien accéder à la base de registres de Windows. Un débogueur est disponible pour vous aider à corriger vos scripts. La documentation du logiciel est disponible en français et en anglais, bien que certaines parties soient en cours de traduction/rédaction.
Dans le chapitre « Évolution des techniques de fabrication »  : […] Depuis la Seconde Guerre mondiale, une forte évolution a conduit à la mécanisation des cimenteries et, même, à l'automatisation des plus modernes. Dans ces dernières, toutes les manœuvres, les réglages des fours, des broyeurs et de tous les organes tendent à être faits mécaniquement et commandés automatiquement par des dispositifs électroniques. […] Lire la suite☛ http://www.universalis.fr/encyclopedie/ciment/#i_2513

Enfin, on finit par prendre un screenshot de la page pour vérifier que nous sommes bien connectés (le screenshot sera dans le même dossier que le script python de la macro), on retourne l'URL active de la page avec la méthode driver.current_url et on quitte avec la méthode .quit(). Il ne nous reste plus qu'à lancer notre script ! Pour cela ouvrez votre terminal/invite de commandes et taper "python macro.py" et votre macro va s'exécuter (pensez à autoriser le pare-feu à PhantomJS). Voilà notre script s'est bien exécuté et le tout assez rapidement.

Dans le cadre de leur stratégie d’opérations agiles, les entreprises déploient des packages lorsqu’ils sont prêts, souvent plusieurs fois par semaine. L’étape de test est par conséquent extrêmement importante afin de garantir la livraison d’un code fiable et de qualité. Toutefois, le test manuel requiert inévitablement de nombreuses ressources, peut retarder le processus de livraison, et n’identifie pas toujours les erreurs au niveau du code. Les outils d’automatisation de test gèrent les tests fonctionnels et de non-régression pour tout type de logiciel applicatif, et sont devenus incontournables dans le domaine de l’automatisation, ces dix dernières années. Parmi les solutions disponibles, on trouve : HP Quality Center, CA Blazemeter, Microsoft Test Manager, IBM Rational Test Workbench, et TestPlant.
×