La finalité des tests fonctionnels est de s'assurer que l'application se comporte conformément à ce qui est inscrit dans les spécifications. Une bonne habitude à prendre pour développer les procédures de test consiste à se baser sur les spécifications fonctionnelles.
Si celles ci ne sont pas assez détaillées, l'ingénieur de recette devra alors procéder à une analyse détaillée de l'application. Même si les spécifications détaillées sont disponibles, les dépendances entre les fonctionnalités ne sont pas apparentes au premier abord. C'est pour cela que le testeur doit explorer l'application afin d'acquérir une connaissance suffisante, surtout s'il n'a pas été intégré au projet lors des phases d'analyse du projet.
En général, le testeur doit analyser en quoi un changement au sein de l'application (tel que la saisie d'un champ) affecte le reste de l'application. Il ne suffit pas toutefois de vérifier uniquement que le changement apporté fonctionne bien. Il faut en effet élargir le périmètre de test, c'est à dire couvrir l'ensemble des autres fonctionnalités qui sont affectées par ce changement. L'analyse et l'effort de test doivent continuer jusqu'à ce que toutes les fonctionnalités liées aient été identifiées et testées. Cette stratégie est pourtant souvent ignorée lorsque les spécifications ne sont pas assez détaillées.
Durant la phase d'exécution des tests, il est primordial de s'assurer :
- que l'ordre des tests est bien respecté,
- que les efforts de tests ne sont pas inutilement dupliqués,
- qu'un testeur n'invalide pas les résultats d'un autre testeur,
- que l'on ne perd pas de temps à dupliquer des anomalies déjà connues.
Pour développer des procédures de tests efficaces, il faut concevoir le plan de test en gardant à l'esprit les points suivants.
Il faut identifier les actions ou les évènements similaires utilisés par plusieurs transactions. Une fois cette information connue, on développe alors les procédures de tests de telle sorte qu'elles soient modulaires et puissent ainsi être réutilisées pour tester plusieurs chemins fonctionnels, évitant ainsi la duplication d'efforts de tests.
Il faut aussi déterminer l'ordre dans lequel les différents tests doivent être exécutés. Pour faciliter cette tâche, on peut créer une matrice qui permet de connaître pour chaque procédure de tests les conditions préalables à son exécution (ainsi que les conditions ultérieures).
Il faut également déterminer le degré de criticité de chaque fonctionnalité afin de concentrer les efforts de tests sur les fonctions les plus sensibles. Si on ne définit pas de priorité, on risque alors de passer trop de temps sur des fonctionnalités très peu utilisées au détriment des fonctionnalités critiques de l'application.


