
Conteneurs de deuxième étape
Ces conteneurs sont démarrés dynamiquement en fonction de la configuration utilisateur du Build (Job) fournie au CLI purpleteam, en particulier le nombre de testSessions que vous définissez.
Les configurations suivantes sont pertinentes si vous avez l'intention d'exécuter le backend purpleteam dans l'environnement local. Dans le cloud, tout est fait pour vous.
Clonez ce dépôt.
Nous utilisons un fichier .env directement dans le répertoire app-slave pour les tests.
ZAP_API_KEY
Assurez-vous d'avoir attribué une valeur à la variable d'environnement ZAP_API_KEY.
La ZAP_API_KEY peut être ce que vous voulez, assurez-vous simplement qu'en la définissant pour app-slave, vous l'ajoutez également à la configuration du projet app-scanner. Le projet app-scanner nécessite que la clé API Zap soit configurée pour s'authentifier auprès de Zap exécuté dans le conteneur de l'étape deux. Pour le projet app-scanner, cela doit être défini comme suit :
{ "slave": { "apiKey": <zap-api-key-here> } }
HOST_ZAP_LOG4J_PROPERTIES_PATH et ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET
Si/Quand vous avez besoin des logs de débogage Zap, vous devrez également ajouter les variables d'environnement pour la configuration de débogage LOG4J.
.env fichier
Si vous choisissez d'utiliser un fichier .env, l'ajout de toutes ces variables d'environnement ressemblerait à ce qui suit :
ZAP_API_KEY=<zap-api-key-here>
HOST_ZAP_LOG4J_PROPERTIES_PATH=<absolute-path-to/purpleteam-s2-containers/app-slave/log4j.properties>
ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET=/home/zap/.ZAP/log4j.properties
À condition que vous ayez établi les variables d'environnement discutées ci-dessus :
Afin d'activer la journalisation de débogage pour les conteneurs app-slave (Zap) qui s'exécutent dans l'environnement local, décommentez le tableau volumes et l'élément contenant la clé source avec la variable d'environnement HOST_ZAP_LOG4J_PROPERTIES_PATH.
Détails ci-dessous pour visualiser les logs.
Vous pouvez interagir avec Zap (interroger l'interface utilisateur Zap) pendant que vos tests s'exécutent. Nous avons trouvé cela utile par le passé pour vérifier l'état de Zap lors du débogage de app-scanner.
docker stats
docker container ls
8080-8091 inclus, comme défini dans le docker-compose.yml.
Le port sur lequel Zap à l'intérieur du conteneur écoute sera toujours 8080.
Optionnel : configurez le modèle d'URL suivant dans FoxyProxy : zap:8080/*
Si vous utilisez le modèle d'URL, cela vous permettra de laisser FoxyProxy activé, en sélectionnant "Use proxies based on their predefined patterns and priorities". Sinon, vous pouvez simplement sélectionner le proxy spécifique que vous avez créé.http://zap:8080/
Vos requêtes seront proxyfiées via votre port hôte et recevront une réponse via le processus zap dans le conteneur spécifié par le port hôte dans votre configuration FoxyProxy.Afin d'activer la journalisation de débogage pour les conteneurs Selenium qui s'exécutent dans l'environnement local, décommentez le tableau environment et l'élément SE_OPTS=-debug pour chrome et/ou firefox.
Détails ci-dessous pour visualiser les logs.
Ce qui suit décrit ce que vous devrez faire pour visualiser le navigateur à l'intérieur de l'un des conteneurs Selenium exécutés à partir de ce projet.
-debug. Les images -debug peuvent être commentées, il suffit donc de commenter l'image habituelle et de décommenter l'image avec -debug ajouté à la fin.5900. En spécifiant une plage comme port externe (Ex : 5900-5901), vous pourrez vous connecter en VNC à plusieurs conteneurs à la fois. Dans l'exemple, nous avons permis l'ouverture de deux sessions simultanément. Si vous devez vous connecter en VNC à plus de deux, élargissez simplement la plage de ports externes.Vous aurez besoin d'un client VNC pour ouvrir une connexion au serveur VNC dans le conteneur. Nous avons eu du succès avec le client de bureau à distance Remmina sur Linux Mint. Installez Remmina-plugin-vnc via le Gestionnaire de logiciels.
Lancez votre client de bureau à distance Remmina.
Créez de nouvelles entrées. Si vous avez l'intention de vous connecter en VNC à plusieurs conteneurs Selenium simultanément, vous pouvez configurer chacun comme suit :
Plus de détails sur le github SeleniumHQ
Une fois que les conteneurs Selenium sont en cours d'exécution (garder docker stats ouvert dans un terminal est pratique pour visualiser cela), vous pouvez confirmer quel conteneur Selenium utilise quel port externe avec docker container ls, car Docker ne sait pas quels ports vous avez attribués à quelles entrées de votre client VNC, donc le nom d'une entrée client VNC donnée peut ne pas correspondre au conteneur Selenium portant le même nom. Pour cette raison, il est bon de confirmer les mappages de ports avec docker container ls.
Afin de corréler quel conteneur Selenium est utilisé pour quelle session de test lorsque vous avez plusieurs sessions de test, vous devrez peut-être consulter le journal du app-scanner en cours d'exécution. Vous devrez peut-être également vous assurer que app-scanner est configuré avec le niveau de journalisation debug afin de voir certains ou plusieurs des messages de journal suivants :
[app.parallel] cucCli process with PID "28" has been spawned for test session with Id "lowPrivUser"
[app.parallel] cucCli process with PID "34" has been spawned for test session with Id "adminUser"
[pid-28,world] seleniumContainerName is: seleniumstandalone_chrome_1
[pid-34,world] seleniumContainerName is: seleniumstandalone_chrome_2
Dans cet exemple, nous avons deux sessions de test configurées dans notre configuration utilisateur Build (Job). L'une a un id de lowPrivUser et l'autre un id de adminUser. Dans cet exemple, la session de test lowPrivUser a un processus avec PID 28 et la session de test adminUser a un processus avec PID 34.
Dans les deux messages de journal suivants, nous voyons, en corrélant les PID, que la session de test lowPrivUser utilise un conteneur nommé seleniumstandalone_chrome_1 et la session de test adminUser utilise un conteneur nommé seleniumstandalone_chrome_2.
Il n'y a aucune garantie quant à la session de test qui utilisera lequel des conteneurs seleniumstandalone_chrome_[n], donc si vous avez besoin d'être sûr, utilisez cette technique de corrélation.
Pour vous connecter en VNC aux conteneurs Selenium, une fois Remmina lancé, double-cliquez simplement sur une ou plusieurs des entrées VNC que vous avez créées ci-dessus et vous devriez pouvoir voir le navigateur en cours d'interaction... à condition que les étapes de test Cucumber dans app-scanner soient effectivement arrivées à ce stade. Vous pouvez bien sûr ralentir vos tests, les mettre en pause, les parcourir avec un débogueur. Ces détails se trouvent dans le wiki purpleteam, sur la page du workflow.
Localement, vous pouvez garder docker stats en cours d'exécution si vous le souhaitez pour voir quels conteneurs sont en cours d'exécution, quand ils sont démarrés et arrêtés. Cela vous donnera également leurs noms pour les commandes suivantes.
Afin de visualiser les journaux des conteneurs de l'étape deux, taillez stdout (et stderr, car Docker fusionne stdout et stderr) d'un conteneur :
docker logs --follow [container-name]
Si vous souhaitez également envoyer ces journaux dans un fichier :
docker logs --follow [container-name] |tee output.log$(date '+%Y-%m-%d_%T')
Si vous souhaitez envoyer ces journaux dans un fichier sans les visualiser via votre terminal :
docker logs --follow [container-name] > output.log$(date '+%Y-%m-%d_%T')
| Clé | Valeur |
|---|
| Nom | seleniumstandalone_chrome_1 |
| Protocole | VNC - Virtual Network Computing |
| Dans l'onglet De base | |
| Serveur | 127.0.0.1:5900 |
| Mot de passe | secret |
| Profondeur de couleur | True color (24 bit) # C'était le seul qui a fonctionné pour nous |
| Qualité | Faible (le plus rapide) |
| Clé | Valeur |
|---|---|
| Nom | seleniumstandalone_chrome_2 |
| Protocole | VNC - Virtual Network Computing |
| Dans l'onglet De base | |
| Serveur | 127.0.0.1:5901 |
| Mot de passe | secret |
| Profondeur de couleur | True color (24 bit) # C'était le seul qui a fonctionné pour nous |
| Qualité | Faible (le plus rapide) |