Tests automatisés ou manuels : avantages, inconvénients et quel est le meilleur
Publié: 2021-10-05Les tests sont une partie irremplaçable du développement logiciel. Les tests de qualité aident à lutter contre les failles de sécurité, qui coûtent actuellement aux entreprises environ 25 $ par minute selon RiskIQ.
Dans les méthodologies Agile, les tests sont un processus continu qui commence dès le début du développement. Aujourd'hui, les tests peuvent être effectués manuellement ou automatiquement. Examinons le dilemme entre les tests manuels et les tests automatisés . Vous découvrirez les avantages des tests d'automatisation par rapport aux tests manuels et vice versa, et vous obtiendrez des conseils sur l'utilisation de l'approche de test.
Contenu:
- Différence entre les tests manuels et les tests automatisés
- Avantages des tests d'automatisation
- Inconvénients des tests automatisés
- Avantages des tests manuels
- Inconvénients des tests manuels
- Tests manuels vs tests automatisés
- Où devriez-vous utiliser les tests manuels ?
- Où utiliser les tests automatisés ?
Quelle est la différence entre les tests manuels et les tests automatisés ?
Les tests manuels sont effectués directement par un spécialiste de l'assurance qualité (AQ) qui exécute le logiciel à travers des scénarios de test basés sur les exigences. Les QA testent un scénario à la fois.
Dans les tests automatisés, les scénarios de test sont exécutés par un logiciel, ce qui permet souvent de tester plusieurs scénarios simultanément. Cependant, pour que les tests automatisés fonctionnent, les scénarios de test doivent être préparés par un spécialiste de l'assurance qualité de l'automatisation , de sorte que les tests automatisés ne sont pas exempts d'intervention humaine. Pour permettre les tests automatisés, un QA écrit des scripts dans un langage de programmation de son choix, généralement Python, C# ou Java . Ces scripts sont ensuite lancés à l'aide d'outils tels que TestComplete, Selenium ou Appium . Le logiciel exécute les tests plus rapidement qu'un humain, mais a besoin d'un humain pour fonctionner.
Enfin, tous les tests ne peuvent pas être exécutés par un logiciel.
Avantages des tests d'automatisation
Pourquoi nous efforçons-nous de tout automatiser en premier lieu ? Parce que cela (a) libère notre temps pour faire des choses plus amusantes et plus importantes et (b) nous permet d'atteindre nos objectifs plus rapidement. Cela s'applique également au développement de logiciels. Cependant, il y a plus à l'automatisation des tests logiciels.
L'automatisation permet de gagner du temps sur des tâches autrement chronophages
Le test d'un logiciel peut prendre beaucoup de temps et est souvent répétitif, par exemple lorsqu'il s'agit de vérifier si une application agit comme elle est censée le faire après une mise à jour de l'application elle-même ou du système d'exploitation. iOS et Android sont mis à jour fréquemment, et parfois ces mises à jour affectent les fonctionnalités des applications. Si une mise à jour affecte les fonctionnalités utilisées par votre application, vous devez tester ces fonctionnalités pour vous assurer que votre application fonctionne correctement avec la dernière version du système d'exploitation.
Ces tâches répétitives peuvent être effectuées manuellement, bien sûr, mais elles prennent beaucoup de temps pour les QA. Au lieu de cela, un QA peut créer des algorithmes pour exécuter ces tests répétitifs automatiquement pendant que le QA travaille à tester de nouvelles fonctionnalités. Un script peut exécuter des tests jusqu'à cinq fois plus rapidement qu'une personne - et l'AQ effectuera certaines tâches non automatisées ou écrira plus de scripts en même temps.
De plus, les tests automatisés peuvent s'exécuter 24 heures sur 24 , 7 jours sur 7 , alors que les spécialistes des tests manuels travaillent généralement une journée traditionnelle de huit heures, cinq jours par semaine.
Exemple : les tests de régression sont répétés après chaque mise à jour d'une fonctionnalité, d'une application ou d'un système d'exploitation. Ces tests vérifient si la mise à jour crée un bogue ou un conflit entre les fonctionnalités. Il faut beaucoup de temps pour qu'un QA exécute et réexécute manuellement ces tests après chaque mise à jour.
Un spécialiste de l'automatisation de l'assurance qualité peut écrire un script de test une fois et exécuter des tests autant de fois que nécessaire. Pendant que ces tests sont en cours d'exécution, vos QA manuels et automatisés peuvent être occupés à tester d'autres fonctionnalités.
L'automatisation peut aider à lutter contre l'erreur humaine
Les gens font des erreurs et peuvent rater des choses. Les machines, lorsqu'elles sont correctement programmées, ne font pas d'erreurs. Et lorsqu'il y a une erreur dans le code de test ou dans son exécution, vous le saurez instantanément car le test échouera . Avec les tests automatisés, il n'y a pas de « ça semble fonctionner comme prévu » : ça marche ou ça ne marche pas.
Exemple : Par manque de temps ou de spécialistes, les QA manuels peuvent manquer de petits signes de bogues dans les fonctionnalités . De tels bogues peuvent conduire à des échecs vraiment épiques, et les corriger à des stades ultérieurs du développement coûtera beaucoup plus de temps (et d'argent) que de les corriger dès le début.
Ce scénario ne peut pas se produire lorsqu'un ordinateur exécute les tests car les ordinateurs (a) exécutent les tests plus rapidement que les gens et (b) ne sont pas distraits, fatigués ou trop habitués au code.
L'automatisation peut économiser de l'argent (si elle est appliquée correctement)
Celui-ci est apparemment simple : lorsqu'un AQ passe moins de temps sur une tâche, cela coûte moins cher. Dans les débats sur les tests manuels par rapport aux tests automatisés, ce fait revient souvent. Et c'est vrai dans une certaine mesure : à long terme, automatiser ce qui peut être automatisé vous fera très probablement économiser beaucoup d'heures de travail en assurance qualité et, par conséquent, beaucoup d'argent.
Cependant, il y a un autre côté de la médaille, car les logiciels de test automatisés coûtent également de l'argent. Pour cette raison, l' automatisation des tests est souvent utilisée sur de gros projets plutôt que sur des projets à court terme où il n'y a pas grand-chose à gagner.
Certains tests ne peuvent être effectués qu'avec des tests automatisés
Lorsqu'il s'agit de tester de grandes applications censées être utilisées par de nombreuses personnes en même temps (logiciels de visioconférence ou de streaming, outils éducatifs en ligne ou jeux populaires), il est pratiquement impossible de tester manuellement leurs performances sous stress. Les tests qui vérifient si une application peut supporter une charge de plusieurs centaines d'utilisateurs simultanément sans problème auraient besoin de centaines de testeurs. Cela ne semble pas être une solution logique ou économiquement viable, n'est-ce pas ?
Cependant, un script peut facilement émuler une telle charge. Des tests automatisés sont requis pour les tests de charge, de contrainte et de performance. Cependant, ces tests ne sont pas nécessaires pour chaque application que vous développez. Vous devrez décider de les exécuter séparément pour chaque produit.
Inconvénients des tests automatisés
Passons maintenant aux inconvénients.
Les tests automatisés sont plus complexes que les tests manuels
Les scripts ne s'écrivent pas eux-mêmes. Les QA les écrivent manuellement pour chaque tâche, ce qui signifie qu'un ingénieur en automatisation QA a besoin de compétences en programmation et de la connaissance d'au moins un langage de programmation (le plus populaire pour les tests automatisés étant Python, Java et C#). Pour configurer des tests automatisés, un QA compile un scénario de test pour qu'un script s'exécute. Chaque scénario est écrit à la main, ce qui prend du temps de la part d'un QA.
Pourtant, avec des tâches répétitives et des tâches qui peuvent être automatisées , à long terme, l'automatisation est la meilleure option.
Les tests automatisés ne sont pas la réponse à tous les problèmes
Il y a des choses que les tests automatisés ne peuvent pas faire avec les technologies actuelles. Par exemple, ils ne peuvent pas remplacer les tests manuels lorsqu'il s'agit de tester la conception ou la convivialité - ces choses nécessitent des connaissances humaines. Cependant, les tests de conception et de convivialité d'une application ne sont pas toujours effectués par les QA non plus : les commentaires des utilisateurs peuvent être recueillis auprès d'un groupe de test d'utilisateurs en plus des employés de l'entreprise. Ce groupe test peut être rémunéré ou non.
Un autre cas où les tests automatisés échouent est le test de fonctionnalités complètement nouvelles. Pour qu'un spécialiste de l'assurance qualité sache comment programmer un script de test, il doit savoir à quels résultats il doit s'attendre .
La plupart des tests logiciels peuvent être automatisés. Mais pas tout. Il existe encore des cas où le test manuel est la méthode préférée. Parlons un peu des avantages des tests manuels par rapport aux tests automatisés .
Avantages des tests manuels
La réalité du développement logiciel moderne est que la plupart des tests sont encore effectués manuellement. Les raisons varient d'une entreprise à l'autre. Nous n'en soulignerons ici que quelques-uns.
Les tests manuels sont plus faciles à mettre en œuvre
Il est assez simple d'équiper votre entreprise de spécialistes qualifiés en AQ manuelle par opposition à des experts en automatisation. De nombreuses tâches de test manuel peuvent être effectuées sans accès au code et sans aucune connaissance du codage. C'est pourquoi les tests sont parfois considérés comme la porte d'entrée du développement logiciel : vous pouvez commencer avec le strict minimum de connaissances et acquérir des compétences en cours de route . Cela signifie qu'il y a plus de bons AQ manuels sur le marché que de spécialistes de l'automatisation.
Le test manuel est le bon choix pour les tâches extrêmement complexes
Lors du test de fonctionnalités exceptionnellement complexes, le temps nécessaire pour exécuter des tests manuels et le coût de cette opération peuvent parfois être inférieurs au temps et à l'argent nécessaires pour écrire des scripts d'automatisation. En outre, ces types de tâches ne sont généralement terminés qu'une seule fois en raison de leurs spécificités. Cela rend l'automatisation peu rentable .
Cependant, cela dépendra aussi au moins en partie des compétences de votre QA, car un spécialiste de l'automatisation hautement qualifié est capable de créer des scénarios complexes plus rapidement et avec plus de précision qu'un QA junior. Vous devrez également calculer l'utilité de créer chaque script d'automatisation .
Les tests manuels sont plus adaptés à certaines tâches
La conception de l'interface, l'expérience utilisateur et la convivialité ne peuvent toujours pas être testées par des scripts. Ces tests nécessitent un retour humain, parfois de la part de spécialistes de l'assurance qualité, d'autres fois d'un groupe de test d'utilisateurs.
Un autre cas est celui où une attention particulière doit être accordée à des parties spécifiques d'un test - écrire un script pour un tel test est trop compliqué et généralement pas aussi fiable que de faire appel à un spécialiste qui sait quoi rechercher.
Parfois, les AQ effectuent également des tests spontanément, de manière inhabituelle et sans préparation. C'est ce qu'on appelle des tests ad hoc . Les tests ad hoc peuvent vous aider à trouver des défauts inattendus. Pour de tels tests, l'écriture d'un script est impossible car vous ne savez pas à quel résultat s'attendre. De plus, de tels scripts ne seraient probablement utilisés qu'une seule fois .
Exemple : Un type de test ad hoc, appelé test de singe , vise à découvrir ce qui doit être fait pour casser le système. Des actions aléatoires sont effectuées pour voir si quelque chose déclenche le plantage du système.
Inconvénients des tests manuels
Voici pourquoi les tests d'automatisation sont désormais souvent préférés aux tests manuels.
Les tests manuels sont intrinsèquement plus lents
La même tâche qui peut prendre plusieurs heures, voire plusieurs jours à un AQ humain, ne prendra que quelques minutes voire quelques secondes pour une machine. Les systèmes informatisés et les scripts analysent les données plus rapidement qu'un humain. Les tests manuels sont fastidieux et chronophages, en particulier avec les tâches répétitives, tandis que l'automatisation des tests effectuée avec une préparation appropriée est rapide et simple.
Les tests manuels sont sujets aux erreurs
Les gens peuvent manquer des détails lorsqu'il s'agit de tâches qui sont exécutées encore et encore, comme le retest d'une fonctionnalité après chaque mise à jour.
Répartir l'attention sur plusieurs points au cours d'une même tâche peut également entraîner des problèmes pour un contrôle qualité, rendant les résultats des tests moins fiables . Avec des fonctionnalités complexes, vous devrez choisir entre des tests manuels et automatisés au cas par cas. Parfois, l' automatisation peut être irrationnellement coûteuse et longue en raison de la complexité des scripts, surtout si un test n'est exécuté qu'une seule fois.
À long terme, n'avoir que des tests manuels peut être plus coûteux
Il est vrai qu'avec les tests automatisés, une entreprise doit investir une somme parfois considérable dès le départ, à la fois en logiciel et en personnel qualifié (les QA d'automatisation coûtent plus cher que les spécialistes manuels).
Cependant, selon le type et le nombre de tests requis pour le projet, les tests manuels peuvent également représenter une charge financière. Lorsqu'un projet est important et que les tests prennent beaucoup de temps à terminer ou sont répétés plusieurs fois, les coûts montent en flèche . Cette question doit être abordée au début de la planification du projet pour évaluer le coût des deux options et découvrir laquelle est la plus économiquement faisable. Habituellement, la meilleure décision est de combiner des tests manuels et automatisés.
Tests manuels vs tests automatisés - l'épreuve de force
Voyons maintenant une comparaison côte à côte entre les tests manuels et les tests automatisés.
Test manuel | Tests automatisés |
---|---|
Prend beaucoup de temps à compléter | Prend beaucoup moins de temps pour terminer |
Ne nécessite pas de compétences en programmation | Nécessite des compétences en programmation |
Coût initial plus faible, mais plus les tests sont longs, plus le coût est élevé | Nécessite un investissement initial plus élevé mais est plus rentable pour les projets à long terme avec beaucoup de tests répétitifs |
Plus grande possibilité d'erreurs dues au facteur humain | Plus précis et fiable si les tests sont bien construits |
Les tâches complexes nécessitent des spécialistes supplémentaires | Les tâches complexes nécessitent un temps de préparation supplémentaire |
Ne convient pas aux tests de performance, de charge ou de stress | Ne convient pas aux tests de convivialité, d'interface utilisateur ou d'expérience utilisateur |
Où devriez-vous utiliser les tests manuels ?
Voici quelques tests qu'il est préférable d'exécuter manuellement :
- Essais exploratoires. Il s'agit d'un premier test de fonctionnalités entièrement nouvelles. Étant donné que la fonctionnalité impliquée est nouvelle et qu'aucun cas de test prêt à l'emploi n'est disponible, l'automatisation de ce type de test est impossible.
- Interface graphique visuelle et tests d'utilisabilité. Le test des interfaces utilisateur et des expériences utilisateur comprend une évaluation visuelle et nécessite une observation humaine.
- Tests ad hoc. Ce sont des tests spontanés effectués sans adhérer aux exigences ou à la documentation et visant à dévoiler des bogues inattendus.
Où utiliser les tests automatisés ?
L'automatisation des tests est de plus en plus utilisée aujourd'hui, et de nouveaux cas apparaissent que les tests automatisés peuvent gérer. Voici quelques exemples de cas où les tests automatisés sont recommandés :
- Les tests de fumée vérifient les fonctionnalités de base. Il est généralement quelque peu standardisé et réutilisable.
- Les tests de régression retestent les fonctionnalités existantes après les mises à jour de l'application elle-même ou du système d'exploitation et sont conçus pour déterminer si des conflits se produisent.
- Les tests de performance/charge sont utilisés pour tester des applications destinées à un usage intensif par de nombreux utilisateurs en même temps. Le test de charge simule une charge élevée pour voir si l'application se bloque.
- Les tests de stress sont similaires aux tests de charge et impliquent la création d'une charge virtuelle sur l'application. Cependant, alors que les tests de charge sont effectués pour voir si l'application est capable de résister à une charge spécifique, les tests de résistance visent à déterminer où se situe la limite de la charge. En d'autres termes, cela amène l'application au point de rupture.
- Exécution répétée. Certains tests sont exécutés de manière répétée à certains stades de développement ou sont des tests standard réutilisables pour différentes applications.
Alors quel est le verdict ?
Après avoir comparé les tests manuels et automatisés, nous ne pouvons pas dire avec certitude si les tests automatisés sont meilleurs que les tests manuels.
Le test de logiciels est un processus complexe et très varié. Selon ce qui est testé, à quel stade et dans quel but, différents tests seront effectués. Et cela, bien sûr, affecte le choix entre les tests manuels et automatisés. Certains tests sont mieux automatisés et d'autres devraient toujours être effectués manuellement .
Le meilleur moyen pour les sociétés de développement de logiciels d'améliorer leurs compétences est de combiner des spécialistes des tests manuels et automatisés , de répartir judicieusement les tâches de test entre eux et de tirer le meilleur parti des deux méthodes. Chaque projet peut combiner des tests manuels et automatisés dans des proportions différentes, et il est préférable de créer la stratégie de test d'un projet dès le départ.