Introduction
Il m’a souvent été demandé de “tester” un application ou un projet durant mes missions de consultance.
J’ai rarement eu l’occasion de recevoir un plan de test de la part du client.
Aussi je me suis décidé à écrire ce petit post. Celui-ci a pour but de définir les différents éléments nécessaires à la mise en place d’un plan de test.
Ces éléments se composent d’exigence à tester, de stratégies à appliquer pour les tester incluant les types de test à implémenter, ainsi que les outils à utiliser et les délivrables à recevoir.
- Les stratégies de test à employer sont essentiellement basées sur des tests fonctionnels de haut niveau. Et des tests fonctionnels unitaires (bas-niveau).
- Les biens livrables pour les tests sont : un rapport décrivant la mise en place et le déroulement des tests et les résultats qui doivent être obtenus.
Dans la pratique on retrouvera dans un plan de test une structure suivante :
- Introduction
- Exigences à tester
- Stratégie de tests
- Types de tests
- Liste des tests proposés
- Tests fonctionnels
- Tests d’interface utilisateur
- Tests de données et d’intégrité de base de données
- Profilage de performance
- Tests de charge
- Tests de stress
- Tests de volumétrie
- Tests de sécurité et de contrôle d’accès
- Tests de basculement et de récupération
- Tests de configuration
- Tests d’installation
Exigence à tester
La liste suivante identifie les items, cas d’utilisation, exigences fonctionnelles et exigences non-fonctionnelles, qui ont été désignés comme cibles de test. Cette liste représente ce qui sera testé.
On énumérera les principales exigences à tester.
Stratégie de tests
La stratégie de tests présente l’approche recommandée d’évaluation des cibles des tests. La précédente section, Exigences à tester, décrit de qui sera testé et cette section comment cela sera testé.
Fournir, pour chaque type de test, une description du test et comment il sera implémenté et exécuté.
Lorsque les tests ne sont pas implémentés et exécutés, expliquer en une phrase pourquoi.
La stratégie de tests consiste d’abord à identifier les techniques de tests et à identifier les critères de complétion des tests.
Les tests doivent être exécutés dans des environnements sécurisés avec des données connues et contrôlées.
Type de tests
Ce graphique représente le type de test que l’on peut retrouver lors d’un développement logiciel. Un test sera donc définit par son niveau de détail, son niveau d’accessibilité et ses caractéristiques.
Les tests fonctionnels
Les tests fonctionnels portent sur les exigences fonctionnelles qui peuvent être retracées dans les cas d’utilisation ou les fonctions d’affaire et dans les règles d’affaire. Le but de ces tests est de vérifier la validité des données, de leur traitement et de leur récupération ainsi que des règles d’affaire. Ce type d’évaluation repose sur la technique de la boîte noire, c’est-à-dire, une vérification de l’application et de ses processus internes en l’utilisant avec l’interface utilisateur et en en analysant les résultats. Voici un exemple de stratégie proposée
Les tests d’interfaces utilisateur
Les tests d’interfaces utilisateur évaluent l’interaction de l’utilisateur avec le logiciel. Le but de ces tests est de vérifier que l’interface utilisateur donne l’accès approprié aux fonctions des cibles de test. De plus, ces tests permettent de vérifier que les objets de l’interface utilisateur se comporte tel qu’attendu et qu’ils sont conformes aux normes du client ou de l’industrie.
Tests de données et d’intégrité de base de données
Les bases de données et les processus de base de données doivent être testés comme sous-systèmes à l’intérieur du projet. Ces sous-systèmes doivent être testés sans utiliser l’interface utilisateur comme interface des données. L’identification des outils et techniques pour effectuer les tests repose sur la nature du système de gestion de base de données (SGBD).
Profilage de performance
Le profilage de la performance est un test de performance où les temps de réponses, les taux de transaction et les autres exigences temporelles sont mesurées et évaluées. Le but du profilage de performance est de vérifier si les exigences de performances ont été atteintes. Il est implémenté et exécuté profiler et ajuster la performance des cibles de test en fonction de conditions comme la charge de travail et les configurations matérielles.
Tests de charge
Les tests de charges sont des tests de performance où les cibles de test sont soumis à différentes charges de travail afin d’évaluer leur performance et de s’assurer que leur fonction s’exécute normalement malgré les variations de charge. Le but des tests de charge est de déterminer et de s’assurer que le système fonctionne normalement par delà la charge de travail maximale. De plus, les tests de charge évaluent les caractéristiques de performance comme les temps de réponse, les taux de transaction et autres comportements pertinents.
Tests de stress
Les tests de stress sont un type de test de performance qui sont implémentés et exécutés pour trouver des erreurs imputables à un manque de ressources. Une anomalie de la cible de test peut être identifiée à cause d’une mémoire vive ou d’un espace disque insuffisants. D’autres anomalies peuvent être imputables à une concurrence d’accès à des ressources comme, par exemple, une largeur de bande réseau ou un accès concurrent à une base de données. Les stress tests peuvent aussi être utilisés pour identifier la pointe qu’une charge de travail peut atteindre.
Tests de volumétrie
Les tests de volumétrie soumettent les cibles de test à d’important volume de données afin de déterminer quelles sont les limites du logiciel avant qu’il y ait défaillance. Les tests de volumétrie permettent aussi d’identifier la charge maximum ou le volume que les cibles de tests peuvent supporter pour une période de temps donnée. Ainsi, par exemple, pour la publication d’un rapport qui nécessite le traitement d’enregistrement de la base de données, le test de volumétrie devrait utiliser une base de données de grande taille et devra vérifier si le logiciel se comporte normalement et produit correctement le rapport.
Tests de sécurité et de contrôle d’accès
Les tests de sécurité et de contrôle d’accès portent sur deux domaines clés de la sécurité :
- La sécurité au niveau de l’application incluant l’accès aux fonctions de traitement de données.
- La sécurité au niveau du système, incluant la connexion à distance au système.
La sécurité au niveau de l’application contrôle l’accès des acteurs aux fonctions ou cas d’utilisation ou données qui leur sont rendues disponibles. Par exemple, tous les acteurs peuvent saisir des données et créer de nouveaux comptes, mais seuls les administrateurs peut les détruire. La sécurité au niveau des données est testée en s’assurant qu’un type d’utilisateur peut voir toutes les informations d’un client, incluant les données financières, alors qu’un autre type ne peut voir que les données démographiques pour le même client..
La sécurité au niveau du système permet aux seuls acteurs dont l’accès est autorisé, d’accéder aux applications par les seules passerelles appropriées.
Tests de basculement et de récupération
Les tests de basculement et de récupération vérifient que la cible de test peut réussir à basculer et à récupérer pour différents dysfonctionnements matériels, logiciels ou de réseau sans qu’il y ait perte de données ou corruption de sonnées.
Les tests de basculement vérifient que, pour les systèmes qui doivent demeurer en opération, lorsqu’une défaillance survient, un système alternatif ou un système de sauvegarde prend le relais correctement sans perte de données ou de transactions.
Les tests de récupération est un test où le système est exposé à des conditions extrêmes, ou des conditions simulées pour provoquer une défaillance, telle qu’une panne d’un dispositif d’entrée-sortie ou des pointeurs de base de données invalides Les processus de récupération sont alors invoqués et l’application ou le système est alors suivi ou inspecté pour vérifier si la récupération des données, de l’application ou du système a été bien effectuée.
Tests de configuration
Les tests de configuration valident les opérations pour des cibles de test pour différentes configurations logicielles et matérielles. Les spécifications matérielles des postes de travail, des réseaux et des serveurs de base de données, en environnement de production, varient d’un client à l’autre. Les postes de travail peuvent avoir différents logiciels en opération selon différentes combinaisons et utilisant différentes ressources.
Tests d’installation
Les tests d’installation poursuivent deux objectifs. D’abord, s’assurer que le logiciel peut être installé dans différentes conditions, tant pour les nouvelles installations, les mises à jour que pour compléter une installation personnalisée dans des conditions normales et des conditions anormales. Les conditions anormales comprennent un espace disque insuffisant, des autorisations insuffisantes pour créer des répertoires, etc. L’autre objectif est de vérifier que, une fois installé, le logiciel fonctionne correctement. Cela signifie qu’il faut exécuter un certain nombre de tests fonctionnels.