La plupart des types de tests de logiciels utilisent un plan de test soigneusement défini pour garantir la couverture. Toutefois, si ces paramètres couvrent de nombreuses éventualités d’utilisation d’un logiciel, ils n’imiteront pas toujours le comportement d’un utilisateur qui n’est pas familier avec l’application et qui essaie simplement d’interagir avec elle de manière exploratoire : C’est là qu’intervient le test du singe.
Dans cet article, nous allons nous pencher sur tout ce qui concerne les tests de singe, y compris les logiciels de tests de singe, les processus, les types, les approches, et bien plus encore.
Qu’est-ce que le test du singe ?
Le test du singe est une technique de test de logiciels de plus en plus populaire. Il s’agit d’envoyer des entrées aléatoires dans une application pour simuler l’imprévisibilité de l’interaction avec l’interface utilisateur.
L’objectif est de trouver des bogues ou des pannes qui pourraient être difficiles à détecter avec des cas de test prédéfinis. Un test de singe reproduit la manière dont une personne sans expérience ni connaissance d’une application peut explorer le logiciel au hasard.
Cette technique est une bonne option pour les
chargement
et
test de stress
des applications. En effet, les tests fournissent des entrées aléatoires continues dans le but de casser l’application.
Il existe de nombreuses similitudes entre les tests de singe et les tests
tests ad hoc
En particulier, leur nature aléatoire et le fait qu’ils ne s’appuient pas sur un plan de test. Cependant, il existe suffisamment de différences entre les deux pour les considérer comme des approches distinctes.
Alors que certains développeurs suggèrent que le test du singe est un type de test ad hoc, une différence importante entre les deux est que le test du singe peut être effectué par des personnes qui n’ont aucune connaissance de l’application.
Le test du singe consiste à ne pas avoir de plan de test. Il s’agit d’introduire des données aléatoires dans le but de faire planter le logiciel.
Pourquoi appelle-t-on cela le « test du singe » ?
Il n’y a pas de consensus sur la raison pour laquelle cette technique est appelée « test du singe ». Cependant, il existe quelques théories convaincantes à l’origine de ce nom.
Théorie 1 : Théorème du singe infini
La première théorie suggère que le nom est lié au théorème du singe infini, une métaphore utilisée pour discuter des probabilités statistiques. En bref, elle affirme que si un singe s’asseyait devant une machine à écrire et tapait sur des touches au hasard pendant un temps infini, il finirait par produire les œuvres complètes de William Shakespeare.
L’idée est que le test du singe simule ces frappes aléatoires de touches et, avec suffisamment de temps, il couvrira toutes les éventualités auxquelles l’application sera confrontée en production.
Théorie 2 : « Le singe » de Macintosh
L’autre théorie veut que le nom provienne d’une application MacOS de 1983 appelée « The Monkey » (le singe). En bref, l’équipe qui travaillait sur le premier ordinateur Macintosh voulait trouver un moyen de tester sa machine.
Ils se sont dit que si un singe tapait frénétiquement sur les touches et déplaçait la souris, cela les aiderait à tester la résistance de l’ordinateur. Comme ils n’avaient pas de singe vivant sous la main, ils ont créé une application capable de simuler ce type d’utilisation et l’ont appelée « The Monkey » (le singe).
Pourquoi les tests sur les singes sont-ils importants ?
La principale raison pour laquelle les tests de singe sont importants est qu’ils permettent aux équipes de découvrir des cas particuliers ou des comportements inattendus au sein d’une application. L’idée est de permettre aux développeurs d’utiliser le test du singe en complément des méthodes plus traditionnelles afin d’avoir une meilleure idée de la façon dont l’application sera accueillie dans la nature.
Même les tests complets d’un produit ne peuvent rivaliser avec des dizaines de milliers d’utilisateurs ou plus qui utilisent une application sur une longue période. Dans un faible pourcentage de ces cas, les utilisateurs demandent à l’application de faire quelque chose d’inattendu. Il est pratiquement impossible de découvrir tous ces scénarios à l’aide de scénarios de test.
Le test du singe tente de couvrir ces scénarios quasi aléatoires. Lorsque les développeurs élaborent un scénario de test, ils ont généralement une connaissance approfondie de l’application. Ils comprennent les objectifs de l’utilisateur et savent quelle est la meilleure séquence d’interactions à utiliser pour atteindre un objectif dans une application.
La randomisation de ces entrées signifie que l’application est testée d’une manière que les développeurs n’ont pas envisagée. Dans l’ensemble, cela améliore la résistance et la durabilité d’un logiciel et garantit qu’il peut aller dans le monde et faire face à l’imprévisibilité d’un large éventail d’utilisateurs sans tomber en panne.
Quand utiliser le test du singe ?
Le test du singe est une excellente technique de test complémentaire. Son principal avantage réside dans sa capacité à trouver des bogues inattendus qui ne seraient pas découverts par des méthodes de test de logiciels plus traditionnelles. C’est pourquoi il est préférable de l’utiliser parallèlement à des méthodes telles que :
En général, les développeurs utilisent le test du singe au début du processus de test. Il est particulièrement utile lorsqu’il n’y a pas de plans de test prédéfinis sur lesquels s’appuyer.
Comment les tests sur les singes sont-ils effectués ?
Dans un passé pas si lointain, les tests sur les singes étaient effectués manuellement. Les testeurs devaient appuyer sur des boutons, saisir du texte, sélectionner des objets, etc. pour voir comment le système résisterait à des entrées non conventionnelles. Il y a là des problèmes évidents. Tout d’abord, cela prend beaucoup de temps. Deuxièmement, il n’y a guère de garantie que ces actions couvriront toutes les éventualités.
Exemples de tests manuels sur les singes
Voici quelques exemples de tests manuels effectués par des singes. Cela peut également vous donner une idée de ce que les tests automatisés sur les singes cherchent à simuler.
- Le testeur navigue sur un site web en cliquant sur des liens aléatoires pour voir s’ils peuvent faire planter l’application ou conduire à des pages inattendues.
- Un testeur saisit des textes au hasard dans un champ de formulaire pour voir comment l’application réagit.
- Le testeur glisse et dépose des icônes et des objets pour voir s’ils se comportent comme prévu ou s’ils produisent des résultats indésirables.
Différents types de tests sur les singes
Il existe trois principaux types de tests de singe que les développeurs utilisent pour découvrir des informations distinctes sur la résilience de leurs applications.
1. Test du singe idiot
Le test du singe idiot décrit une approche dans laquelle le testeur ne connaît rien de l’application testée. Au lieu de cela, le testeur est invité à tourner autour du pot en ignorant totalement le déroulement des opérations, en appuyant sur des boutons, en saisissant du texte, etc. Cette technique permet de découvrir des failles importantes dont les développeurs ne sont pas conscients.
2. Tests sur les singes intelligents
Avec le test du singe intelligent, le testeur connaît un peu l’application et ses objectifs et dispose même d’informations détaillées sur son fonctionnement. Ce processus utilise également un type d’entrée aléatoire plus ciblé, conçu pour pousser l’application au-delà de certaines limites. Cette approche convient aussi bien aux tests de stress qu’aux tests de charge.
3. Des tests brillants sur les singes
Le test du singe brillant est le niveau supérieur du test du singe intelligent. Le testeur a une connaissance approfondie et complète de l’application et est choisi en fonction de cette connaissance. Cet oubli peut aider le testeur à découvrir de nombreux bogues, car il doit comprendre le produit du point de vue de l’utilisateur.
Avantages et inconvénients des tests sur les singes
Avant de décider d’utiliser la technique du test du singe, vous devez en comprendre les avantages et les inconvénients.
Avantages du test du singe
1. Trouver des bogues rares ou cachés
L’avantage le plus convaincant des tests de singe est peut-être la capacité de cette technique à découvrir des bogues, des défauts ou des comportements qui, autrement, ne seraient pas détectés. Il est difficile de trouver ces cas limites avec les techniques de test traditionnelles, c’est pourquoi le test du singe est un moyen efficace de tester les pannes, les corruptions de données et tout ce qui peut menacer la stabilité d’une application.
2. Il garantit la robustesse
Les tests de singe sont conçus pour voir comment une application réagit aux conditions imprévisibles auxquelles elle sera confrontée lors d’une utilisation réelle. Lorsqu’une application est mise entre les mains de l’utilisateur, elle donne lieu à de nombreuses entrées différentes que les développeurs ne peuvent pas prévoir. Le test du singe reproduit cette situation, ce qui permet d’obtenir des constructions plus fiables.
3. Le rapport coût-efficacité
Comparé à d’autres types de tests, le test du singe est très rentable. Il y a plusieurs raisons à cela. Tout d’abord, vous n’avez pas besoin de passer beaucoup de temps à concevoir des cas d’utilisation pour votre application. Ensuite, les outils logiciels de test de singe sont largement automatisés, ce qui permet aux développeurs de se consacrer à d’autres tâches et d’économiser de l’argent.
4. La polyvalence
L’un des avantages des tests de singe est qu’ils peuvent être réalisés par des personnes n’ayant aucune formation technique. En effet, dans certains cas, il est préférable d’avoir quelqu’un de complètement vert. De plus, ces tests sont assez simples à mettre en place, ce qui, une fois encore, réduit la dépendance à l’égard d’ingénieurs qualifiés.
5. Détection précoce des bogues
Trouver et résoudre les bogues dès le début du cycle de développement permet de gagner du temps par la suite. Les tests de singe introduisent un niveau d’aléatoire dans les tests, ce qui peut vous aider à trouver des failles dans votre code alors qu’elles sont faciles à corriger.
Inconvénients du test du singe
1. Couverture
Bien que les tests de singe puissent améliorer la couverture des tests, ils n’ont pas la rigueur planifiée et stratégique des autres types de tests. En effet, comme vous soumettez l’application à des entrées aléatoires, vous êtes à la merci du chaos pour trouver les bogues. Cela ne veut pas dire qu’il ne trouvera pas tout, mais sans une stratégie claire et prédéfinie, vous ne pouvez pas être sûr à 100 % que tout a été capturé.
2. Applications limitées
Le test du singe n’est pas adapté à tous les types d’applications. Elle est idéale pour les applications complexes comportant de nombreuses caractéristiques et fonctions différentes et, surtout, susceptibles de donner lieu à des interactions inattendues avec l’utilisateur. Les programmes qui offrent des fonctions plus rigides et prévisibles sont moins susceptibles de bénéficier de ces tests.
3. Le temps est compté
Les tests manuels sur les singes prennent beaucoup de temps. Elle nécessite de nombreuses interactions avec des modules et des logiciels, sans garantie que chaque session permette de découvrir des bogues. Il est possible d’automatiser le processus, ce qui permet d’économiser beaucoup de temps et de ressources.
4. Faux positifs
En raison de la nature chaotique ou aléatoire des tests de singe, certaines données peuvent simuler des scénarios qui ne se produiront pas lors de l’utilisation réelle du produit. Cette situation peut entraîner la génération de faux positifs, conduisant les codeurs à résoudre des problèmes qui ne sont pas nécessaires.
Qu’est-ce que le test du singe du chaos ?
Le test de chaos est une technique d’ingénierie logicielle qui utilise des expériences contrôlées et délibérées conçues pour perturber un système (et même induire des défaillances) afin d’évaluer sa résilience et sa capacité à se rétablir.
L’idée de casser intentionnellement un système pour en assurer la résilience est assez répandue dans le domaine du développement de logiciels, et ces méthodes aboutissent généralement à des constructions que les ingénieurs peuvent soutenir.
En 2008, après avoir subi une corruption de sa base de données pendant trois jours, le célèbre service de streaming Netflix a décidé de migrer vers Amazon Web Services (AWS). L’objectif était d’éviter les points de défaillance uniques et de réduire les problèmes d’évolutivité liés à l’expansion du service.
L’équipe a mis en œuvre le test du singe du chaos pour tester les instances publiques sur l’infrastructure AWS. Les avantages sont doubles :
- Le processus a révélé des faiblesses que les ingénieurs de Netflix ont pu corriger
- Cela a incité l’équipe à mettre en place des mécanismes de récupération automatisés pour leur service.
Chaos monkey testing fait partie de Chaos Engineering. Il est utilisé pour tester la tolérance aux pannes d’un système et sa capacité à maintenir la stabilité et les performances même lorsque des composants individuels tombent en panne de manière inattendue.
Bien qu’elle soit liée au test du singe, il s’agit d’une technique distincte.
Tests de singe et tests de gorille
Vous avez peut-être entendu parler du concept de test Gorilla dans le développement de logiciels. Bien que les deux techniques portent le nom de primates, elles présentent de nombreuses similitudes et différences. Voyons ce qu’est le test Gorilla et où il peut être utilisé.
Le test du gorille est considéré comme une version plus structurée du test du singe. En comparaison, le test du singe est souvent utilisé dans les premières étapes du test, lorsqu’il n’existe pas de cas de test formel. Le test Gorilla, quant à lui, utilise un outil ou un script automatisé pour générer des entrées aléatoires pour une application logicielle.
Le test Gorilla est rapide et bien plus efficace que le test manuel du singe. Il offre une large couverture, et c’est un excellent moyen de trouver les pannes qui doivent être résolues. Cependant, il est préférable de l’utiliser pour des applications aux limites bien définies ou pour tester en profondeur un module particulier.
Les tests de singe et les tests de gorille ont tous deux leur place dans les tests de développement de logiciels modernes. Il est essentiel de les comprendre pour utiliser la bonne approche dans le bon espace.
Quel est le meilleur outil de test des singes ?
Les logiciels de test de singe sont devenus un élément essentiel de la boîte à outils du développeur moderne. Cependant, il existe quelques options. Quel est donc le meilleur outil de test des singes ? En voici quelques-uns que vous devez connaître.
1. ZAPTEST
ZAPTEST est un puissant outil
outil d’automatisation des tests de logiciels gratuits et d’entreprise
qui prend en charge un large éventail de techniques d’automatisation des tests, y compris les tests de singe. Voici quelques-unes des fonctions de ZAPTEST qui facilitent le test du singe :
- Enregistrement de scripts sans code : Les équipes peuvent enregistrer les interactions des utilisateurs et les convertir en code de test.
- Génération d’entrées : ZAPTEST facilite la génération d’entrées aléatoires, qui est un élément essentiel des tests de singe.
- Des rapports robustes : ZAPTEST offre de puissantes capacités de reporting qui vous aident à documenter vos tests.
Bien entendu, ces fonctionnalités ne font qu’effleurer les capacités de ZAPTEST pour un large éventail de techniques de test, y compris les tests de singe. Avec l’intégration de WebDriver, les fonctions d’IA et ZAPTEST CoPilot, les équipes peuvent découvrir l’avenir des tests de logiciels en un seul endroit.
De plus, les utilisateurs de ZAPTEST Enterprise ont accès à un expert ZAP dédié à plein temps et à un nombre illimité de licences, le tout pour un coût fixe prévisible.
2. Appium
Appium est un outil open-source. Vous pouvez l’utiliser pour Android et iOS. Il permet aux utilisateurs d’automatiser les interactions entre les applications mobiles et dispose de capacités de test des singes. Les développeurs peuvent imiter un large éventail de réactions de l’interface utilisateur, telles que la saisie de texte, le clic, le tapotement et le défilement.
Si Appium est un excellent outil pour les développeurs mobiles, il manque de capacités pour les tests sur les ordinateurs de bureau et sur le web.
3. Le test du singe
Monkey Test It est une plateforme de test basée sur l’informatique en nuage qui offre une série de possibilités de test, dont le test du singe. Bien que Monkey Test It soit très convivial, il n’a peut-être pas la puissance des outils concurrents.
D’autres inconvénients sont qu’il pourrait être plus élégant et accompagné d’une meilleure documentation. De plus, certains utilisateurs se sont plaints de résultats inexacts lors des tests. Cela dit, il s’agit d’un programme simple et peu coûteux, dont il ne faut pas attendre grand-chose.
4. MonkeyTestJS
MonkeyTestJS est un outil australien open-source basé sur JavaScript et conçu pour les applications web uniquement. Il est assez basique, mais il est tout à fait capable de faire le travail. Cet outil permet aux développeurs de simuler les interactions entre l’utilisateur et l’application web, telles que les clics, les soumissions de formulaires, les saisies au clavier, etc.
Évidemment, l’un des inconvénients de cet outil est qu’il n’est disponible que pour les applications web. Cependant, il vaut la peine de l’avoir dans sa boîte à outils.
Quel est le meilleur outil dédié au test des singes sous Android ?
Il existe quelques bonnes options pour les développeurs qui souhaitent mettre un peu de chaos dans leurs tests d’applications Android. Examinons-en deux.
1. UI/Application Exerciser Monkey pour Android
UI/Application Exerciser Monkey for Android est un outil en ligne de commande qui permet aux développeurs d’envoyer des entrées ou des événements pseudo-aléatoires aux appareils Android et aux émulations. Cet outil s’exécute dans le shell Android Debug Bridge.
2. MonkeyRunner pour Android
MonkeyRunner pour Android est un outil populaire de test de singe pour Android. Le logiciel est une API qui permet aux développeurs d’écrire des programmes qui émulent ou contrôlent un appareil Android. C’est également une bonne option pour les tests fonctionnels et unitaires.
Ces deux applications sont de bonnes options. Cependant, ils sont assez techniques, ce qui ne conviendra pas à toutes les équipes.
Faut-il automatiser les tests de singe ?
L’un des plus gros problèmes des tests manuels est qu’ils prennent beaucoup de temps. Il convient également de noter qu’il est difficile pour quelques testeurs de simuler les différentes interactions qu’une large base d’utilisateurs peut avoir avec une application particulière.
Ainsi, trois inconvénients immédiats sautent aux yeux. Le test manuel du singe est :
- Chronophage
- Coûteux
- Couverture potentiellement insuffisante
Un outil de test automatisé des singes résout tous ces problèmes.
ZAPTEST est-il le bon choix pour vos besoins en matière de tests sur les singes ?
Le test du singe est une bonne technique à inclure dans votre répertoire de tests, en particulier si vous concevez des applications complexes. Cependant, l’achat d’un logiciel dédié au test du singe est coûteux.
ZAPTEST
est un outil d’automatisation de tests
outil d’automatisation de test complet, flexible et puissant.
Il est hautement personnalisable et permet aux développeurs et aux équipes non techniques de construire et de concevoir une quantité infinie de techniques de test logiciel, y compris le test du singe.
Le test du singe est un excellent choix lorsqu’il est complété par d’autres types de tests. ZAPTEST offre tout sous un même toit, avec en plus des outils d’APR de haute qualité.
Dernières réflexions
Le logiciel de test Monkey offre aux développeurs un moyen peu conventionnel de tester leurs applications. La force de cette technique réside dans sa capacité à simuler la myriade de façons imprévisibles dont un utilisateur peut s’engager avec un logiciel. En bref, les tests de singe offrent une couverture qu’il serait difficile d’obtenir avec un plan de test.