how implement efficient test automation agile world
L'automatisation en Agile est très critique.
Pensez aux nombreuses fonctionnalités qui sont ajoutées et fournies dans chaque Sprint. Il doit y avoir un moyen de s'assurer que la fonctionnalité nouvellement ajoutée n'affecte pas la fonctionnalité existante.
En raison de la faible durée du Sprint, il est pratiquement impossible d'exécuter la combinaison entière à chaque fois que le produit est incrémenté à la fin du Sprint. Avoir une combinaison de test automatisée jouerait certainement un rôle plus important ici.
Cependant, l'introduction et la maturation de l'automatisation prendraient certainement du temps. Faire un investissement initial dans la planification et la conception de l'activité d'automatisation serait certainement rentable à long terme.
Dans cette 3ème partie de la série avancée Agile Testing, j'essaie de citer quelques conseils à considérer en fonction de mon expérience, lorsque vous apportez l'automatisation à votre projet.
Aussi, lisez partie 1 et partie 2 d'abord pour avoir une meilleure compréhension du sujet.
Ce que vous apprendrez:
Quoi automatiser en Agile?
Chaque fois que nous prévoyons d'introduire l'automatisation dans nos projets, la plupart d'entre nous votons immédiatement pour le «costume de test de fumée» ou le «costume de test de régression» pour être le meilleur candidat à l'automatisation . Bien sûr, ils le sont, mais lorsque nous pensons à la pyramide de test d'automatisation, nous pouvons en conclure que ce n'est que la couche supérieure de la pyramide dont nous parlons.
En dehors de la couche ci-dessus, nous avons toujours le couche de service et le couche unitaire qui sont plus importants.
test unitaire test d'intégration test du système
Alors, quels tests, autres que les tests de fumée et les tests de régression, peuvent être de bons candidats pour l'automatisation?
# 1) Constructions et déploiements
Dans les environnements traditionnels, nous avons des versions prédéfinies qui peuvent être hebdomadaires, bimensuelles ou parfois même mensuelles. L'une des raisons est que ces déploiements prennent du temps. Le problème avec cette approche est que nous devons attendre les dates prédéfinies pour corriger les bogues ou pour implémenter les nouvelles fonctionnalités, il y a donc un délai.
La deuxième raison était - au moment où les testeurs terminent les tests et trouvent des bogues et des défauts, les programmeurs sont passés à différentes implémentations et ont moins d'intérêt à résoudre les bogues de l'ancienne application. Cette approche retarde également le temps de mise à disposition de la fonctionnalité en production.
La construction et les déploiements sont les entités qui sont répétitives et parfois ennuyeuses. Le déploiement d'une build peut également prendre des heures, ce qui retarde les tests et éventuellement les commentaires. Étant une tâche répétitive, les déploiements deviennent un bon candidat pour l'automatisation.
Lire aussi=> Le processus de gestion des versions et du déploiement
Voici quelques-uns des avantages du déploiement de build automatisé:
- Aucune chance de faire des erreurs de déploiement (des erreurs humaines telles que la copie du fichier incorrect ou la copie du fichier vers un emplacement incorrect peuvent être évitées)
- Les bogues / fonctionnalités sont disponibles pour tester dès qu'elles sont corrigées
- Les testeurs ont plus de temps pour tester
- La fonction est prête à être déplacée vers la production en moins de temps
- Retour rapide
# 2) Tests unitaires / tests de composants
J'ai déjà parlé de l'importance d'automatiser la couche unitaire en utilisant le Approche TDD dans mon dernier tutoriel .
Cela forme la couche la plus basse de la pyramide, par conséquent, la fondation et toute fondation doivent être solides comme le roc. L'équipe de développement doit collaborer et travailler ensemble pour intégrer la plupart des tests dans cette couche.
# 3) Test des API / services Web
Les services Web sont le support dans lequel deux applications échangent des données ou des informations en termes de demande et de réponse, sans se soucier de l'architecture sous-jacente ou de la technologie. En termes plus simples, donner une demande et valider la réponse est ce que nous faisons normalement lors des tests de services Web.
Tester les services Web implique d'écrire des programmes pour appeler ces méthodes de service Web et de valider la / les valeur (s) qu'il renvoie. Nous pouvons même tester les services pour diverses permutations et combinaisons. Ayez toutes les données de test dans la feuille Excel et votre programme peut lire les données et appeler le service testable en passant les données de test en tant que paramètre et valider les résultats.
Ce test particulier fait partie de la couche intermédiaire de la pyramide. La plupart des tests fonctionnels peuvent être poussés dans cette couche. La résolution des défauts qui surviennent dans cette couche devient facile à corriger et ils ne sont pas reportés jusqu'à ce que l'interface utilisateur soit disponible.
comment utiliser un fichier .jar
# 4) Test derrière l'interface graphique
L'automatisation des tests derrière l'interface graphique est comparativement plus facile que l'automatisation de l'interface graphique réelle. Un autre avantage est qu'indépendamment des modifications de l'interface utilisateur, la fonctionnalité reste intacte. Même si une partie de l'élément d'interface utilisateur est modifiée, la fonctionnalité de la fonctionnalité ne change pas. Cette technique se concentre principalement sur la logique métier et les règles.
Les cas de test sont principalement écrits dans un format tabulaire ou dans une feuille de calcul et les fixtures / extraits de code sont écrits qui acceptent l'entrée de ces tables et renvoie les résultats. Les résultats sont générés immédiatement et constituent une excellente plateforme pour les parties prenantes non techniques pour exécuter ces tests et obtenir les résultats attendus. L'un des outils utilisés pour réaliser cette technique est Aptitude .
# 5) Tests non fonctionnels
Ce technique de test non fonctionnelle implique essentiellement les tests de charge, de performance et de stress. Il existe divers outils facilement disponibles sur le marché qui peuvent être utilisés pour automatiser ces tests.
# 6) Comparaisons de données
Beaucoup de nos tests nous obligent à comparer des fichiers de données, y compris des fichiers texte, CSV ou Excel
- Ces fichiers peuvent être comparés à des références pour la validation des données
- Les comparaisons peuvent être des mêmes données mais d'un format différent. Cela se produit essentiellement lorsque nous avons deux des mêmes fichiers générés à partir de deux sources différentes
Ces comparaisons peuvent être répétitives, donc automatisées.
# 7) Recherche
La recherche d'une entité spécifique à partir d'un grand nombre de fichiers peut également être fastidieuse et Dieu nous aide si c'est une tâche répétitive. Un exemple est la recherche dans les fichiers journaux. Si c'est aussi une tâche fastidieuse et répétitive, nous devrions penser à l'automatiser.
# 8) Tâches répétitives
Toute tâche commençant par interagir avec les utilisateurs finaux ou écrire des histoires pour la développer, si elle est répétitive, doit être considérée dans l'automatisation. Nous devons comprendre que faire de l'automatisation ne signifie pas qu'il doit y avoir un outil / une technologie sophistiqués impliqués. Il peut s'agir d'une simple macro VB ou d'un programme Java avec un Javascript pour résoudre le problème.
Où commencer?
Il n'y a pas de puces ou de guide étape par étape indiquant par où commencer l'automatisation. Le lancement de l'automatisation pour l'équipe vous oblige à réfléchir et à appliquer des réflexions approfondies sur les aspects que vous cherchez à automatiser, ou quel est le but ultime de l'automatisation?
Vous pouvez commencer par:
- Identifier les tâches répétitives,
- Identifier les zones douloureuses de l'application
- Identifier les défis du test
Si vous n'avez pas d'automatisation dans le projet / l'équipe de tournée, vous pouvez probablement opter pour une approche multicouche où les tests unitaires peuvent être ciblés en premier pour être automatisés. Cela vous donnerait le meilleur retour sur investissement.
Simultanément, les testeurs peuvent commencer à travailler sur la combinaison de test de fumée, puis sur la régression. Une fois que l'équipe a acquis les compétences et se sent à l'aise, passez progressivement à l'automatisation des autres tâches répétitives.
Ne vous lancez pas directement dans l'achat d'un nouvel outil sans évaluer vos besoins. Comme je l'ai dit plus tôt, un simple programme ou une macro peut résoudre votre objectif d'automatiser certaines des tâches répétitives. Alors, avant de décider d'acheter un outil, faire le POC et évaluer si cet outil serait efficace à utiliser.
Veuillez parcourir ces documents où j'ai fourni plus de détails sur la façon de sélectionner les cas de test corrects pour l'automatisation et quelques informations sur l'estimation des efforts d'automatisation dans les articles suivants Manuel aux défis du processus de test d'automatisation et test d'estimation du projet d'automatisation du sélénium.
Une fois la portée de l'automatisation et de l'outil finalisée, la prochaine étape consiste à concevoir le cadre.
N'oubliez pas qu'en Agile, le framework évolue. Ne ciblez PAS la conception de l'ensemble du cadre d'abord, puis l'implémentation. Concevez et implémentez le MVP (Minimum Viable Product), puis améliorez le cadre existant pour inclure plus de fonctionnalités. Vous devez également appliquer de bonnes pratiques de codage et de développement si vous voulez que votre suite d'automatisation soit robuste.
Quelques bonnes pratiques
- Ne ciblez pas l'automatisation à 100% en une seule fois. Commencer petit. Souvenez-vous que c'est un processus évolutif
- Suivez les mêmes pratiques Agile que vous suivez pour tout développement logiciel. L'automatisation nécessite également une planification et une conception appropriées. Vous ne voudriez pas augmenter vos dettes techniques lorsque vous automatisez
- Créez votre backlog d'automatisation des tests. Ce retard peut aller de la mise en œuvre d'une nouvelle fonctionnalité à l'amélioration d'une fonctionnalité existante. Donnez des points d'histoire à vos éléments identifiés et attribuez-les en conséquence. Apportez ces éléments de backlog à votre Sprint et suivez-les à l'aide d'un tableau Kanban
- Écrivez les critères d'acceptation de vos histoires d'automatisation. Ces critères d'acceptation peuvent inclure:
- Intégration de la suite de tests avec CI
- Portage de la combinaison vers un emplacement centralisé
- Envoyez les résultats par e-mail
- Fourniture de l'envoi des fichiers journaux d'erreurs lorsque le test échoue
- Tout autre critère….
- Ne passez pas trop de temps à évaluer un nouvel outil. Vous pouvez créer une liste de contrôle hiérarchisée de tout ce que vous voulez du nouvel outil et décider d'un calendrier pour l'évaluer. Si vous ne voyez pas vos résultats dans les délais impartis, passez au suivant
- Prenez une décision judicieuse sur ce qu'il faut automatiser. Tous les éléments d'automatisation ne sont pas efficaces et génèrent un retour sur investissement positif. N'automatisez pas uniquement pour des raisons d'automatisation
- Utilisez l'environnement de développement approprié. Ne gardez pas le code dans votre localité. Avoir un référentiel pour conserver votre code et prendre l'habitude de vérifier votre code en fin de journée
- De la même manière, essayez d'exécuter vos tests automatisés à partir d'un emplacement centralisé. Faites-en une personne indépendante. Il devrait être que n'importe qui de l'équipe puisse déclencher les scripts depuis sa machine et les résultats sont obtenus par e-mail
Quels sont les principes Agile qui peuvent être appliqués à l'automatisation?
Quelques conseils très simples:
- Gardez les choses simples. Faites ce qui est nécessaire. J'ai vu de nombreux cas où nous fournissons une mise en œuvre enrobée de sucre, ce qui rend l'automatisation inutilement compliquée. Évitons les choses qui ne sont pas nécessaires
- Faire des choses simples ne signifie pas faire les choses les plus faciles. Cela signifie prendre de petites mesures pour atteindre vos objectifs d'automatisation. Vous pouvez utiliser une fonction simple pour automatiser, mais il peut arriver que la mise en œuvre de l'automatisation se révèle complexe
- Appliquer l'approche de toute l'équipe . Je pense que tout le monde est un testeur dans une équipe agile. Ne restreignons pas le travail d’automatisation uniquement aux testeurs ou uniquement aux développeurs. Chacune des disciplines doit se mettre à la place de l’autre pour automatiser le projet. Cette approche serait également efficace pour résoudre tout problème technique lié à la mise en œuvre
- Le framework évolue en Agile . N'essayez pas de fournir trop de fonctionnalités qui pourraient rendre inutilement la pièce d'automatisation complexe
- Prenez le temps de bien faire les choses. Prenez le temps de le concevoir correctement pour éviter les dettes techniques
- Obtenez des commentaires fréquents
- Appliquer les normes et pratiques de codage appropriées. La conception doit être simple, appliquer les concepts OOPS et essayer de garder les tests indépendants les uns des autres. Tenez compte de facteurs tels que la «maintenabilité» de la combinaison d'essai
Est-ce que je vois des défis lors de l'automatisation dans Agile?
L'automatisation dans le monde Agile s'accompagne ses propres défis :
- Nous devons vraiment bien planifier. Pour décider de la suite de tests, de l'outil, du cadre et de l'approche appropriés, tous ont besoin d'une stratégie appropriée. Cependant, nous devons nous rappeler de NE PAS trop planifier. Gardez à l'esprit le MVP (Minimal Viable Product)
- Compromettre la qualité du code parce que nous voulons livrer rapidement: nous devons nous rappeler que les dettes techniques tiennent également bien dans l'automatisation
- Équipe la plupart du temps, les équipes ne suivent pas «l'approche globale de l'équipe» et laissent l'entière responsabilité du codage et de la maintenance de la suite automatisée aux testeurs, ce qui ajoute à la responsabilité des testeurs
- L'automatisation des tests fonctionnels est plus difficile que l'automatisation de l'interface utilisateur
Parmi tous ces défis, le défi le plus critique est de mettre à niveau les compétences des testeurs.
Faire et maintenir l'automatisation pour une équipe est presque comme une activité de programmation (développement) que font les programmeurs (développeurs). Non seulement la mise en œuvre, mais également l'intégration de la combinaison automatisée à l'EC sont importantes et nécessitent que les testeurs apprennent et adoptent de nouvelles compétences et apprennent de nouveaux outils et technologies.
Quelques outils Open Source qui s'intègrent dans Agile
- Selenium WebDriver - Pour l'interface utilisateur
- Grille de sélénium - Pour exécution parallèle
- Concombre - Pour BDD
- JMeter - Pour les tests de performance
- SAVON - Pour les services Web
- WireMock - Test de service Web lorsque le service Web n'est pas disponible.
- Epochs - pour mobile
Permettez-moi de conclure avec les fameux quadrants de test Agile:
Quadrant 1 est le test de l'unité et des composants qui peut être automatisé avec l'approche TDD.
meilleur VPN pour kodi
Quadrant 2 parle des tests de fonctionnalité, où nous pouvons appliquer l'approche BDD.
Quadrant 3 est le seul quadrant qui a une portée de test manuel.
Quadrant 4 parle essentiellement des tests qui peuvent être réalisés par certains outils. Cela prend en charge les tests de charge, les tests de stress, les tests de volume et les tests de sécurité.
Conclusion
Il y a beaucoup de possibilités d'automatisation en dehors des tests de fumée et des tests de régression. Par conséquent, nous devons nous libérer du concept de confiner l'automatisation uniquement à ces types de tests, ce qui signifie à son tour que l'ensemble des compétences d'un testeur en Agile exige plus que la simple recherche de bogues et de défauts.
Les testeurs doivent être plus collaboratifs et affiner leurs compétences en programmation / automatisation. Si de plus en plus de tests sont automatisés, cela donnerait aux testeurs plus de temps pour s'engager dans des tâches plus complexes et plus complexes.
A propos de l'auteur: Cet article a été rédigé par Shilpa, membre de l'équipe STH. Elle travaille dans le domaine des tests de logiciels depuis plus de 10 ans dans des domaines tels que la publicité sur Internet, la banque d'investissement et les télécommunications.
Veuillez partager vos commentaires et réflexions ci-dessous.
lecture recommandée
- Tutoriel AutoIt - Téléchargement, installation et script AutoIt de base
- Les testeurs perdent-ils leur emprise sur les tests en raison de l'automatisation?
- Défis des tests manuels et automatisés
- Meilleurs outils de test de logiciels 2021 (Outils d'automatisation des tests QA)
- Processus de test d'automatisation en 10 étapes: comment démarrer les tests d'automatisation dans votre organisation
- Êtes-vous un expert en tests manuels ou automatisés? Travaillez à temps partiel pour nous!
- 11 meilleurs outils d'automatisation pour tester les applications Android (outils de test des applications Android)
- Top 10 des meilleurs livres de tests de logiciels (livres de tests manuels et d'automatisation)