Qu'est-ce qu'un framework d'automatisation de test?
Une infrastructure d'automatisation des tests est un ensemble d'outils utilisés pour effectuer des tests logiciels automatisés. Les infrastructures d'automatisation des tests offrent des avantages significatifs par rapport aux tests manuels et sont couramment utilisées dans le développement logiciel rapide. Ces frameworks permettent aux développeurs de logiciels de créer des tests, de les exécuter et d’analyser leurs résultats. Une infrastructure d'automatisation de test peut être pilotée par un code, des données, une interface utilisateur graphique (GUI) ou une combinaison de ceux-ci.
Les infrastructures d'automatisation des tests sont nécessaires pour répondre aux besoins d'un développement logiciel rapide. Dans le cycle de vie de développement logiciel classique de cascade, les tests logiciels étaient une phase discrète réalisée après la mise en œuvre, ou le codage. En tant que tels, les tests exécutés par l'homme étaient typiques.
De nombreuses équipes de développement ont remplacé le modèle en cascade par diverses méthodologies de développement logiciel agiles, qui nécessitent généralement un développement rapide et itératif. Le développement rapide a créé un besoin de tests rapides. Une infrastructure d'automatisation des tests permet à une équipe logicielle d'effectuer des tests automatisés fréquents sur une base de code. Par exemple, plutôt que de nécessiter une phase de test distincte après le développement, une équipe utilisant une infrastructure d'automatisation de test peut choisir d'exécuter une suite complète de tests pendant la nuit, ainsi que de plus petits fragments de tests automatisés tout au long de la journée, au fur et à mesure des modifications apportées au source. code.
Le type de framework le plus couramment utilisé est le framework piloté par code, qui est utilisé pour effectuer des tests en boîte blanche. Les frameworks basés sur du code exigent des développeurs qu'ils écrivent de petits extraits de code, sous forme de tests unitaires, afin de tester les fonctionnalités ou les performances du logiciel. Les développeurs utilisant des frameworks basés sur du code doivent veiller à écrire leur logiciel de manière vérifiable, c'est-à-dire que le code doit être modularisé de sorte qu'un test unitaire puisse appeler un extrait de code et vérifier le résultat. Ces frameworks incluent généralement une implémentation de xUnit, où "x" varie en fonction du langage de programmation testé.
Les frameworks de test pilotés par une interface graphique sont utilisés pour effectuer des tests en boîte noire, en utilisant un outil logiciel comme le ferait un utilisateur, via des entrées clavier et souris. Ils peuvent être constitués de scripts écrits par les développeurs pour exercer une série de fonctionnalités, ou peuvent être composés de scripts générés par des outils, tels que des scripts d'enregistrement et de lecture. Un inconvénient potentiel de ces frameworks est que le script sera interrompu à chaque modification de l'interface graphique. Certaines infrastructures d'automatisation d'interface graphique peuvent générer un script pouvant être édité par un développeur en cas de modification de l'interface graphique, tandis que d'autres peuvent nécessiter que l'utilisateur crée une nouvelle session d'enregistrement et de lecture.
Les infrastructures de test pilotées par les données effectuent des tests de logiciels à l'aide de données. Ces tests fonctionnent généralement avec des tableaux de données spécifiant les entrées et les sorties. Les données peuvent être conservées à divers endroits, tels que des bases de données, des feuilles de calcul ou des fichiers texte. Des scripts peuvent être écrits pour exécuter des méthodes logicielles en prenant les entrées comme paramètres et pour valider la valeur de retour de la méthode logicielle par rapport à la sortie. Tout ce qui peut être modifié, tel que l'environnement dans lequel le test s'exécute, peut également être stocké avec les données et séparé du script de test. Un avantage procuré par ces cadres est la séparation des données et de la logique, ce qui conduit souvent à une maintenance moins longue à long terme.