Avec la croissance du développement informatique en mode Agile et des processus DevOps, le rôle d’expert en tests automatisés gagne en pertinence. De plus en plus de compagnies tentent de livrer des projets informatiques rapidement, ce qui crée une pression croissante sur la qualité des projets livrés.
Il faut tester le plus possible, mais il faut surtout trouver des meilleures méthodes pour tester. L’objectif est de pouvoir donner de la rétroaction rapidement et fréquemment à l’équipe de développement et réparer les anomalies au moment où elles sont le moins dommageables.
Les tests automatisés n’ont pas la prétention de remplacer les tests manuels, mais plutôt de les complémenter. L’exécution d’une série de tests manuels peut rapidement devenir redondante, ce qui justifie qu’une équipe de développement de logiciels retienne les services d’un expert en automatisation.
Pourquoi? Pour créer et générer des algorithmes afin que ces tâches soient exécutées automatiquement tout en nécessitant un minimum d’effort humain.
Pourquoi opter pour des tests automatisés?
L’automatisation des tests apportent plusieurs bénéfices:
Une économie de temps et d’argent
Tester manuellement tous les changements d’une application en développement requiert énormément de temps et d’effort.
Une fois en place, les tests automatisés peuvent être exécutés à répétition, rapidement et sans charge supplémentaire pour l’équipe.
Une amélioration de la couverture de la qualité
Un test automatisé peut être exécuté sur toutes les plateformes disponibles et avec une multitude de configurations afin de couvrir un maximum de scénarios.
Des centaines de tests automatisés, de simples à complexes, peuvent être exécutés en une seule ligne de commande pour chaque changement dans l’application en développement procurant une couverture impossible à réaliser manuellement.
Une précision imbattable
Même les meilleurs testeurs manuels commettront des erreurs à force de répéter les mêmes tests alors qu’un test automatisé exécute chaque action avec la même précision.
Le testeur, libéré de sa charge, aura plus de temps à consacrer à l’écriture de nouveaux scénarios ou à attaquer la vérification de fonctionnalités complexes.
Une qualité sous un angle différent
Un test automatisé peut simuler certaines composantes de l’application pour concentrer l’effort de vérification sur des composants ciblés.
Il est aussi possible de créer des milliers d’utilisateurs virtuels pour interagir simultanément avec l’application et son infrastructure afin de valider comment elle se comporte sous cette charge.
Un soutien partagé par l’équipe
Les développeurs peuvent également exécuter les tests automatisés pour déceler des défectuosités avant de transférer leur code aux testeurs.
Chacun de leur changement peut être validé en exécutant une série de tests automatisés qui notifie le développeur immédiatement en cas de problème.
Une meilleure équipe
Exécuter des tâches répétitives par l’entremise des tests automatisés donne à l’équipe le temps de se consacrer à des tâches ayant une réelle valeur ajoutée pour le client.
La vélocité s’accélère et la confiance générale est améliorée.
Les compétences de l’expert en test automatisés
Pour arriver à implanter des méthodes de tests agiles et robustes, les compétences du spécialiste en test logiciel se rapprochent de celles des programmeurs.
L’expert en tests automatisés possède un trousseau de compétences unique: il sait tester et peut aussi programmer. Il sait déployer de nouvelles solutions pour automatiser les processus de tests et réduire l’effort humain requis. Il permet à l’équipe de passer plus de temps à développer et supporter des applications au lieu de les tester.
Quelles sont les tâches quotidiennes de l’expert en tests automatisés?
En mode Agile, l’expert en tests automatisés analyse les nouvelles fonctionnalités à développer. En collaboration avec les développeurs et les analystes du projet, il documente les critères d’acceptation de chacune des fonctionnalités en les décortiquant sous forme de scénarios de test.
Le scénario de test est un document contenant:
- Les pré requis
Exemple: avoir accès à un utilisateur avec des droits spécifiques - Les intrants à utiliser
Exemple: utiliser le produit X pour ajouter au panier et utiliser le mode de paiement par carte de crédit - Les actions à exécuter
Exemple: ajouter un produit au panier, procéder au paiement - Les vérifications requises
Exemple: les taxes devraient être affichées séparément et incluses dans le prix final
Les scénarios de test servent de mode d’emploi pour valider les critères d’acceptation. Ils seront ensuite triés en fonction de leur potentiel d’automatisation.
Il faut d’abord considérer deux éléments avant la sélection des scénarios de test à automatiser:
- À quel point on veut tester l’application avant de la livrer au client?
- Quelle est la capacité de test de l’équipe?
On compare ensuite ces informations aux bénéfices de l’automatisation des tests versus l’effort nécessaire pour y parvenir.
Pour qu’un scénario de test soit un bon candidat pour l’automatisation, il doit répondre à un ou plusieurs des critères suivants:
Son exécution est longue ou sa fréquence est élevée
Ces deux critères font en sorte qu’un testeur manuel doit être mobilisé plus longtemps et plus souvent pour une même tâche de test.
Il est donc préférable de les automatiser pour affecter le testeur à des tâches plus pertinentes.
Les ressources requises
Lorsque les résultats d’un test doivent être comparés sur différents appareils, systèmes d’exploitation, bases de données, etc…
Les automatiser permet de réutiliser les actions avec des configurations différentes et même de les exécuter en parallèle.
La sévérité d’une éventuelle anomalie et la complexité d’un test
Les tests critiques ou complexes sont plus difficiles à exécuter manuellement. Une fois automatisés, les erreurs humaines sont minimisées.
La valeur ajoutée du test automatisé dépasse l’effort requis pour l’automatisation
Si on juge que le temps économisé par l’exécution automatique d’un scénario de test peut facilement dépasser le temps nécessaire pour l’automatiser, celui-ci devient automatiquement un bon candidat.
Le bon outil
L’expert en tests automatisés doit ensuite choisir l’outil d’automatisation en collaboration avec les responsables du projet. Il a l’embarras du choix et devra faire une sélection éclairée puisque sa décision affectera grandement l’effort requis pour l’automatisation.
Certains des critères les plus importants dans le choix de l’outil sont:
- Le budget disponible versus le coût de l’outil
- La capacité de l’expert à utiliser l’outil
- Exemple: un outil qui nécessite une connaissance de Java, Javascript ou Python
- Son intégration avec l’environnement du projet
- Plateforme d’intégration continue et de déploiement continu telle qu’Azure DevOps, TeamCity, Jenkins, etc…
- Est-ce que l’outil est stable et supporté par une grande communauté?
- Est-ce qu’il y a une documentation claire disponible?
- La courbe d’apprentissage est-elle acceptable compte tenu des échéanciers?
- L’outil peut-il servir pour tous les projets ou son utilisation est spécifique au projet en cours?
- Etc…
Le processus d’automatisation peut commencer, mais l’expert doit d’abord s’assurer que les scénarios de test fonctionnent lorsqu’ils sont exécutés manuellement et que l’environnement de test est disponible.
L’exécution manuelle des scénarios de test permet d’estimer l’effort requis pour l’automatiser convenablement. Une fois les estimations approuvées par les responsables du projet, l’expert en tests automatisés débute l’automatisation.
La plupart des outils d’automatisation fonctionnent en écrivant des lignes de code qui instruisent la machine à exécuter une série d’actions précises. Ce code sera inclus dans le répertoire de code du projet et sera versionné de la même façon.
Il est primordial de penser aux tests comme une partie intégrale de la solution. Ainsi, une application divisée en plusieurs parties devrait amener une réflexion sur la relation entre la version du code à tester et la version des tests. Par exemple, devrait-on lier la version d’un micro-service à la suite de tests? Qu’en est-il des dépendances de ce service?
Le spécialiste en tests automatisés doit donc posséder des connaissances semblables à celles des programmeurs afin de bâtir les tests automatisés. Il doit savoir utiliser les meilleures pratiques en termes d’utilisation d’un environnement de développement intégré (Visual Studio Code, IntelliJ, etc…), d’écriture de code selon les standards et de gestion de versions d’un répertoire de code partagé.
Le code est ensuite testé. Oui, même le code qui sert à faire les tests automatisés doit être testé! On veut s’assurer que le test automatisé est robuste et capable de se synchroniser à plusieurs situations, telle une connexion plus lente ou une infrastructure moins puissante que dans un environnement de production.
Le produit fini est ensuite envoyé vers le répertoire de code commun où les autres membres de l’équipe le révise avant de l’intégrer au reste du code source. L’expert en tests automatisés peut alors s’attaquer au scénario suivant.
Les tests automatisés intégrés au code source seront exécutés automatiquement dès qu’un programmeur tentera d’intégrer de nouveaux éléments au code source. Ils peuvent également être démarrés à tout moment localement par le programmeur qui veut tester son nouveau code avant de le soumettre en révision pour intégration. Leur exécution génère un rapport confirmant que tout a été validé avec succès ou que des erreurs sont survenues.
Quand il n’est pas en train d’automatiser un scénario de test, l’expert en tests automatisés gardent un œil sur les exécutions automatiques des tests qu’il a produit et intervient au besoin si l’exécution échoue. Il doit également se tenir à jour des nouvelles versions disponibles de son outil d’automatisation en plus d’explorer de nouvelles façons d’automatiser les tests.
Les mythes reliés à l’automatisation des tests
Il est impossible de tout automatiser. L’automatisation ne vient pas remplacer les testeurs manuels. Elle permet simplement d’exécuter plus de tests dans le même lapse de temps et de les exécuter plus souvent. Elle allège le fardeau des testeurs manuels en leur permettant de se concentrer à détecter des anomalies et à écrire de nouveaux scénarios de tests au lieu d’exécuter sans cesse les mêmes tests répétitifs.
La qualité de l’automatisation est directement reliée à la qualité des tests manuels. Un scénario de test clair avec des étapes et des validations précises deviendra un excellent test automatisé. Il est toutefois impossible d’améliorer un scénario en l’automatisant. Un scénario qui ne fonctionne pas manuellement sera également un mauvais scénario de test automatisé, mais plus rapide…
Un bon outil de test automatisés est nécessaire, mais ce n’est pas suffisant. Avoir le bon outil n’est que le début. L’outil ne fait pas tout: ce sont les personnes qui l’utilisent qui permettront d’exploiter au maximum ses forces et qui trouveront des solutions pour pallier ses faiblesses.
Conclusion
L’automatisation dans le domaine du développement informatique ne doit pas se limiter seulement à programmer des scénarios de test manuels. Elle peut aussi propulser l’intégration et le déploiement de l’application en développement.
On regroupe toutes les tâches d’automatisation qui forment l’intégration continue, le test continu et le déploiement continu sous l’appellation DevOps, une méthodologie maintenant incontournable dans le domaine.
On peut également se servir de l’automatisation pour accomplir d’autres tâches répétitives, comme créer des données maîtres pour une application, copier et renommer des centaines de fichiers ou encore envoyer des centaines de courriels de chats mignons à ses collègues pour les embêter un peu!
Vous désirez plus d’informations concernant les tests automatisés chez Uzinakod ou vous souhaitez nous parler de votre projet? N’hésitez pas à nous contacter dès maintenant.