Je voulais juste ajouter et donner un peu plus de contexte sur la raison pour laquelle nous avons ces niveaux de test, ce qu'ils signifient vraiment avec des exemples
Mike Cohn dans son livre «Réussir avec Agile» a proposé la «Pyramide de test» comme un moyen d'aborder les tests automatisés dans les projets. Il existe différentes interprétations de ce modèle. Le modèle explique quel type de tests automatisés doivent être créés, à quelle vitesse ils peuvent donner un retour sur l'application testée et qui écrit ces tests. Il existe essentiellement 3 niveaux de tests automatisés nécessaires pour tout projet et ils sont les suivants.
Tests unitaires -
Ils testent le plus petit composant de votre application logicielle. Cela pourrait littéralement être une fonction dans un code qui calcule une valeur basée sur certaines entrées. Cette fonction fait partie de plusieurs autres fonctions de la base de code matériel / logiciel qui compose l'application.
Par exemple - Prenons une application de calculatrice basée sur le Web. Les plus petits composants de cette application qui doivent être testés à l'unité pourraient être une fonction qui effectue l'addition, une autre qui effectue la soustraction et ainsi de suite. Toutes ces petites fonctions réunies constituent l'application calculatrice.
Historiquement, le développeur écrit ces tests car ils sont généralement écrits dans le même langage de programmation que l'application logicielle. Des cadres de tests unitaires tels que JUnit et NUnit (pour java), MSTest (pour C # et .NET) et Jasmine / Mocha (pour JavaScript) sont utilisés à cet effet.
Le plus grand avantage des tests unitaires est qu'ils s'exécutent très rapidement sous l'interface utilisateur et nous pouvons obtenir des commentaires rapides sur l'application. Cela devrait représenter plus de 50% de vos tests automatisés.
API / Tests d'intégration -
Ils testent ensemble divers composants du système logiciel. Les composants pourraient inclure des bases de données de test, des API (Application Programming Interface), des outils et services tiers avec l'application.
Par exemple - Dans notre exemple de calculatrice ci-dessus, l'application Web peut utiliser une base de données pour stocker des valeurs, utiliser des API pour effectuer des validations côté serveur et elle peut utiliser un outil / service tiers pour publier des résultats sur le cloud pour les rendre disponibles sur différents plates-formes.
Historiquement, un développeur ou un QA technique rédigerait ces tests à l'aide de divers outils tels que Postman, SoapUI, JMeter et d'autres outils comme Testim.
Ceux-ci s'exécutent beaucoup plus rapidement que les tests d'interface utilisateur car ils s'exécutent toujours sous le capot, mais peuvent consommer un peu plus de temps que les tests unitaires car ils doivent vérifier la communication entre les différents composants indépendants du système et s'assurer qu'ils ont une intégration transparente. Cela devrait représenter plus de 30% des tests automatisés.
Tests d'interface utilisateur -
Enfin, nous avons des tests qui valident l'interface utilisateur de l'application. Ces tests sont généralement écrits pour tester les flux de bout en bout dans l'application.
Par exemple - Dans l'application calculatrice, un flux de bout en bout pourrait être d'ouvrir le navigateur -> Entrer l'URL de l'application calculatrice -> Se connecter avec un nom d'utilisateur / mot de passe -> Ouvrir l'application calculatrice -> Effectuer certaines opérations sur la calculatrice -> vérification de ces résultats depuis l'interface utilisateur -> Déconnexion de l'application. Cela pourrait être un flux de bout en bout qui serait un bon candidat pour l'automatisation de l'interface utilisateur.
Historiquement, les AQ techniques ou les testeurs manuels écrivent des tests d'interface utilisateur. Ils utilisent des frameworks open source comme Selenium ou des plateformes de test d'interface utilisateur comme Testim pour créer, exécuter et maintenir les tests. Ces tests donnent plus de commentaires visuels car vous pouvez voir comment les tests sont en cours d'exécution, la différence entre les résultats attendus et réels à travers des captures d'écran, des journaux, des rapports de test.
La plus grande limitation des tests d'interface utilisateur est qu'ils sont relativement lents par rapport aux tests au niveau de l'unité et de l'API. Il ne devrait donc représenter que 10 à 20% de l'ensemble des tests automatisés.
Les deux types de tests suivants peuvent varier en fonction de votre projet, mais l'idée est-
Tests de fumée
Cela peut être une combinaison des 3 niveaux de test ci-dessus. L'idée est de l'exécuter à chaque archivage de code et de s'assurer que les fonctionnalités critiques du système fonctionnent toujours comme prévu; après la fusion des nouveaux changements de code. Ils doivent généralement fonctionner avec 5 à 10 minutes pour obtenir un retour d'informations plus rapide sur les échecs.
Tests de régression
Ils sont généralement exécutés au moins une fois par jour et couvrent diverses fonctionnalités du système. Ils s'assurent que l'application fonctionne toujours comme prévu. Ils sont plus détaillés que les tests de fumée et couvrent plus de scénarios de l'application, y compris les non critiques.