đ§Ș 5.1 VĂ©rifier les exigences fonctionnelles d'une application mobile
Une application mobile ne peut pas ĂȘtre considĂ©rĂ©e comme "terminĂ©e" uniquement parce qu'elle se lance ou qu'elle fonctionne sur le tĂ©lĂ©phone du dĂ©veloppeur.
Avant toute publication (et mĂȘme tout au long du dĂ©veloppement), il est indispensable de vĂ©rifier que les fonctionnalitĂ©s rĂ©pondent rĂ©ellement aux besoins attendus.
Ce chapitre se concentre sur la vérification des exigences fonctionnelles, c'est-à -dire sur la question essentielle :
Est-ce que l'application fait correctement ce qu'elle est censée faire ?
đŻ Objectifs d'apprentissage
Ă la fin de ce chapitre, vous serez capables de :
- expliquer pourquoi les tests fonctionnels sont indispensables dans un projet mobile ;
- définir ce qu'est une exigence fonctionnelle ;
- distinguer les principaux types de tests fonctionnels sur mobile ;
- rédiger un cas de test fonctionnel clair et reproductible ;
- exécuter un test et analyser son résultat ;
- identifier et décrire un bug fonctionnel de maniÚre structurée ;
- comprendre le rÎle des tests de régression dans la qualité d'une application mobile.
đ€ 5.1.1 Pourquoi tester les exigences fonctionnelles ?
Dans un contexte de développement mobile, il est trÚs courant d'entendre des phrases comme :
"Bah moi ça marche sur mon tĂ©lĂ©phone ! âïžđ€"
Mais ce constat est largement insuffisant.
Une application mobile est utilisée :
- sur des appareils différents (tailles, performances, OS...) ;
- dans des conditions variées (déplacement, luminosité, réseau...) ;
- par des utilisateurs qui n'ont pas participé au développement (attentes et expertises diverses).
ConsĂ©quences dâun bug fonctionnel
Un bug fonctionnel peut avoir des conséquences immédiates :
- frustration de l'utilisateur ;
- abandon de l'application ;
- avis négatif sur le store ;
- perte de crédibilité ;
- risque de rejet par les stores lors de la validation.
Sur mobile, ces effets sont amplifiés :
- les utilisateurs désinstallent rapidement une application qui ne fonctionne pas comme prévu.
Tester les exigences fonctionnelles permet donc de :
- détecter les erreurs avant qu'elles n'atteignent les utilisateurs finaux ;
- réduire fortement les risques aprÚs publication.
đ§Ÿ 5.1.2 Qu'est-ce qu'une exigence fonctionnelle ?
Une exigence fonctionnelle décrit une action que l'utilisateur doit pouvoir réaliser dans l'application.
Elle exprime un besoin concret, du point de vue de l'utilisateur, et non du développeur.
Exemples :
- l'utilisateur peut créer un compte ;
- l'utilisateur peut se connecter ;
- l'utilisateur peut ajouter un élément à une liste ;
- l'utilisateur peut supprimer une donnée ;
- l'utilisateur peut consulter une information.
Exigence fonctionnelle = testable
đš Important :
Chaque exigence fonctionnelle doit pouvoir ĂȘtre :
- comprise clairement ;
- testée ;
- validée ou refusée.
Il existe un lien direct entre :
- une exigence fonctionnelle (ce que l'application doit faire) ;
- la fonctionnalité correspondante dans l'application (le code) ;
- un ou plusieurs tests fonctionnels (les vérifications associées).
Sans exigence clairement identifiée, il est impossible de tester correctement.
đ§Ș 5.1.3 Types de tests fonctionnels sur mobile
Dans le cadre de ce module, les tests fonctionnels sont principalement manuels.
Ils consistent à utiliser l'application comme le ferait un utilisateur, en suivant des scénarios précis.
On distingue notamment :
-
Tests manuels dirigĂ©s â on suit un cas de test prĂ©cis.
-
Tests exploratoires â on explore l'application de maniĂšre plus libre, pour dĂ©tecter des comportements inattendus.
-
Tests de rĂ©gression â rĂ©alisĂ©s aprĂšs une correction pour vĂ©rifier que les fonctionnalitĂ©s existantes fonctionnent toujours.
OĂč tester ? Ămulateur vs appareil rĂ©el
Les tests peuvent ĂȘtre rĂ©alisĂ©s :
-
sur un émulateur
- rapide et pratique ;
- utile pour les premiers tests ;
- certaines limites (capteurs, performances, ressenti).
-
sur un appareil réel
- indispensable pour valider le comportement réel ;
- nĂ©cessaire pour les APIs natives et les conditions dâusage rĂ©elles.
đ Sur mobile, tester sur un appareil rĂ©el est toujours recommandĂ© avant publication.
đ 5.1.4 RĂ©diger un cas de test fonctionnel
Un cas de test décrit précisément comment vérifier une exigence fonctionnelle.
Il doit ĂȘtre suffisamment clair pour que n'importe quelle personne puisse l'exĂ©cuter et obtenir le mĂȘme rĂ©sultat.
Un cas de test fonctionnel contient généralement :
- un identifiant unique ou un titre ;
- des préconditions (état initial de l'application) ;
- une suite d'étapes à effectuer ;
- un résultat attendu.
Exemple simplifiĂ© â Test de connexion
Exigence : lâutilisateur peut se connecter avec un compte valide.
Préconditions :
- l'utilisateur possĂšde un compte valide.
Ătapes :
- ouvrir l'application ;
- saisir l'email et le mot de passe ;
- appuyer sur "Se connecter".
Résultat attendu :
- l'utilisateur accÚde à l'écran principal.
CaractĂ©ristiques dâun bon cas de test
Un bon cas de test est :
-
précis
- pas dâambiguĂŻtĂ© dans les actions Ă effectuer ;
-
compréhensible
- toute personne non développeuse peut l'exécuter ;
-
reproductible
- deux personnes diffĂ©rentes obtiennent le mĂȘme rĂ©sultat dans les mĂȘmes conditions.
â¶ïž 5.1.5 ExĂ©cuter les tests et observer les rĂ©sultats
Exécuter un test = suivre exactement les étapes décrites dans le cas de test, puis observer le comportement réel.
Ă lâissue de lâexĂ©cution, le rĂ©sultat peut ĂȘtre :
-
â Conforme
- le résultat observé correspond au résultat attendu.
-
â Non conforme
- le comportement diffĂšre de ce qui est attendu.
Il est important de noter les observations, mĂȘme si le test est rĂ©ussi.
En cas dâĂ©chec : collecter des Ă©lĂ©ments
En cas de test non conforme, il est utile de collecter :
- une description du problĂšme ;
- une capture d'écran (ou vidéo courte) ;
- le contexte dâutilisation (appareil, version, rĂ©seau, etc.).
đ Ces informations seront prĂ©cieuses pour :
- comprendre le bug ;
- le reproduire ;
- le corriger.
đ 5.1.6 Identifier, dĂ©crire et corriger un bug fonctionnel
Un bug fonctionnel apparaßt lorsqu'une exigence n'est pas respectée.
Pour qu'un bug puisse ĂȘtre corrigĂ© efficacement, il doit ĂȘtre dĂ©crit clairement.
Exemple de mauvais rapport de bug
â "L'app ne marche pas quand je clique sur le bouton de connexion."
ProblĂšmes :
-
pas de contexte (appareil, version...) ;
-
pas d'Ă©tapes prĂ©cises â impossible de reproduire ;
-
pas de résultat attendu exprimé ;
-
"ne marche pas" peut vouloir dire :
- crash,
- message d'erreur,
- rien ne se passe,
- ou autre chose.
(et en plus, elle n'a pas de jambes)

Exemple de bon rapport de bug
âïžđ€ "Sur un iPhone 12 avec la version 1.0.0 de l'application, lorsque je clique sur le bouton de connexion aprĂšs avoir saisi mes identifiants, rien ne se passe : la page reste statique. J'attendais Ă ĂȘtre redirigĂ© vers l'Ă©cran principal."
Ce rapport contient :
-
un contexte précis
- iPhone 12, version 1.0.0 ;
-
des étapes claires
- cliquer sur le bouton aprĂšs saisie des identifiants ;
-
le résultat observé
- rien ne se passe, écran statique ;
-
le résultat attendu
- redirection vers lâĂ©cran principal.
AprĂšs correction : re-tester
Une fois le bug corrigé :
-
le test correspondant doit ĂȘtre rejouĂ© ;
-
on vérifie que :
- la correction fonctionne ;
- aucune autre fonctionnalitĂ© nâa Ă©tĂ© impactĂ©e.
Cycle fondamental :
test â bug â correction â re-test
đ 5.1.7 Tests de rĂ©gression
Corriger un bug peut parfois en créer un autre.
Les tests de régression consistent à rejouer des tests existants aprÚs une modification du code.
Sur une application mobile, il est particuliĂšrement important de re-tester :
-
les fonctionnalités principales ;
-
les parcours utilisateurs critiques :
- connexion,
- inscription,
- sauvegarde,
- navigation.
MĂȘme une petite modification peut avoir un impact inattendu ailleurs.
đ„„ Anecdote â La noix de coco de Team Fortress 2
Un utilisateur a décompilé des fichiers du jeu Team Fortress 2 et a découvert une image de noix de coco dans les assets.
En essayant de la supprimer, il constate que le jeu ne se lance plus sans ce fichier.
- Easter egg ?
- bug de régression ?
- simple vérification d'intégrité des fichiers ?
Personne nâest 100 % certain, mais cela illustre bien :
une petite modification peut avoir des conséquences inattendues.
"I have no f**** idea who put this here, but when I deleted it the game wouldnât start. Words cannot describe my f**** confusion."*
đ§ 5.1.8 Bonnes pratiques de test fonctionnel
Quelques principes essentiels :
- tester le plus tĂŽt possible, pas uniquement Ă la fin ;
- tester les cas normaux et les cas limites ;
- documenter les tests, mĂȘme lorsqu'ils rĂ©ussissent ;
- tester sur appareil réel avant publication ;
- rejouer réguliÚrement les tests critiques (régression).
Les tests fonctionnels sont une étape clé de la qualité logicielle, et non une contrainte inutile.
đ§Ș 5.1.9 ActivitĂ© pratique â Tests fonctionnels
Ă partir dâune application mobile donnĂ©e (rĂ©elle ou fictive), vous devez :
- identifier 3 Ă 5 exigences fonctionnelles ;
- rédiger les cas de test correspondants ;
- simuler lâexĂ©cution des tests ;
- identifier dâĂ©ventuels problĂšmes ;
- proposer des corrections.
Ce travail peut ĂȘtre rĂ©alisĂ© :
- individuellement ;
- ou en binĂŽme.