URL:
https://linuxfr.org/news/cerberus-4-7-en-route-pour-la-webperf-et-l-analyse-web
Title: Cerberus 4.7 — En route pour la webperf et l’analyse web
Authors: vertigo17
Benoît Sibaud, palm123, ZeroHeure et Davy Defaud
Date: 2020-05-08T22:45:45+02:00
License: CC by-sa
Tags: testing, testautomation, cerberus et recette
Score: 6
De l’eau a coulé sous les ponts pour Cerberus depuis la dernière annonce sur _LinuxFr.org_ ([2014](
https://linuxfr.org/news/cerberus-1-0-0-disponible)). Pour rappel, Cerberus est une application Java/MariaDB en mode Web qui permet de gérer et concevoir des tests automatisés pour des applications sur technologies Web, natives en mode _desktop_, mais aussi sur mobiles iOS et Android. Cerberus permet également de faire des tests de services Web ([SOAP](
https://fr.wikipedia.org/wiki/SOAP), [REST](
https://fr.wikipedia.org/wiki/Representational_state_transfer), [JSON](
https://fr.wikipedia.org/wiki/JavaScript_Object_Notation), mais aussi [Apache Kafka](
https://fr.wikipedia.org/wiki/Apache_Kafka) sur des opérations de production et recherche d’événements dans des _topics_).
Cerberus fait partie des logiciels dits de _Low code testing_ (test avec peu de code) et a pour objectif de mettre l’automatisation de tests dans les mains de personnes qui n’ont pas le temps ou les compétences pour écrire des tests dans un langage de programmation.
Pas besoin d’un [IDE](
https://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement), d’un compilateur ni même d’une infrastructure de test. Il faut juste l’adresse [URL](
https://fr.wikipedia.org/wiki/Uniform_Resource_Locator) de l’outil avec un identifiant et un mot de passe, et les premiers tests peuvent être créés et lancés simplement.
La version 4.7 ajoute principalement la capacité de contrôler le trafic réseau généré par l’application testée. Elle ajoute sur ce thème de nombreux rapports et tableaux de bord qui facilitent l’analyse des cas de tests.
La seconde partie de la dépêche détaille les fonctionnalités disponibles, mais elle explique également les enjeux et contraintes d’automatisation de tests pour l’analyse et les performances sur un site Web.
----
[Dépôt du code sur GitHub](
https://github.com/cerberustesting/cerberus-source)
[Site Web Officiel](
https://cerberus-testing.com/)
[Démo](
http://demo.cerberus-testing.org/)
[Vidéo du journal des modifications](
https://youtu.be/1o7WQWD3Ky0)
[Documentation](
https://cerberustesting.github.io/documentation_en.html)
----

Depuis la version 0.9 de la dernière dépêche, de nombreuses versions se sont enchaînées pour arriver à une belle maturité de l’outil. À date, Cerberus permet de gérer son référentiel de tests avec gestion des environnements et variations de navigateurs. Vos tests peuvent être regroupés et structurés par exigence et intégrés dans des campagnes qui peuvent être lancées automatiquement via n’importe outil d’intégration continue (de type Jenkins).
Les notifications d’exécutions sont déclenchables par courriel ou via Slack. Les tests peuvent être « variabilisés » et les données de tests peuvent être récupérées et/ou générées à la volée.
Supporté par de nombreuses grandes entreprises qui l’utilisent massivement pour gérer la non‐régression de leur plate‐forme Web et de leur système d’information (du fait de ses nombreux connecteurs), l’outil a atteint progressivement une grande maturité, que ce soit en termes de fonctionnalités mais aussi en termes de stabilité et performance.
La version 4.7 met l’accent sur des fonctionnalités de contrôle de trafic réseau, de manière à permettre des tests pour l’analyse Web mais aussi la performance Web.
Bon nombre de sites sur Internet intègrent des outils tiers qui collectent des informations sur votre navigation et les transmettent à des tiers via des appels HTTP. Ces sites permettent l’exécution de JavaScript par ces partenaires et mettent à leur disposition des variables JavaScript qui peuvent être utilisées par ces tiers pour transmettre un certain nombre d’informations. Les variables ainsi mises à disposition constituent ce que l’on appelle un _datalayer_ (couche de données).
Le moyen le plus simple pour tester que cette transmission d’informations fonctionne correctement consiste à reproduire le comportement d’un internaute et vérifier que l’ensemble de ces variables JavaScript au sein du _datalayer_ sont correctement initialisées. L’automatisation de ces actions ainsi que la vérification est facilement accessible via Selenium par n’importe quel script ou langage (ou via Cerberus, bien sûr).
Le problème sur cette manière de tester est que l’on ne teste pas, _stricto sensu_, la transmission de l’information à un site tiers mais plutôt l’ensemble des informations (ou variables JavaScript) nécessaires à sa mise à disposition. C’est certes nécessaire, mais pas suffisant pour vérifier si la transmission d’information est, ou non, effectuée.
Pour permettre le test de l’appel externe (ou non‐appel), un module externe à Cerberus a été créé et intégré à l’outil : le Cerberus Executor.
Au lancement du cas de test, Cerberus va donner l’ordre à l’Executor de créer à la volée un serveur mandataire (_proxy_) dédié au test. Lors du lancement du navigateur, Cerberus (via Selenium) va demander au navigateur de pointer vers ce serveur mandataire, ce qui permettra d’intercepter l’ensemble des appels effectué par l’application testée. À tout moment pendant le test, l’historique des appels est alors disponible et accessible dans Cerberus via une structure JSON qui contient non seulement l’ensemble des appels dans le format [HAR](
https://fr.wikipedia.org/wiki/Format_HTTP_Archive) mais aussi une agrégation de ces appels. Cette structure JSON permet très simplement de récupérer par exemple le volume de données transmis, le nombre de requêtes par type de média ou encore par code retour.

Lorsque le test est terminé, Cerberus va sauvegarder et historiser la partie agrégée de ces appels de manière à construire des tableaux de bord dans l’optique de suivre leur performance.


La fermeture du serveur mandataire sera également faite à la fin de l’exécution.
Cette technique a l’avantage de permettre ces contrôles également sur des applications pour mobile de type iOS ou Android.
N’hésitez pas à tester l’outil et faire vos retours à la communauté qui se fera un plaisir de vous aider.