2. SOMMAIRE
1) Introduction
2) Le rôle clé du test dans les démarches agiles
3) Test driven development(tdd)
4) Processus de test agiles
5) Tests AD HOC ET EXPLORATOIRES
6) TESTS multi-naviguateurs
7) Programmation en binôme
8) Conclusion
3. INTRODUCTION
Un logiciel de mauvaise qualité entraîne non seulement un taux d’adoption insuffisant par les
utilisateurs, mais met également en jeu la réputation de l’entreprise et augmente les coûts de
production des logiciels. Les logiciels de qualité inférieure entraînent une faible fidélisation de
la clientèle et une perturbation de l’engagement des utilisateurs. Il n’est donc pas surprenant
de voir que 36% des répondants dans le présent rapport world quality ont mentionné que des
logiciels de meilleure qualité sont l’objectif principal de leur planification stratégique pour
l’informatique.
4. LE RÔLE CLÉ DU TEST DANS LES DÉMARCHES AGILES
Le test fonctionnel constitue un point clé des projets agiles pour maintenir un bon alignement entre les besoins
métiers et les développements itératifs. Les tests vont nécessairement s’organiser au sein des itérations (qui
peuvent être de durée très courte, typiquement de 2 à 4 semaines), sur un mode permettant de garantir la
stabilité du code et le bon alignement avec les besoins métiers. La Figure 2 (la Pyramide de Mike Cohn)
montre les principaux niveaux de test mis en œuvre. (1)
5. Les tests unitaires et de composants constituent la base de l’édifice : les approches de type TDD – Test Driven
Development [2] – permettent d’assoir la qualité du code et la fréquence des évolutions sur un solide socle de
tests. Il s’agit d’assurer une forte stabilité applicative (« Doing the software right »). Le test IHM concerne la
partie haute du test itératif : on s’assure de l’ergonomie et des performances de l’IHM. La forme de cette
pyramide hérite d’un constat : dans un mode manuel, cela coute très cher de faire du testIHM. Le test
fonctionnel constitue la partie centrale de la pyramide : il vise à s’assurer de la bonne adéquation des
développements avec les besoins métiers devant être couverts dans l’itération, mais aussi à garantir la non
régression applicative associée aux évolutions (ce qui fonctionnait doit toujours fonctionner). Il s’agit de vérifier
en permanence la conformité aux besoins exprimés par le client et implémenter au sein de l’équipe agile («
Doing the right software »). Mais il s’agit aussi de maintenir la qualité globale d’un édifice construit et livré de
façon incrémentale. (1)
Test Driven Development(TDD)
6. PROCESSUS DE TEST AGILES
La fonction principale de tout processus de qualité logicielle est de pouvoir découvrir les défauts le plus tôt possible. Plus un
défaut est découvert tard dans un processus de développement logiciel, plus il devient coûteux de le corriger. Dans les
équipes agiles, les développeurs et les testeurs n’opèrent pas dans des espaces de travail étanches. Dans les processus de test
agile, les tests sont intégrés à chaque sprint et sont souvent effectués par les développeurs et les testeurs. Mais les testeurs
restent une partie très importante du flux de travail agile. Un processus de test cohérent et itératif est un moyen sûr de fournir
un logiciel sans bugs, c’est pourquoi les tests d’automatisation restent au centre du développement agile. Les tests
d’automatisation dans agile permettent aux AQ de créer des cas de test qui s’exécuteront automatiquement
chaque fois qu’un nouveau code est envoyé au référentiel de code pour une application spécifique. Cette pratique
est appelée continuous testing in Devops et garantit que le nouveau code est exempt de bugs avant qu’il
n’atteigne l’environnement de production. L’automatisation est au cœur d’un développement Agile efficace. Sans
tests d’automatisation, la vitesse requise pour rendre le développement réellement « agile » ne peut pas être
mise en œuvre. L’automatisation facilite la vie des développeurs et des testeurs, crée de meilleurs logiciels et
satisfait les utilisateurs. (2)
7. TESTS AD HOC ET EXPLORATOIRES
Les tests ad hoc et exploratoires entrent dans le côté manuel des tests. L’idée principale est
d’explorer la créativité et de repousser les limites des pratiques de test. Il n’y a pas de règles à
cela, et des tests exploratoires sont effectués à la volée à tout moment. Cette approche profite
aux développeurs pour tester la convivialité des logiciels et les comportements des utilisateurs.
Les tests ad hoc utilisent des données aléatoires pour générer des tests et visent à casser ou
perturber les services logiciels. Son objectif est de trouver des vulnérabilités et se fait
généralement vers la fin du processus de développement. Tout cela est bien nécessaire pour
garantir un logiciel de qualité. (3)
8. TESTS MULTI-NAVIGUATEURS
Les tests inter-navigateurs vérifient si le logiciel fonctionne de manière transparente sur
différents navigateurs web, tailles d’écran et applications mobiles. Avec plusieurs appareils et
modèles sur le marché, les tests multi-navigateurs deviennent partie intégrante pour chaque
développeur. Il existe de nombreux avantages associés aux tests multi-navigateurs basés sur le
cloud, et des solutions de test efficaces conduisent à une expérience utilisateur sans faille. (3)
9. PROGRAMMATION EN BINÔME
La méthode de programmation par paires est principalement utilisée dans le développement de
logiciels agiles et elle est spécifiquement requise pour la programmation extrême (XP). En
binôme, deux personnes travaillent toujours sur le code en même temps. Idéalement, ils sont
assis l’un à côté de l’autre. L’un écrit le code, l’autre le vérifie en temps réel. Ils interagissent
continuellement, discutent des problèmes, trouvent des solutions et développent des idées
créatives. Parce qu’il y a un autre programmeur qui surveille votre travail, il en résulte un meilleur
code. En fait, une étude américaine montre qu’il en résulte 15% moins de bugs que le code écrit
par des programmeurs solo. De plus, cela permet au conducteur de rester concentré sur le code en
cours d’écriture pendant que l’autre s’occupe des questions externes ou de l’interruption. C’est ainsi
qu’on peut avoir un logicielle de qualité qui répond aux exigences du métier. (4-5)
10. CONCLUSION
Un processus de gestion de la qualité logicielle est au cœur de toute équipe produit et garantit une livraison
optimale du produit dans les délais prévus. Le succès de ce processus affecte la réputation, ainsi que les
résultats financiers de toute entreprise. Il est donc extrêmement vital de rationaliser ces processus à la
perfection. Une exigence clé pour mettre cela en œuvre est d’avoir des résultats précis grâce à des tests
d’appareils réels. Quel que soit le test, il doit être exécuté sur un véritable cloud d’appareils. Cela s’applique
aux tests manuels et aux tests d’automatisation. Sans appareils réels, il n’y a aucun moyen de s’assurer que
le logiciel fonctionne comme il le ferait dans des conditions utilisateur réelles telles qu’une batterie faible, des
appels entrants, une faible puissance du réseau, etc. D’autre part, le processus de test agile et du test
driven developement permettent d’assurer une bonne qualité logicielle ainsi la satisfaction de notre client. En
outre, la programmation en binôme fournit une nouvelle stratégie et approche pour garantir un logiciel
d’extrême qualité.