4 manières de conjuguer green IT et accessibilité

Votre éthique professionnelle vous pousse à réfléchir à des solutions qui soient à la fois inclusives et durables. Et vous n’avez aucune raison de choisir entre green IT et accessibilité ! Dans cet article, nous vous proposons 4 points concrets à passer en revue pour conjuguer ces deux exigences.

NB : cet article ne s’adresse pas spécifiquement aux QA, mais aussi à toute personne impliquée dans la conception et la création de produits numériques !

1. Parlez-en à un stade précoce des projets

L’accessibilité et la performance énergétique partagent un point commun : elles ne concernent pas les fonctionnalités de ce que vous allez offrir (le « quoi »), mais plutôt les caractéristiques de la manière dont votre solution est conçue et fonctionne (le « comment »).

Comme tous les aspects non-fonctionnels d’un produit, elles ont malheureusement tendance à être étudiées trop tard, voire complètement oubliées.

Afin de maximiser vos chances de succès, intégrez ces problématiques dès le cadrage de vos projets, pour établir clairement les objectifs et identifier les ressources nécessaires.

Lors de la conception du produit, faites en sorte que ces sujets soient incontournables. Par exemple, lors de la définition des objectifs initiaux du projet, vous pouvez spécifier des critères d’accessibilité mesurables, tels que la conformité aux WCAG (Web Content Accessibility Guidelines). Pour la performance énergétique, cela peut être un score Ecoindex à viser.

Y penser dès le début est susceptible d’orienter les choix de certaines solutions technologiques, mais aussi de vous faire gagner du temps.

2. Pensez “Less is more”

L’utilisation de produits numériques peut être pénible pour une personne porteuse d’un handicap. Proposer un nombre restreint de fonctionnalités, avec un contenu qui va droit au but et sans fioritures inutiles, représente une réelle valeur ajoutée. D’ailleurs, comme presque tout ce que vous proposerez pour favoriser l’accessibilité, cela profitera également aux populations non porteuses de handicap ! Une expérience plus fluide est un atout pour l’ensemble de votre cible.

Moins de fonctionnalités signifie moins de requêtes envoyées aux serveurs, moins de code à maintenir… Et cela représente donc également un gain en termes de performance environnementale.

Faites l’expérience pour vous entraîner. Consultez vos sites web préférés et demandez-vous : qu’y a-t-il en trop ? Qu’est-ce qui m’est réellement utile ? Vous en ferez vous-mêmes le constat : au quotidien, vous nagez dans les images inutiles (non informatives) et dans des animations qui ne font rien d’autre que vous ralentir. Et aussi, dans les features qui ont pris un temps fou à développer, mais qui ne correspondent tout simplement pas à votre usage.

3. Texte > Image > Vidéo

On dit qu’une image vaut mille mots. Cela signifie communément qu’une image peut transmettre une information beaucoup plus facilement qu’un texte. C’est, en effet, parfois vrai.

Mais d’un point de vue green IT, on pourrait dire aussi qu’une image “coûte” mille mots… ou beaucoup plus, en fonction de la taille de l’image et de sa résolution !

Et c’est sans parler des vidéos, particulièrement énergivores.

Un simple texte est le support qui est à la fois le plus accessible et le plus performant d’un point de vue environnemental.

  • Un texte peut être lu “tel quel”, ou bien être agrandi d’un simple clic, ou encore être lu par synthèse vocale ou même en braille.
  • Il peut être rapidement mis à jour, ce qui réduit à la fois l’empreinte énergétique et le budget de maintenance.
  • Il se charge beaucoup plus rapidement que toute autre ressource.

Cela ne veut pas dire que les images et les vidéos sont à bannir, mais il faudra veiller à ne conserver que celles qui apportent le plus de valeur ajoutée, et à optimiser leur compression.

4. Les valeurs d’abord, les actions ensuite

La performance énergétique et l’accessibilité ne sont pas des sujets anodins. Loin d’être de simples concepts techniques, ce sont des engagements envers un avenir meilleur. Affirmer leur importance au sein d’une organisation, en les portant au rang de valeurs, donne une signification décuplée à la démarche… et certainement aussi, beaucoup plus d’enthousiasme aux équipes, à l’heure où une grande part de la population souffre d’éco-anxiété et d’un sentiment général de perte de sens. 

A lire pour aller plus loin : le manifeste agile radical.

 

Cet article a été écrit dans le cadre de notre participation à la commission NID (Numérique Inclusif et Durable) de l’organisation OPEN NC. Il bénéficie de la précieuse contribution de Xavier Liénart (MSI), dont la relecture a permis d’enrichir le fond de l’article.

 

Découvrez d’autres articles sur l’accessibilité

Testez-vous mieux qu’en 1987 ?

En 1987, David Gelperin et Bill Hetzel publiaient l’article scientifique The growth of software testing dans la revue Communications of the ACM. Un article dans lequel, regardant en arrière, ils définissaient différents seuils où le métier du test a évolué.

Un article de référence

Quel est donc ce découpage temporel ?

Première époque, orientée débogage

Les processus de test ne sont pas traités en tant que tels ; les tests sont effectués de manière ad hoc essentiellement, et les succès ne sont guère reproductibles puisqu’ils dépendent avant tout du bon vouloir et du talent d’individus isolés.

Deuxième époque, orientée démonstration

Pour résumer, on teste pour prouver que le logiciel fonctionne.

Troisième époque, orientée destruction

Ca fait peur, non ? Cela veut dire tout simplement que cette période est marquée par le cliché (toujours vivant) des QA qui sont là pour « tout casser » ! Même si, on le sait, le test logiciel met plutôt en lumière ce qui est déjà cassé.

Quatrième époque, orientée évaluation

L’activité de test donne lieu à des métriques. On la suit de manière formelle.

Cinquième époque, orientée prévention

L’objectif principal des tests est d’éviter en premier lieu l’apparition des anomalies, et ce grâce à des méthodes statistiques.

Les suites de cet article

Ce découpage en périodes historiques a fait date ; il est toujours mentionné notamment dans les documents relatifs au modèle TMMi. En effet, les 5 niveaux de maturité TMMi font écho aux 5 époques mentionnées par les auteurs de l’article.

Mais, bien que ce soit fort intéressant, ce n’est pas le sujet le plus croustillant de cet article ! 😃

En pratique, comment testait-on jadis ?

Une partie un peu moins connue de cet article fait en effet référence à un sondage diffusé à l’occasion de la 4ème conférence internationale sur le test logiciel, qui s’est tenue à Washington en 1987. Préparez-vous à un voyage dans le temps !

Résultats du sondage en anglais

Traduction du sondage en français

  1. Un historique des défauts trouvés pendant les tests est maintenu : 73 % oui / 16 % parfois
  2. Une personne est désignée en tant que responsable du processus de test : 65 % oui / 13 % parfois
  3. Un plan de test décrivant les objectifs / l’approche est requis : 61 % oui / 29 % parfois
  4. Le test est une activité systématique et organisée : 61 % oui / 30 % parfois
  5. Des profils de test réalisent des tests système à temps plein : 62 % oui / 19 % parfois
  6. Le test est séparé du développement : 60 % oui / 20 % parfois
  7. Les tests doivent être rejoués lorsque le logiciel change : 51 % oui / 35 % parfois
  8. Les tests sont conservés et maintenus en vue d’une utilisation ultérieure : 51 % oui / 28 % parfois
  9. Les spécifications et la conception des tests est documentée : 48 % oui / 36 % parfois
  10. La procédure de test est documentée dans le manuel des standards : 45 % oui / 15 % parfois
  11. Un historique des tests joués est maintenu : 42 % oui / 35 % parfois
  12. Le temps consacré aux test est suivi : 40 % oui / 30 % parfois
  13. Les documents de test font l’objet d’une revue par les pairs formelle : 31 % oui / 29 % parfois
  14. Des profils de test réalisent des tests d’intégration à temps plein : 24 % oui / 24 % parfois
  15. Les coûts des tests sont mesurés et suivis : 24 % oui / 19 % parfois
  16. Des formations en test sont fournies périodiquement : 22 % oui / 26 % parfois
  17. Les résultats des tests font l’objet d’une revue par les pairs formelle : 20 % oui / 31 % parfois
  18. Les utilisateurs et utilisatrices ont une forte implication dans les activités de test : 8 % oui / 39 % parfois
  19. Les tests sont créés avant le développement  : 8 % oui / 29 % parfois
  20. Une mesure de la couverture de code est requise : 5 % oui / 16 % parfois

Il faut garder à l’esprit que les personnes ayant répondu au sondage participaient à un congrès sur le test logiciel. Elles avaient donc a minima un intérêt pour le sujet. Cet état des lieux représente donc certainement les pratiques des entreprises les plus à la pointe dans le domaine à l’époque !

Tout en reconnaissant que les pratiques de 1987 avaient aussi, potentiellement, des atouts que nous avons peut-être perdu en cours de route, ces résultats de sondage ne sont-ils pas rafraîchissants ?

De retour au XXIème siècle, comment vous sentez-vous après avoir fait ce petit saut dans le passé ?

Et surtout, d’après vous, lesquelles de nos pratiques sembleront désuètes aux QA de 2059, dans 36 ans ?

Le voyage dans le temps n’est pas fini et nous devons continuer de perfectionner nos pratiques ! 😃

Crédit image : Midjourney

Votre gestion des bugs est-elle buggée ?

La gestion des anomalies, c’est tout un art ! Ci-dessous sont listées 16 situations courantes dans la vie d’un projet, qui touchent à cette activité. Des situations qui ne sont ni confortables, ni productives, et qui soulèvent aussi bien fausses questions que réponses fallacieuses. Combien d’entre elles avez-vous déjà vécues ?

TL;DR

  • Cet article présente 16 situations fréquentes où la gestion des bugs tombe dans des pièges et devient improductive

  • Au fil de votre lecture, vous reconnaîtrez peut-être des travers que votre équipe rencontre peut-être déjà, un premier pas vers l’amélioration des process.

  • L’article vous encourage au passage à adopter une vision plus nuancée de ce qu’est un bug (ou défaut, si on veut parler ISTQB !)

  • Vous pouvez utiliser cette liste de situations comme bon vous semble, par exemple comme un icebreaker.

1) Le bug controversé

Deux personnes de l’équipe se chamaillent car l’une a trouvé un bug et l’autre considère que ce n’est pas un bug. On ne sait donc plus quoi faire du ticket. Remarquez qu’il n’y a jamais ce genre de controverse pour les US, personne ne dit « Non, c’est pas une US ! », « Si, c’en est une ! » Cela révèle la nature complexe de ce qu’on appelle « bug ».

2) La spécification déguisée en bug

Quelqu’un a ouvert un rapport de bug, mais c’est en fait une demande de modification déguisée. La notion de bug est utilisée comme une sorte de coupe-file. De fois ça marche, et d’autres fois, on ne sait pas trop quoi faire du ticket, et cela peut même donner lieu à une controverse (cf point 1).

3) Le gros tas de bugs

La pile des bugs est très longue, chaque bug a été reconnu comme valide (quelle aubaine !), mais personne ne semble avoir prévu de les corriger. Peut-être sont-ils là pour décorer le backlog. En tous cas, à un moment donné, on ne sait plus quoi en faire.

4) Le bug qui est en fait une remarque

Quelqu’un ouvre un rapport de bug (peut-être vous) mais sans trop savoir « Si c’est un bug ou pas, en tous cas ça vous semble bizarre, mais si ce n’est pas un bug oubliez ce que j’ai dit, faites comme vous voulez ». On ouvre un rapport de bug pour faire une remarque. Et au bout d’un moment on ne sait plus trop quoi faire de ce ticket : cette remarque n’est-elle pas légitime ?

5) Le nettoyage de printemps (à l’acide chlorhydrique)

L’équipe veut faire en sorte de fermer le plus de rapports de bugs possible, voire de n’avoir aucun bug ouvert, et en plus des corrections, ça passe par d’infinies négociations avec les personnes qui ont créé les tickets. Le rapport de bug est vu comme une menace pour l’intégrité de l’équipe.

Chaque personne souhaite en savoir plus sur la qualité de l’applicatif, et chaque rapport de bug contient de l’information sur l’applicatif. Mais si on souhaite se débarrasser de ces rapports uniquement des métriques projet plus agréables… n’est-ce pas un peu contradictoire ?

6) Le fayotage à la noix

Une personne veut montrer à quel point elle est assidue au sujet de la qualité et va ouvrir une farandole de bugs doublonneux. Le rapport de bug est vu comme un trophée par celui qui le crée.

7) Le débat épistémologique

Un bug d’UX est ouvert et ça lance une interminable controverse. Est-ce que c’est un bug, est-ce que ce n’en est pas un, est-ce qu’on peut parler de bug quand il s’agit d’UX, etc. Bref on se lance dans une bataille d’opinions, et on ne sait plus quoi faire du ticket.

8) Le gaspillage de paires d’yeux neufs

Une personne nouvellement arrivée dans l’équipe ouvre un rapport de bug car ce qu’elle voit lui semble déroutant. Quelqu’un clôture le rapport car le comportement est conforme à l’attendu. Le ticket d’anomalie est analysé de manière dogmatique et potentiellement on étouffe dans l’œuf une possibilité d’amélioration.

9) Le ticket « bug et méchant »

Quelqu’un a ouvert un rapport de bug car un comportement constaté contredit ce qui est demandé dans une User Story, mais ce comportement ne ressemble pas à un bug quand on n’a pas connaissance de la User Story. Une approche dogmatique qui ne bénéficie pas au projet.

10) Le débogage comme passe-temps

L’équipe corrige les bugs quand elle a du temps pour le faire. Les bugs tiennent un rôle de bouche-trou quand les devs s’ennuient. Comme c’est dommage !

11) L’heure de la sieste

Lors des revues, le fait que des bugs aient été corrigés n’intéresse pas grand-monde. Ce qu’on veut voir absolument, ce sont les nouvelles fonctionnalités. Et les corrections de bugs ne sont pas considérées comme des nouvelles fonctionnalités, même si elles incorporent des choses qui n’étaient pas là auparavant. Les bugs sont des citoyens de seconde zone.

12) Le bug microscopique

Quelqu’un a ouvert un bug mais l’anomalie est tellement petite que ça ne vaut quasiment pas le coup de la corriger.

13) Le bug marginal

Quelqu’un a ouvert un rapport de bug, mais l’anomalie ne concerne qu’une portion minuscule de la population visée, par exemple les personnes utilisant un appareil mobile avec l’OS Android 5.1.1. Ce type de bug est l’un des écueils des tests de portabilité.

14) Le bug en voie de disparition

Quelqu’un a ouvert un rapport de bug, mais l’anomalie est vouée à disparaître à court terme car la règlementation va changer, ou encore qu’une refonte graphique va être réalisée.

15) Le bug qui pousse le bouchon

Quelqu’un a ouvert un rapport de bug mais l’anomalie est justifiée par des standards que l’équipe n’a pas choisi d’adopter. Par exemple, un bug d’accessibilité qui s’appuie sur le standard WCAG n’est pas nécessairement légitime aux yeux des autres personnes de l’équipe si personne n’a formulé d’exigences sur l’accessibilité en amont du projet.

16) Le bug du roi

Un bug est ouvert par une personne influente (typiquement, la ou le CEO), mais il se trouve que ça concerne une fonctionnalité qui se comporte comme ça par design. Et donc, on ne sait plus quoi faire du ticket.

___

Le constat est posé : en plus d’être tout un art, la gestion des anomalies est un sport qui n’est pas de tout repos ! Que mettez-vous en place dans vos organisations pour fluidifier cette activité ? Avez-vous rencontré d’autres situations où les rapports de bugs font débat, font trop de vagues ou pas assez ?

Utilisez cette liste de situations pour lancer le débat dans votre organisation ! Une idée d’atelier serait de présenter ces situations sous forme de bingo des bugs.

NB : Cet article reprend par écrit une partie de la conférence « La notion de bug est buggée », présentée par une de nos expertes il y a quelques années à l’occasion de la conférence Frug’Agile France. Cette conférence est à découvrir ou redécouvrir ici !

Image de couverture générée avec Midjourney

17 phrases inspirantes sur la qualité et le test logiciel

Ce mois-ci, sur notre page LinkedIn, nous avons partagé en guise de calendrier de l’Avent des phrases inspirantes sur le test logiciel.

Nous les listons ici pour ne pas les oublier !

Magnifiques fêtes de fin d’année, et que 2023 vous apporte le meilleur de la qualité !

EDIT écrit fin 2023 : ce fut une bonne année. Merci aux personnes qui nous ont souhaité une bonne année, ça a fonctionné !

1. Une définition saisissante du test logiciel

Le test est un processus infini consistant à comparer l’invisible à l’ambigu afin d’éviter que l’impensable n’arrive à l’inconnu.
~James Bach

James Bach est un consultant en test et en qualité logicielle, connu pour sa méthodologie de test exploratoire.

2. A compléter ! Tester, c’est d…

Vous avez déchaîné votre créativité pour compléter cette phrase ! Félicitations aux personnes qui ont imaginé de belles trouvailles !

Quelques-unes que nous avons particulièrement appréciées :

3. La qualité est gratuite

Quality is free. It’s not a gift, but it’s free. What costs money are the unquality things -all the actions that involve not doing jobs right the first time.
~Philip B. Crosby

Philip B. Crosby était un expert en management de la qualité. Il est notamment connu pour sa philosophie de la qualité « Zero Defects » (ZD) et pour son livre Quality is Free (1979).

4. L’automagie n’existe pas

It’s automation. Not automagic.
~Jim Hazen

Jim Hazen est un expert en qualité et un consultant en gestion de la qualité. C’est également un conférencier international et un formateur en qualité logicielle et en audit de la qualité.

5. Pardon pour le gros mot… mais c’est vrai

Tout objectif flou conduit irrémédiablement à une connerie précise.

Cet aphorisme n’a malheureusement pas d’autrice ou d’auteur connu.

6. L’informatique décuple tout

L’homme est sujet à l’erreur. Mais s’il veut vraiment commettre la gaffe absolue, alors là, il lui faut un ordinateur.
~Dan Rather

Dan Rather ne travaille pas dans l’industrie logicielle, mais est un journaliste et un présentateur américain. Il a été présentateur en chef à CBS News pendant plus de 20 ans et est lun des plus célèbres présentateurs de lhistoire des médias américains.

7. Investir ou s’endetter

On améliore rarement la qualité en diminuant les coûts, mais on peut souvent diminuer les coûts en améliorant la qualité.
~Karl Albrecht

Karl Albrecht était un entrepreneur et un expert en gestion. Il a co-fondé la chaîne de supermarchés allemande Aldi.

8. La comparaison la plus inattendue

Les logiciels et les cathédrales, c’est un peu la même chose -d’abord on les construit, ensuite on prie.
~Sam Redwine

Cette phrase a été prononcée au 4ème International Software Process Workshop, en mai 1988.

9. Un rappel important

Ce sont les personnes, et non les méthodologies ou les outils, qui font le succès des projets.
~Lisa Crispin

Lisa Crispin est une experte en test logiciel et en agilité. Elle a écrit de nombreux livres et articles, notamment Agile Testing et More Agile Testing avec Janet Gregory, des ouvrages que nous avons déjà évoqués dans de précédents articles.

10. La base du test logiciel

L’empathie est la base du test logiciel
~Erin Hess

Erin Hess est spécialiste en qualité logicielle, et porte une attention particulière à comprendre les utilisateurs en profondeur.

11. Tests automatisés & tests exploratoires

Les tests automatisés couvrent les inconnues que nous savons possibles, les tests exploratoires couvrent les inconnues… inconnues.
~Jenna Charlton

Jenna Charlton est spécialiste en qualité logicielle et a notamment pris la parole lors de conférences autour du test agile.

12. La métrique à ne pas oublier

Une métrique extrêmement simple : « A quel point avez-vous confiance en cette version ? »
~Lena Pejgan Wiberg

Lena Pejgan Wiberg a notamment écrit le livre « Would Heu-risk it? ».

Pour davantage de réflexions sur les métriques en qualité logicielle, nous vous recommandons de vous plonger dans cet article sur les KPI.

13. Le goût des logiciels

L’amertume de la non-qualité dure bien plus longtemps que le délice d’avoir respecté la deadline.
~Karl Wiegers

Karl Wiegers est l’auteur de plusieurs livres traitant de programmation, mais aussi d’ingénierie des exigences.

14. Ce que veulent les QA

Les QA n’aiment pas casser les choses, mais dissiper l’illusion que les choses fonctionnent.
~Kaner, Bach et Pettichord

Cette citation est issue d’un livre extrêmement dense et rempli d’enseignements précieux : Lessons Learned in Software Testing.

15. Do it right… when it’s time

Peu importe de bien faire du premier coup. Ce qui compte, c’est de bien faire le dernier coup.
~Andrew Hunt et David Thomas

Cette citation est quant à elle issue de l’ouvrage The Pragmatic Programmer. Remarquez la tension avec la citation de Philip B. Crosby !

16. Ce qu’on ne pourra pas automatiser

Les ordinateurs excellent à suivre les instructions, mais pas à lire dans vos pensées.
~Donald Knuth

Donald Knuth est un mathématicien et un informaticien. Il est connu pour ses contributions à linformatique théorique et à lalgorithmique, et est lauteur de plusieurs livres, dont The Art of Computer Programming. Il a créé le système de composition de documents TeX.

17. Le mot de la fin…

Rien dans la vie n’est à craindre, tout doit être compris. C’est maintenant le moment de comprendre davantage, afin de craindre moins.
~Marie Curie

Marie Skłodowska-Curie ne parlait bien sûr pas de qualité logicielle, mais cette citation est parfaitement adaptée à cette discipline qui cherche avant tout à comprendre comment fonctionnent les choses.

Encore une fois, joyeuses fêtes de fin d’année, et à bientôt pour de nouveaux articles !

4 clés pour réussir son premier entretien d’embauche de QA

Dans un précédent article, nous vous donnions des pistes pour vous aider à devenir testeur logiciel. Vous avez désormais obtenu un premier entretien d’embauche et votre nouvelle carrière de QA vous tend les bras : félicitations ! Problème : le syndrome de l’imposteur vous guette, et vous redoutez que l’entreprise ne vous retienne pas. Pas de panique, dans cet article on partage avec vous quelques astuces pour que ce moment se passe bien. Mettez toutes les chances de votre côté !

#1 – Partagez votre enthousiasme

Beaucoup de personnes découvrent le test par hasard, par exemple suite à un entretien avec des conseillers Pôle Emploi. Il n’y a aucun mal à ça, le métier est encore relativement méconnu et tous les moyens sont bons pour le faire connaître ! Merci d’ailleurs, au passage, aux personnes qui, sans l’exercer, font connaître ce beau métier.

Toutefois, si vous êtes dans ce cas, il est important que votre discours dépasse cette dimension “hasard de la vie”. Sans cela, votre interlocuteur se demandera, à juste titre, si vous avez choisi le test logiciel par envie ou par dépit.

  • Qu’est-ce qui fait qu’aujourd’hui, vous avez envie de faire du test ?
  • Cette activité vous plaît-elle authentiquement ?
  • Si oui, quelles sont les activités ou les situations précises qui vous font le plus vibrer ?

Vous aurez beau être authentique dans votre motivation, ce qui va compter avant tout c’est de l’exprimer d’une façon que votre recruteur puisse vous croire.

Plus vous serez spécifique et plus vous paraîtrez authentique. 

Par exemple, “Je veux devenir QA car ça me plaît d’améliorer la qualité des logiciels” sonne un peu fade. “J’adore constater qu’un des bugs que j’ai découverts a été parfaitement corrigé”, ou encore “Ca me fait pétiller le cerveau de rechercher la petite configuration qui provoquera une défaillance” c’est tout de suite plus savoureux !

Si vous montrez votre motivation et que celle-ci est sincère, votre enthousiasme aura toutes les chances de gagner votre interlocuteur.

#2 – Assumez toutes les cordes à votre arc

Vous avez un passé de littéraire ? De comptable ? De biologiste ? De prof ? De standardiste ? De cuistot ? De parent au foyer ?

Félicitations, vous faites donc partie de l’écrasante majorité de personnes qui ont débuté leur carrière autrement que dans le test logiciel. Vous avez tout à gagner à assumer pleinement vos expériences passées. Elles ont façonné chez vous un certain regard sur le monde, des exigences qui vous sont propres, une manière d’apprendre, de vous organiser, de communiquer.

C’est une richesse et il est important que vous en preniez conscience !

Vous gagnerez à expliquer à votre interlocuteur les ponts qui existent entre les différentes expériences et disciplines qui jalonnent votre carrière, et le métier du test. Dans le prochain article, nous donnerons la parole à une myriade de QA aux parcours extrêmement variés, qui vous parleront des apports de leurs premières disciplines. Préparez-vous !

#3 – Démontrez vos qualités de testeur

Emna Ayadi, spécialiste en test logiciel, a mis en lumière 4 catégories de compétences indispensables aux testeurs du XXIème siècle (les 4C) :

  • Esprit critique
  • Collaboration
  • Communication
  • Créativité

Même si vous débutez dans le monde de la qualité logicielle, vous avez déjà certainement des “success stories” à partager en rapport avec ces soft kills, que ce soit dans votre passé étudiant, professionnel, associatif, ou de loisirs.

En lien avec les qualités citées ci-dessus, illustrez celles dans lesquelles vous vous reconnaissez le plus par des actions que vous avez pu mener précédemment.

#4 – Faites part de votre curiosité

La curiosité est une qualité extrêmement valorisée dans le monde de la qualité logicielle. C’est normal ; vous allez devoir vous intéresser à des domaines fonctionnels que vous ne maîtrisez pas encore, faire l’effort d’aller dans le détail, apprendre à utiliser des outils qui changeront d’année en année…

Et le hack, c’est que la curiosité s’appuie justement sur ce qui, en tant que débutant, peut aujourd’hui vous faire peur : le fait de ne pas tout savoir !

Au cours de l’entretien, faire part d’éléments précis qui éveillent votre curiosité permettra à votre interlocuteur d’en savoir davantage sur votre motivation et ce sur quoi votre profil tend. Encore une fois, plus vous serez spécifique, plus vous irez loin dans les questions, et plus vous aurez de l’impact. Un exercice possible est de préparer une question, et de trouver une question supplémentaire pour l’approfondir. Par exemple, après avoir posé la question “Quels outils utilisez-vous ?”, vous pouvez aller plus loin : “Selon quels critères les avez-vous choisis ?”

Ou encore, après la question “Combien de personnes constituent l’équipe de test ?”, demander “Quel ratio visez-vous entre les devs et les QA ?”.

Une curiosité sincère démontre également, sans qu’il y ait besoin de le formaliser ou de forcer le trait, une certaine humilité.

Développer une attitude de curiosité est donc “tout benef”, lors de l’entretien mais aussi tout au long de votre parcours… que nous espérons riche en succès !

D’autres ressources pour aller plus loin

Cet article s’adresse aux testeurs débutants, qui veulent décrocher leur tout premier poste de testeur. Il existe cependant d’autres articles que nous vous conseillons de lire également, même s’ils ne se focalisent pas sur le cas particulier de la première embauche. Nous souhaitons partager avec vous deux d’entre eux :

Il ne nous reste plus qu’à vous souhaiter un entretien agréable et enrichissant. Tirez-en le maximum, et n’oubliez pas qu’une réponse négative ne signifie pas que l’histoire est terminée ! Si le courant est passé, gardez contact ; cela pourra mener, quelques années plus tard, à de belles collaborations. You never know!

Pour découvrir d’autres contenus sur le métier du test, abonnez-vous à notre page LinkedIn 🙂

Tests non fonctionnels : quelques ressources pour vous lancer

« Les compères dans leur Fiat font sécher leurs mains en utilisant les portes. »

Qu’est-ce que c’est ? Une formule magique ? Une chaîne aléatoire générée par une IA ? Un extrait de chanson absurde ?

Rien de tout ça : c’est notre moyen mnémotechnique pour se souvenir des 8 aspects de la qualité logicielle définis par ISO 25010 !

Les com(patibilité)per(formance)es dans leur Fia(bilité)t fon(ctionnalité)t sec(urité)her leurs main(tenabilité)s en utilisa(bilité)nt les port(abilité)es.

Compatibilité, Performance, Fiabilité, Fonctionnalité, Sécurité, Maintenabilité, Utilisabilité, Portabilité.

Ces 8 aspects sont tous importants, mais l’un d’entre eux est comme un arbre qui cache la forêt : l’aspect fonctionnel. Eh oui : quand un produit numérique est créé, on veut avant tout savoir “s’il fonctionne” !

Toutefois, il est important d’avoir en tête les 7 autres aspects, qui se focalisent sur comment le produit fonctionne : rapidement, joliment, sécuritairement, compréhensiblement, simplement…

Cet article donne quelques clés pour comprendre ces types de test avant de vous lancer. Les ressources partagées sont issues de nos propres travaux ainsi que d’autres ressources francophones, pertinentes et faisant autorité dans le domaine de la qualité logicielle. Nous étofferons avec plaisir cette liste avec vos suggestions, alors n’hésitez pas à nous en partager.

Bonne lecture !

Compatibilité

Portrait robot du problème de compatibilité

L’applicatif fonctionne bien sur la machine du développeur (héhé !) mais rencontre des problèmes dès qu’il se trouve sur le même environnement qu’un autre logiciel du système d’information ? Il a du mal à communiquer avec d’autres systèmes dont il dépend ? Il présente certainement un problème de compatibilité !

A quoi ressemblent des tests de compatibilité ?

Bien souvent, les problèmes de compatibilité sont découverts “par hasard”, ou plutôt “par nécessité”, quand l’applicatif est installé dans son environnement cible. Mais en fonction du produit (notamment ceux nécessitant une installation locale chez chaque client), il peut être nécessaire de procéder à des tests systématiques. Cela consiste à imaginer différentes configurations que pourrait rencontrer l’applicatif, et vérifier si chacune d’elle permet un comportement nominal de celui-ci. Des tests de portabilité sont alors souvent également nécessaires (voir la section dédiée).

Pour aller plus loin :

Fiabilité

Problèmes de fiabilité : kézako ?

Les utilisateurs ne font pas confiance à l’applicatif ? Il plante à chaque fois qu’on saisit une valeur qu’il n’attend pas ? Il est régulièrement indisponible ? Il est incapable de se rétablir après avoir “crashé” suite à une forte affluence ? Il y a certainement un problème de fiabilité !

Comment tester la fiabilité ?

La fiabilité donne lieu à des tests de diverses natures.

Certains tests visent à mettre l’applicatif et son environnement en difficulté (coupure réseau, indisponibilité d’une ressource tierce…) afin de vérifier l’adéquation de son comportement et sa capacité de récupération.

Des dispositifs de monitoring peuvent également être mis en œuvre afin de vérifier la disponibilité de l’applicatif au fil du temps.

Pour aller plus loin :

Performance

La performance, qu’est-ce que c’est ?

L’applicatif est trop lent ? Il ne tient pas plus de 15 utilisateurs simultanés ? Il y a certainement un problème de performance !

La performance regroupe un certain nombre de termes utilisés au quotidien au sein des DSI : charge, robustesse, stress, rendement… 

Pourtant, chaque terme a une signification différente et peut mener à des types de test différents.

Vous vous perdez dans la sémantique ? Pas de panique, faites un petit tour par cet article de désambiguïsation qui vous permettra d’y voir plus clair grâce aux définitions de l’ISTQB !

Quels types de tests pouvez-vous réaliser ?

Les tests les plus courants pour cet aspect de la qualité sont les “tirs de charge”, qui consistent à simuler l’utilisation de l’applicatif par un certain nombre de personnes. Le type d’utilisation peut être spécifié, et des rapports sont générés de façon à comprendre quelles ressources sont les plus susceptibles de créer des lenteurs voire des indisponibilités en production.

Quelques outils connus : JMeter, Neoload, Gatling.

Pour aller plus loin :

Sécurité

Bugs de sécurité : des bugs pas comme les autres ?

Les bugs de sécurité, aussi appelés “failles”, ont une place un peu à part dans l’inconscient collectif, car ils mettent en jeu non seulement l’applicatif, son environnement et ses utilisateurs, mais aussi des acteurs bien spécifiques, communément désignés sous le noms de hackers, pirates ou utilisateurs malveillants !

Ces anomalies peuvent être de natures très différentes. On distingue communément les défauts présents dans l’applicatif (on parle tout simplement de “sécurité applicative”), et ceux qui concernent son environnement ou son réseau.

Techniques de tests de sécurité

Parmi les techniques spécifiques les plus courantes pour effectuer des tests de sécurité, on compte le pentest ou penetration testing (des tests souvent outillés qui consistent à s’introduire dans un système) et les scans de vulnérabilité, qui comparent un existant avec une bibliothèque de failles connues et plus ou moins communes. Tandis que les pentests nécessitent souvent des connaissances assez poussées, il est possible de mettre en œuvre rapidement et à peu de frais des scans de vulnérabilité. Toutefois, l’un ne remplace pas l’autre.

Des tests de sécurité peuvent être facilement mis en œuvre lors de la conception de tests d’API ; il suffit alors d’imaginer des scénarios “interdits” (exemple : essayer de changer le prix d’un article en utilisant l’API en étant connecté en tant que simple client !)

Pour aller plus loin :

Maintenabilité

Repérer les problèmes de maintenabilité

L’applicatif connaît de nombreuses régressions ? L’intégration de nouveaux développeurs se fait lentement et dans la douleur ? Les devs historiques rechignent à retourner sur le projet ? Ca sent la problématique de maintenabilité !

Comment gérer les défauts de maintenabilité ?

La qualité de code est étroitement liée à cet aspect de la qualité logicielle ; toutefois, ce n’est pas parce que la qualité de code est essentiellement une responsabilité des développeurs, que les testeurs n’ont pas de rôle à jouer pour faciliter la consolidation de la maintenabilité.

Les outils de qualimétrie peuvent être des alliés dans la détections de problèmes de maintenabilité. SonarQube par exemple détecte 3 types de problèmes de code : les bugs, les vulnérabilités et les “code smells”. Cette troisième catégorie permet de détecter des aspects qui trahissent un manque de maintenabilité au sein du code.

Un travail collaboratif de définition de bonnes pratiques de développement est également un investissement très intéressant pour la qualité à long terme du produit. Cela peut prendre la forme de revues de code classiques (simple et efficace !), mais cela peut aussi être outillé avec des solutions telles que Promyze.

Pour aller plus loin :

Utilisabilité

Le spectre des problèmes d’utilisabilité

L’utilisabilité est un aspect passionnant de la qualité logicielle, qui s’intéresse avant tout à l’expérience subjective de l’utilisateur. Et “subjective” n’est pas un gros mot ! Cela signifie simplement qu’il est nécessaire ici de se positionner dans une situation spécifique. Celle, par exemple, d’une personne qui n’a pas forcément les mêmes informations que nous, le même vécu ou encore les mêmes caractéristiques physiques (dans le cas des tests d’accessibilité).

Comment obtenir des retours d’utilisabilités crédibles ?

Une des grandes difficultés qu’un testeur peut rencontrer au moment de rapporter un bug d’utilisabilité est le risque de se voir rétorquer “C’est subjectif” (sous-entendu “Cela n’est pas un bug, cela ne sera pas corrigé”). Il est donc important de s’appuyer sur des arguments solides et si possible soutenus par des ressources tierces (états de l’art, témoignages utilisateurs…)

Comme pour la portabilité (voir section suivante), le crowdtesting (ou test participatif) est en mesure d’apporter rapidement des informations qualifiées sur l’utilisabilité des applicatifs.

Pour aller plus loin :

Portabilité

Les signes de problèmes de portabilité

L’applicatif fonctionne bien sur Windows 10 mais pas sur MacOS ? Sur Chrome mais pas sur Firefox ? Le design est magnifique sur écran d’ordinateur mais horrible sur smartphone ? Quand on parle de portabilité, il s’agit exactement de ce type de problèmes !

Démarrer une démarche de tests de portabilité

L’ennemi n°1 de la portabilité, c’est… de ne pas faire de tests de portabilité. Certes !

L’ennemi n°2, c’est de se disperser.

En effet, la combinatoire des environnements (système d’exploitation, version d’OS, navigateur, taille d’écran…) empêche la plupart du temps de tout tester. La portabilité donne une belle illustration du principe général du test “Les tests exhaustifs sont impossibles” !

Pour asseoir une stratégie de tests de portabilité efficace, il est nécessaire de s’appuyer sur des chiffres. Quelles sont les configurations les plus plausibles dans notre cas ? Quels sont les 20 % de configurations (à la louche !) qui nous permettront d’être confiants sur 80 % des cas ?

Des outils de tracking des utilisateurs sont alors très utiles (par exemple, Google Analytics pour un site web permet de connaître quelques éléments sur les habitudes de navigation des utilisateurs).

Une fois cet état des lieux réalisé, c’est le moment de se lancer. Plusieurs possibilités peuvent alors être envisagées :

  • Avoir recours à des fermes de devices ou de navigateurs (des services en ligne qui mettent à disposition des environnements dédiés à ce type de tests)
  • Investir dans de nombreux devices de test (c’est beaucoup plus onéreux ; la plupart du temps nous déconseillons cette pratique)
  • Faire appel à des crowdtesteurs. L’avantage ici étant que les retours ne concerneront pas seulement la portabilité, mais aussi d’autres aspects de la qualité logicielle.

Pour aller plus loin :

  • Comprendre les enjeux liés à la compatibilité : Article sur la Taverne du testeur
  • Nous avons testé pour vous deux services cloud permettant de mettre en œuvre des tests de portabilité : pCloudy et BrowserStack.
  • L’extension Lighthouse de Chrome permet de passer en revue des aspects tels que la performance, la portabilité et l’accessibilité.
  • La portabilité et la compatibilité sont souvent étroitement liées, car elles s’intéressent toutes deux à la variété des configurations logicielles et matérielles dans lesquelles l’applicatif va être utilisé. Toutefois, ce sont deux notions à distinguer. Voici donc un paragraphe (en anglais) sur la différence entre compatibilité et portabilité.

Par où commencer ?

Eh oui, cela fait beaucoup d’infos ! 

Connaître les 8 aspects de la qualité logicielle est un bon début. Pour la suite, nous vous conseillons ces étapes pour faire de vous un cador des tests non-fonctionnels :

  • Faire connaître ces 8 aspects à votre équipe (en partageant cet article par exemple !)
  • Discuter collégialement des différentes facettes de la qualité vis-à-vis des applicatifs que vous testez au quotidien
  • Identifier les tests non fonctionnels prioritaires pour chaque applicatif
  • Vous former et mettre en œuvre ces tests au sein de votre stratégie globale !

Tout cela étant dit, nous vous souhaitons bon courage dans votre périple ! Si vous avez des questions ou besoin d’aide, nous vous conseillons de poster un message sur le groupe LinkedIn francophone très réactif Le métier du test. Au plaisir de vous y retrouver !

Bon courage dans votre exploration et souvenez-vous que le test regorge toujours d’occasions d’apprendre !

7 signes que vous faites de la sur-qualité, et comment vous en sortir

La sur-qualité est l’ennemie sournoise de la qualité ; elle se déguise pour lui ressembler, mais ne manque pas de nuire aux projets dans lesquels elle s’invite. Voici quelques signes qui vous permettront de l’identifier dans vos pratiques et dans celles de vos équipes !

Dans son acception la plus simple, la sur-qualité consiste à allouer à la qualité des moyens supérieurs aux besoins réels.

Dans cet article, nous montrerons que la sur-qualité peut également provenir d’une mauvaise gestion de moyens alloués à la qualité, même si ces moyens sont originellement bien dimensionnés.

Afin d’illustrer des comportements extrêmes à éviter, les traits sont volontairement un peu forcés ! 🙂

Signe 1 : Vous rejouez toujours tous les tests de régression

Contexte : vous avez passé du temps à écrire un test d’importance moyenne à faible en 2020 à l’occasion de l’implémentation d’une nouvelle fonctionnalité. Aucune anomalie n’a été détectée en exécutant ce test. La fonctionnalité s’est avérée très stable au fil du temps.

Ce test s’est pourtant retrouvé rejoué VINGT-HUIT FOIS, à l’occasion de chacune des campagnes de test qui ont eu lieu depuis.

Vingt-huit fois.

Pourquoi ?

Par habitude ? Parce que vous avez décidé, ou bien votre entreprise a décidé, que la qualité était une priorité, et que dans cette mesure il fallait rejouer à chaque campagne l’ensemble des tests de régression ?

Des leviers plus forts que vous sont certainement en jeu (biais cognitifs, management, etc), mais c’est contre-productif. Au mieux, cela dépense silencieusement un budget énorme qui avait été prévu à cet endroit. Au pire, cela contribue à construire une mauvaise réputation des activités de test. Ainsi pourrez-vous entendre les discours suivants :

  • « Les tests, ça coûte cher »
  • « Les recettes sont de plus en plus longues et créent un goulet d’étranglement »
  • « On fait de plus en plus de tests mais on ne trouve pas de plus en plus de bugs »
  • « Les testeurs doivent s’ennuyer, ils font toujours la même chose ».

Comment éviter ça ?

Le meilleur moyen d’éviter cet écueil est de prendre le temps de revoir sa stratégie de test, et de trouver un équilibre entre rapidité et couverture de test.

Signe 2 : Vous conservez tous les cas de tests écrits depuis le début du projet

« Ce cas de test a bien été écrit pour une raison… »

C’est le seul motif que vous avez pour conserver ce cas de test, et le rejouer respectueusement campagne après campagne.

La personne qui l’a écrit est partie depuis des mois, d’autres tests ont été écrits depuis qui couvrent peut-être encore mieux cette partie, mais dans votre esprit, il est hors de question de supprimer ce cas de test.

Or, un référentiel de tests en bonne santé est comme un serpent ; il grandit certes, mais lentement, et se débarrasse régulièrement de sa peau morte. Comme l’indique avec humour le wiki Fan de Test, conserver, par principe, la totalité des tests écrits depuis le début du projet, relève de la syllogomanie.

Comment éviter ça ?

Effectuer régulièrement une revue des tests, pour éventuellement en supprimer ou en fusionner, est une bonne pratique. Il y a de quoi hésiter avant de supprimer un cas de test, mais si vous utilisez un outil de gestion des tests qui intègre une gestion des versions, cela devient beaucoup moins intimidant.

Signe 3 : La combinatoire vous contrôle plus que vous ne la contrôlez

Vous voulez tester toutes les configurations, TOUTES.

Un produit peut être de 10 couleurs différentes et de 5 tailles différentes ? Boum, vous prévoyez 50 tests pour vérifier que ce produit s’affiche correctement dans le panier quelle que soit sa couleur et sa taille.

Vous souhaitez que le site web fonctionne correctement sur les 3 navigateurs les plus utilisés du marché ? Allez : 50 tests multipliés par 3, 150 tests.

Et ainsi de suite.

C’est une caricature évidemment, mais pourrait-elle être votre caricature ?

Comment éviter ça ?

Découvrez des techniques, par exemple Pairwise, qui vous permettront de réduire le nombre de jeux de données tout en conservant une couverture satisfaisante.

Et pour éviter le paradoxe du pesticide, changez de temps à autre les jeux de données !

Il est important également de voir les cas d’utilisation au-delà de la combinatoire. S’il est possible, dans un formulaire d’inscription, de saisir un pays de résidence et une devise préférée, il est important de proposer l’euro aux utilisateurs ayant choisi la France comme pays de résidence. Le dollar des Tuvalu (archipel de 11 000 habitants)… un peu moins. Inutile donc de fournir le même effort de test sur les deux cas !

Signe 4 : Vous avez des lubies

Un jour, vous avez trouvé un bug de sécurité sur un applicatif A, qui pouvait être reproduit en modifiant malicieusement le contenu de listes déroulantes. Vous avez donc mis en place des tests très poussés sur cette partie, ce qui s’est révélé parfaitement pertinent dans le contexte. Quel bonheur de faire une si belle moisson de bugs ! Quel génie !

Depuis, à chaque fois que vous vous retrouvez sur un nouveau projet, vous mettez en œuvre ce type de test. La sécurité des listes déroulantes est systématiquement testée de fond en comble. C’est votre dada. Et peu vous importe que cela prenne du temps, peu vous importe que les risques ne soient pas les mêmes ; ça a marché une fois, ça devrait marcher de nouveau !

Bref, il est facile d’oublier les 7 principes généraux du test logiciel, et un en particulier : « Les tests dépendent du contexte ».

Comment éviter ça ?

Votre expérience de testeur doit vous bonifier avec le temps, ouvrir vos perspectives et vous permettre de vous adapter à toujours plus de situations. Si vous pensez constamment à ce qui a fonctionné sur vos précédents projets, vous risquez de tomber dans la sur-qualité sur certaines parties anodines et d’utiliser le temps dédié aux tests à mauvais escient.

Le mieux est alors, à chaque fois que l’on intervient sur un nouveau projet de test, de s’efforcer à adopter un regard neuf. Presque comme si on voyait un logiciel pour la première fois… tout en capitalisant sur l’expérience passée. Un exercice d’équilibriste, mais qui en vaut la peine !

Signe 5 : La loi de Murphy est votre seule crédo

« Tout ce qui est susceptible d’aller mal ira mal. »

L’applicatif à tester est mis en production toutes les deux semaines ? Pas de problème : toutes les deux semaines, vous faites non seulement des tests sur des cas passants, sur des cas non-passants, mais aussi sur des scénarios abracadabrantesques. Toujours les mêmes, par sécurité, parce qu’on ne sait jamais.

Hé oui, car que se passerait-il en production si un utilisateur essayait de changer sa date de naissance de manière à indiquer qu’il est né après-demain, en passant par l’inspecteur parce que l’interface web ne permet pas cette manipulation ?

Quelle question brûlante, cela vaut vraiment la peine de faire ce test tous les 15 jours ! (Ironie)

Comment éviter ça ?

La loi de Murphy n’est pas dénuée de bon sens, mais la plupart du temps, il est important d’obtenir d’abord des informations sur ce qui est le plus probable d’arriver.

Pensez avant tout au besoin métier, recentrez-vous sur le cœur des exigences.

Dans la mesure du possible, collectez également des informations sur les utilisateurs finaux : quels sont leurs besoins les plus fréquents ? Quelles sont les fonctionnalités qu’ils utilisent le plus ? Quelles sont leurs habitudes de navigation ? Cela aide à redonner à la loi de Murphy sa juste place.

Signe 6 : Vous testez comme des fous mais il y a tout de même des bugs découverts en prod

Le temps passé à couper les cheveux en quatre, consciemment ou inconsciemment, sur des fonctionnalités triviales, représente un manque à gagner. C’est du temps confisqué aux questions essentielles, celles qui s’intéressent à ce qui pourrait vraiment mal tourner.

La sur-qualité sur certaines parties n’empêche donc en rien… la sous-qualité sur d’autres !

Comment éviter ça ?

Prendre conscience du décalage entre l’important effort de test fourni, et les résultats infructueux, est la première étape. Cela permet ensuite de marquer une pause pour revoir la stratégie. L’étape suivante : recentrer les activités de test autour des fonctionnalités les plus fragiles, celles qui regroupent le plus de défauts (pensez Pareto !)

Signe 7 : Ajouter davantage de tests ne réussit pas au projet

« Les tests, c’est comme le fromage : plus il y en a et meilleur c’est ! »

Oui… mais dans les mêmes limites !

Ne niez pas : vous ne voudriez pas d’une pizza recouverte d’une couche de 4 centimètres de fromage. (Si ? Bon ok, mais à ce moment-là on a de très bons cardiologues à vous conseiller.)

Il existe de même un seuil à partir duquel ajouter des tests ne réussit plus au projet, au contraire.

Jusqu’à un certain point, augmenter les moyens alloués aux tests est bénéfique au projet : les anomalies sont trouvées plus tôt, et leur coût de correction est donc moindre.

Au-delà d’un certain point, les tests continuent de déceler des anomalies, mais plus suffisamment pour assurer le ROI de cette activité.

Comment éviter ça ?

Observez comment se déroulent vos campagnes de test.

Mettons qu’une campagne se déroule sur 4 jours ; si très peu d’anomalies majeures sont découvertes pendant les trois premiers jours, qu’aucune n’est découverte lors du quatrième, et que la nouvelle version ne révèle aucune nouvelle anomalie une fois en production, interrogez-vous collectivement : serait-il possible la prochaine fois de réduire le temps alloué à la campagne de tests ?

Ce temps gagné pourrait être utilisé autrement : en effectuant des revues de spécifications, en automatisant davantage de tests, en optimisant l’outil de gestion des tests…

Résultat : au fil de l’eau, les tests permettent de livrer de plus en plus vite en production, et deviennent un facteur visible de succès.

En conclusion

La surqualité est l’ennemie de la qualité, mais aussi de l’image que vos interlocuteurs se font des activités de test. Pire encore, elle cohabite volontiers avec la sous-qualité.

Elle met en péril l’efficience (faire bien les choses), et parfois aussi l’efficacité (faire les bonnes choses), des tests. Heureusement, des solutions existent !

Et vous, quels signaux utilisez-vous pour déceler la sur-qualité au sein de vos projets ?

test logiciel-video-bug d'expérience

[VIDEO] Un bug d’UX est-il un bug ?

Un bug, c’est « toute condition qui dévie des attentes basées sur les exigences de spécifications, documents de conception, documents utilisateurs, standards etc, ou des perceptions ou expériences de quelqu’un. » (Glossaire CFTL, ISTQB).
Si on se contente de lire la première partie de cette définition (jusqu’à « etc »), le positionnement général vis-à-vis du bug est tout à fait confortable puisque cela permet pour les testeurs de définir deux parties de leur activité assez clairement :
  • Vérifier que les exigences forment un ensemble cohérent
  • Tester si l’application est conforme à ces exigences
Par contre, pour la seconde partie, « les perceptions ou expériences de quelqu’un », c’est une autre histoire :
  • Qui est quelqu’un ?
  • Qu’est-ce qu’un bug d’UX ?
  • Quelles perceptions ? Quelles expériences ?
  • Quels biais entrent en jeu ?
  • Comment gérer ces bugs ?
Zoé vous apporte des réponses cette vidéo sur les Bugs d’expérience (UX).
Et vous alors, quels bug d’UX avez-vous pu trouver dernièrement ? Dans vos organisations, comment procédez-vous pour les trouver / corriger ?

 

 

 

 

8 choses essentielles à savoir pour tester un serveur d’autorisation

Que se passe-t-il vraiment lorsqu’on retire de l’argent à un distributeur de billets, quand on paie par carte bleue chez un commerçant ou qu’on réalise une transaction en ligne ? Le monde de la monétique est passionnant et donne lieu à son propre arsenal de tests. Aujourd’hui, Coralie Ipotesi, experte du domaine, vous donne un premier aperçu de ces problématiques ! Bonne lecture !

Imaginez-vous à l’autre bout du monde, en face d’un distributeur automatique qui refuse de vous délivrer des billets. Vous ressentez un état de solitude profonde, car sans ces billets vous ne pourrez pas payer le bouiboui qui vous sert d’hôtel (et qui évidemment n’accepte pas la carte bleue). Eh bien, vous êtes sans doute en train de faire l’expérience d’un serveur d’autorisation qui s’amuse à vous titiller. Pourquoi ? Les raisons peuvent être multiples :

  • dépassement de plafond à l’étranger,
  • absence d’autorisation d’utilisation de la carte dans tel pays,
  • problème sécuritaire,
  • décalage horaire mal calculé…

Bref, il y a une boîte noire située à plusieurs milliers de kilomètres qui, si elle est mal gérée, peut causer de gros dégâts. Attardons-nous un peu sur ce serveur pour mieux le connaître !

1) Le serveur d’autorisation agit dans l’ombre

Personne ne le connait, mais pourtant tout le monde l’utilise au quotidien. Le serveur d’autorisation est au cœur du monde de la monétique, et il est capable de traiter des millions de transactions quotidiennes.

Si un paiement refusé sur le terminal provoque toujours un état de panique chez l’acheteur, c’est souvent à tort qu’on s’en prend à la carte ou au terminal : c’est en réalité bien souvent le serveur d’autorisation qui a rendu son verdict dans l’ombre d’une salle obscure. Son but : s’assurer qu’autant l’acheteur que le commerçant sont en mesure d’honorer la transaction.

Le serveur d’autorisation est en fait un applicatif qui implémente un ensemble de règles de gestion permettant l’acceptation ou le refus d’une transaction par carte bancaire. L’ensemble des données échangées lors de cette transaction répond à un ou plusieurs protocoles de communication. Ces données peuvent être aussi bien des données sécuritaires de la carte que des informations liées au marchand, en passant par des données contextuelles relatives à l’achat et bien d’autres encore. Le serveur d’autorisation va s’appuyer sur cet ensemble de paramètres et sur le contexte client ou commerçant pour déterminer si la transaction peut avoir lieu.

2) Il existe 2 types de serveurs d’autor’

Une transaction bancaire se produit toujours entre un acheteur et un vendeur. C’est pourquoi il y a 2 types de serveurs d’autorisation qui entrent en jeu : un pour le porteur de la carte (le serveur d’autorisation émetteur, ou SAE) et un pour le commerçant (le serveur d’autorisation acquéreur, ou SAA). Chacun sa tâche, chacun ses vérifications avant de passer la main à l’autre. Là où l’un va s’attarder sur les règles métier, l’autre va surtout s’atteler à convertir des protocoles. Des approches de test complètement différentes pour un but commun : s’assurer de la complétude de la transaction. On vous explique tout ça un peu plus loin ! En attendant, voici le schéma de fonctionnement général pour un paiement par carte bleue sollicitant à la fois le SAE et le SAA :

3) Les serveurs d’autorisation s’appuient sur des réseaux bancaires

Les serveurs d’autor’ c’est bien, mais il faut bien que la transaction soit véhiculée de l’un à l’autre. C’est là que les réseaux bancaires entrent en jeu. On parle ici par exemple de VISA ou MasterCard, les plus connus, mais il existe en réalité une multitude d’autres réseaux bancaires, chaque pays ayant plus ou moins le sien : JCP pour le Japon, UPI pour la Chine, Diners ou American Express aux Etats Unis, ou plus proche de nous, le réseau CB en France. Dans le monde des serveurs d’autorisation, c’est ce que l’on appelle « le règlementaire ». Il faut en effet voir chaque réseau comme un chef d’orchestre, qui définit un protocole de communication auquel les serveurs d’autorisation vont devoir s’adapter pour utiliser le réseau. Par exemple, si un commerçant souhaite accepter les cartes Diners de ses clients, le serveur d’autorisation auprès duquel il a souscrit doit au préalable avoir signé un contrat avec Diners pour l’acquisition de ce flux. Cela implique une période de certification, qui permet au réseau de s’assurer que les données véhiculées sont conformes à son protocole. Une fois la certification acquise, le serveur d’autorisation est autorisé à traiter les cartes Diners.

Si la plupart des réseaux répondent à la norme ISO8583 qui définit la structure des messages pour des transactions financières par carte bancaire, d’autres, comme NEXO par exemple, ont adopté un format complètement différent (ISO 20022) qui, s’il vise à uniformiser les règles du paiement en Europe, oblige les acquéreurs à revoir complètement les règles de conversion avec les réseaux internationaux.

4) La sécurité avant tout

Le serveur d’autorisation, c’est aussi une myriade de cryptogrammes, clés et autres données sécuritaires qui vont garantir la fiabilité de la transaction. Tout un arsenal est mis en place notamment via la puce de la carte pour éviter toute forme de malveillance. Les tests sur ces aspects sécuritaires sont souvent complexes et chronophages, un paramètre important à prendre en compte en phase de test. En effet, si des outils existent pour décrypter les échanges entre la puce de la carte et le TPE, la complétude des tests sécuritaires ne peut souvent se faire qu’à l’aide de « cartes blanches ». Ces cartes de test vont reproduire l’environnement technique et sécuritaire de la carte finale sans en avoir le visuel ou l’embossage (oui, c’est comme ça qu’on appelle les petits reliefs sur une carte !). En reproduisant un environnement commerçant à l’aide de TPE de test, il sera alors possible de s’assurer que les paramètres sécuritaires des cartes sont correctement traités, par exemple que les clés échangées sont comprises par les deux parties et qu’elles ne provoqueront donc pas d’erreur lors des transactions.

Un autre aspect de la sécurité des paiements par carte bancaire passe par la mise en œuvre de la norme PCI DSS (Payment Card Industry Data Security Standard) qui vise à protéger les clients contre l’utilisation frauduleuse de leurs données. Celle-ci va fortement influencer les tests, car elle impose notamment que les données sensibles ne soient plus accessibles directement dans les systèmes mais fassent l’objet de cryptages. Cryptages qu’il va falloir être en mesure de reproduire sur les environnements de test tout en s’assurant que les données restent utilisables par les équipes de test.

5) Le serveur d’autorisation est un système temps réel

Le paiement d’une marchandise via un terminal ou un site internet interroge en direct les serveurs d’autorisation et délivre immédiatement l’autorisation. Qui pourrait imaginer en effet s’entendre dire par le commerçant : « Bon je saurai demain si votre paiement a été accepté, revenez à la même heure et je vous donnerai vos achats ! » Comme tout système fonctionnant en temps réel, cela implique un haut niveau de disponibilité de l’applicatif, qui ne peut jamais être au repos. C’est pour cela que ce type de logiciel est le plus souvent dupliqué afin d’éviter une panne générale en cas de pépin. Cependant, dans le cas où un système de backup est effectivement présent, il sera important de vérifier les processus de duplication des données en temps réel entre les différents sites, qui peut être source de bugs importants en cas de bascule. Par ailleurs, comme tout système temps réel, la supervision de la production va être primordiale afin d’assurer une qualité de service optimale.

6) Le serveur d’autorisation acquéreur est un super-traducteur

Vous l’aurez compris, le serveur d’autorisation peut être autant notre allié que notre pire ennemi lors d’un achat. Mais alors comment s’assurer qu’il prendra toujours des décisions mûrement réfléchies ?

Plaçons-nous d’abord du côté de l’acquéreur, c’est-à-dire la banque du commerçant. Le plus grand défi d’un serveur d’autorisation acquéreur va être de savoir jouer l’interprète. En effet, comme nous l’avons déjà évoqué, la transaction va devoir transiter par un réseau bancaire avant d’atteindre le serveur d’autorisation émetteur, mais le terminal de paiement ou TPE, lui, parle son propre langage. Il s’agit donc ici d’effectuer des conversions de protocole tout en gardant intacte l’essence du message transactionnel. Le monde de l’acquisition est de ce fait fortement dépendant des contraintes protocolaires imposées par les réseaux, et va devoir s’adapter en continu aux évolutions de ces derniers. Celle-ci font en effet l’objet de certifications indispensables et régulières de la part des réseaux : pas de certification, pas de flux transactionnel. Ces évolutions règlementaires peuvent survenir plusieurs fois par an dans certains cas et nécessitent donc une constante évolution des serveurs d’autorisations qui les implémentent, et donc un effort de test conséquent et régulier.

7) Le serveur d’autorisation émetteur respecte une collection de règles métiers

Regardons maintenant de plus près côté émetteur, c’est-à-dire la banque du porteur de carte. Contrairement à l’acquéreur, l’émetteur, lui, parle en général le langage du réseau auquel il est connecté. La dépendance protocolaire est donc moins complexe à prendre en compte, même s’il reste soumis aux évolutions règlementaires. En revanche, parce que les banques souhaitent fournir toujours plus de services à leurs clients, c’est au niveau des règles fonctionnelles qu’il va falloir concentrer l’effort de test. Une des causes de refus courantes sur un serveur d’autorisation est le dépassement des plafonds. La multitude des plafonds proposés, en montant, durée ou type de transaction peut en effet relever du défi en termes de tests. Ces dernières années, de nouveaux types de paiement ont également fait leur apparition, notamment le paiement mobile, qui ont nécessité la mise en place de nouvelles règles de gestion sur les serveurs d’autor’, et donc de nouveaux tests.

8) Des outils de tests spécifiques sont nécessaires

L’utilisation de simulateurs transactionnels disponibles sur le marché (par exemple Galitt ou FIS) est indispensable lors des tests d’un serveur d’autorisation, elle permet de générer des transactions en appliquant les règles protocolaires et sécuritaires spécifiques à un réseau et à un type de transaction donné. L’idée ici est de se substituer au réseau bancaire, soit d’un point de vue acquéreur, soit d’un point de vue émetteur, par exemple en paramétrant un type de transaction particulier (paiement sans contact, avec ou sans code PIN, paiement internet, etc.). Ces simulateurs sont notamment utilisés lors des phases de certification avec les réseaux, où ils permettent d’assurer la cohérence des données transmises, chaque réseau favorisant l’utilisation d’un simulateur préalablement certifié par ses soins.

S’agissant de systèmes fonctionnant en temps réel, les phases de tests de régression, nécessitant un pool de transactions significatif, seront également cruciales afin de s’assurer que la mise en production d’une nouvelle évolution ne bloquera pas les porteurs aux quatre coins du monde. Une approche courante est la création de templates déclinés par type de transaction et qui représenteront un ensemble significatif de cas métier. On peut par exemple imaginer que cet ensemble serait constitué de transactions de type paiement contact, sans contact, mobile, avec ou sans saisie du code pin, etc. Toutes ces caractéristiques vont influer sur les règles de gestion mises en œuvre sur les serveurs d’autorisation et sont donc indispensables à prendre en compte lors de tests de régression.

Conclusion

Comme vous l’aurez compris, même s’il n’est pas visible du grand public, le serveur d’autorisation est un élément particulièrement sensible de la chaîne du paiement électronique et nécessite donc une attention toute particulière pour le testeur. Que ce soit en phase de tests unitaires, d’intégration, d’acceptation ou lors de phases de certification ou de régression, il devra être capable d’anticiper les comportements des futurs utilisateurs afin de prévenir les défauts qui pourront avoir des conséquences pour l’acheteur (impossibilité d’obtenir sa marchandise ou ses billets) ou le commerçant (impossibilité de se faire payer). Une bonne connaissance des moyens de paiements et de leur spécificité sera alors un atout particulier pour le testeur, et lui permettra d’avoir une vision globale du système et de ces interactions pour en déceler au plus tôt les failles potentielles.

~ Coralie Ipotesi, ingénieure test applicatif chez Hightest

Si vous voulez aller plus loin dans la découverte de la monétique, nous vous conseillons de faire un tour sur ce blog.

Et si vous avez soif de découvrir d’autres univers de la qualité logicielle, nous vous conseillons notre notre saga des tests audiovisuels !

3 questions essentielles pour bien démarrer en automatisation des tests

L’automatisation des tests est une piste que vous voulez investir. Vous souhaitez, par cette démarche, maîtriser les coûts associés à la qualité, bénéficier d’une meilleure couverture des tests, ou encore mettre en œuvre des recettes plus courtes et efficaces. Très bien, mais par où commencer ? Qui affecter à ce chantier ? Quels tests faut-il automatiser ? Quels KPI suivre ? Quel outil choisir ?

Une fois qu’on a répondu « oui » à la question « faut-il automatiser les tests ? » c’est effectivement une autre ribambelle de questions qui se présentent, comme si on avait ouvert une boîte de Pandore. Pire encore : en répondant mal à ces problématiques, l’automatisation des tests pourrait se solder par un échec.

Dans l’article précédent, nous donnions 10 bonnes raisons d’automatiser les tests. Aujourd’hui, nous vous offrons des clés pour mettre en œuvre concrètement un tel chantier. Accrochez-vous, car les pièges sont nombreux, mais le jeu en vaut la chandelle !

1) Quels challenges et difficultés pose l’automatisation des tests ?

Des challenges autant techniques qu’organisationnels, et la bonne nouvelle c’est qu’il est possible d’en anticiper certains avec un minimum d’effort.

Il est important, avant de se lancer, d’avoir en tête les principales difficultés associées à l’automatisation des tests. Commençons donc par cela, en nous basant sur l’édition 2020-2021 du World Quality Report.

Selon cette source, la problématique la plus fréquente (52 %) est le manque de personnel suffisamment qualifié pour mener à bien l’automatisation des tests. C’est la question du « QUI ».

La deuxième difficulté la plus fréquente (42 %), est liée aux lacunes au niveau des environnements de test et des jeux de données. Un exemple à la fois simple et très fréquent ? L’environnement dédié aux tests automatisés est parfois aussi utilisé par des testeurs humains, qui modifient ou suppriment des ressources dont les tests automatisés ont besoin. Ces actions peuvent provoquer des faux positifs et donner du fil à retordre au moment où on analyse les résultats des tests automatisés. Cette difficulté pointe du doigt une réalité : l’automatisation des tests est un enjeu d’équipe ; si des environnements spécifiques et des données séparées sont requises, il est important d’impliquer l’ensemble des parties prenantes concernées (administrateurs systèmes, métiers…) Automatiser « dans son coin » n’est pas envisageable.

Problème suivant ? 41 % des entreprises rencontrent des difficultés à définir une bonne stratégie d’automatisation. C’est la question du « QUOI ».

D’autres challenges sont également évoqués ; le classique « on n’a pas assez de temps ! » est invoqué par 37 % des entreprises (cela prend en effet du temps de s’arrêter au bord de la route pour remplacer ses roues carrées par des rondes !), juste avant « on n’a pas les bons outils » (32 %).

Au sein de cet article, nous aborderons spécifiquement les questions du QUI et du QUOI, qui constituent la base d’une bonne stratégie d’automatisation des tests.

2) Qui est responsable de l’automatisation des tests ?

Plusieurs leaders possibles

Bien plus de personnes qu’on pourrait l’imaginer de prime abord !

Nous disions plus haut que 52 % des entreprises déclarent manquer de personnel qualifié pour l’automatisation des tests. Les « testeurs automaticiens » sont en effet comme des trèfles à quatre feuilles : ils existent (contrairement aux moutons à 5 pattes…), mais il y en a peu. Restent donc, classiquement, 3 possibilités.

  • Faire monter en compétences les testeurs en automatisation des tests
    • CONTRE :
      Le développement n’est pas la tasse de thé de tous les testeurs ; une telle montée en compétences nécessite des efforts importants et une bonne dose de motivation
    • POUR :
      L’automatisation des tests produit des informations dont les testeurs seront en général les premiers bénéficiaires, et ce sont les mieux placés pour savoir ce qui doit être automatisé
  • Déléguer l’automatisation aux développeurs
    • CONTRE :
      L’automatisation des tests est une activité de test, les développeurs peuvent avoir du mal à adopter l’état d’esprit critique qui rend les tests efficaces
    • POUR :
      L’automatisation des tests est une activité de développement, les développeurs sont naturellement en mesure de s’y adonner
  • Externaliser la mise en place de l’automatisation des tests
    • CONTRE :
      Cette démarche peut être moins féconde si vous la décorrélez totalement des autres activités de test ; même « externes », les automaticiens auront besoin de s’immerger dans la vie du projet
    • POUR :
      Les prestataires aguerris connaissent les principaux écueils et les évitent plus facilement ; leur œil extérieur leur permet de questionner la démarche et de proposer une solution sur mesure.

Mais il ne suffit pas de répondre à cette question pour se tirer d’affaire ; c’est un arbre qui cache une forêt. Il faut ouvrir un autre tiroir de questions !

Des responsabilités multiples

En effet, l’automatisation des tests recouvre une multitudes d’activités, et l’implémentation des tests automatisés n’est qu’une d’entre elles.

Nous préconisons de réaliser une matrice des responsabilités (ou matrice RACI) afin d’établir, en amont du projet, qui interviendra sur quoi, et de répondre aux questions suivantes :

  • Qui choisira les tests qu’il faudra automatiser ?
  • Qui implémentera les tests automatisés ?
  • Qui lancera les tests automatisés ?
  • Qui analysera les résultats et rapportera les anomalies ?
  • Qui consommera les reportings des tests automatisés ?
  • Qui maintiendra les tests automatisés ?
  • Qui assurera la disponibilité des environnements dédiés aux tests automatisés ?
  • Qui produira les jeux de données nécessaires ?
  • (Et enfin, la question qui tue !) Qui sera responsable de la réussite de la démarche d’automatisation des tests ?

Il est important de répondre à ces questions, car elles permettent également de se rendre compte qu’il y a souvent plus de personnes qu’on l’imagine qui sont impliquées dans la démarche.

3) Quels tests faut-il automatiser ?

Pour trouver la meilleure liste de tests à automatiser, il faudra encore une fois se poser les bonnes questions.

Cette partie est dédiée aux 41 % qui peinent à établir une stratégie d’automatisation efficace !

Comme de bons tests prennent leur source dans de bonnes questions, voici celles que nous préconisons pour aider à définir le périmètre des tests automatisés :

Quels tests sont les plus critiques ?

Cette question est la plus évidente. Les tests révélateurs de la santé de l’application sont souvent les premiers que l’on souhaite automatiser. On les appelle les « smoke tests », par analogie à des tests que l’on ferait sur une machine industrielle par exemple : si vous appuyez sur le bouton de marche et que de la fumée sort de la machine, vous aurez détecté un bug bloquant en quelques secondes.

Quels sont les modules ou fonctionnalités qui, historiquement, sont les plus buggées ?

Cette question vaut surtout quand on initie tardivement le projet d’automatisation, et qu’il faut sécuriser les « nids à bugs ».

Quand on lance le projet d’automatisation en même temps que le projet de développement (une bonne pratique permettant de maximiser le ROI des tests automatisés), on peut se baser sur son expérience de projets similaires, puis étudier a fil de l’eau les modules où les bugs se concentrent.

Quels sont les tests les plus répétitititititi…tifs ?

Vous avez peut-être en tête ce formulaire qui compte 36 champs, ces champs pouvant être remplis de diverses manières, et chacune de ces manières devant être testée. L’œil est vigilant au premier remplissage, il persiste au deuxième, tient encore bon au troisième, puis il se perd, on ne sait plus ce qu’on a déjà rempli, on se trompe, on s’ennuie, et on a vraiment envie de passer à autre chose. Dommage, c’est à ce moment-là qu’on aurait pu détecter un joli bug.

Ces problèmes sont étrangers aux scripts de tests automatisés, c’est pourquoi les tests très répétitifs sont souvent de bons candidats à l’automatisation.

Quels sont les tests les plus rejouables ?

Il y a des tests qu’on ne peut jouer qu’une fois par an, qu’une fois par trimestre, ou encore une fois par jour. Il y a le fameux « batch de 4 heures du matin », la « moulinette du dimanche soir » et le « programme du 31 décembre ». Est-il vraiment intéressant d’automatiser les tests associés ? Pas sûr. Autant que possible, il est intéressant d’automatiser les tests facilement rejouables.

Quels sont les tests les plus difficiles à comprendre ?

Dans l’article précédent, nous parlions du fait que les tests automatisés constituent une documentation vivante du fonctionnement de l’applicatif. C’est un avantage quand ce fonctionnement est complexe. Un test difficile à comprendre sera peut-être mal effectué par un humain néophyte ; en l’automatisant, on se prémunit contre ce risque, et on donne en même temps plus de visibilité sur le fonctionnement précis du système à tester. Coup double !

Quels sont les tests qui seraient les plus faciles à implémenter ?

Il est souvent mal vu de commencer par le plus facile, de « choisir la facilité ». Ce n’est effectivement pas le premier critère à prendre en compte, mais la facilité d’implémentation est tout de même un élément important à avoir en tête. On veut des quick wins, pas des challenges insurmontables qui pourraient décourager l’équipe !

Synthèse des 6 questions

Comment utiliser efficacement ces 6 questions ? Afin de définir le périmètre à automatisés, il est nécessaire de :

  • Pondérer l’importance de chacune des questions
  • Répondre, pour chaque test ou suite de tests, à ces questions (sur une échelle de 1 à 5 par exemple)

En faisant une moyenne de ces scores, pondérée par l’importance des questions, on est alors en mesure de construire un périmètre à automatiser de manière solide et argumentée.

Chez Hightest, nous nous servons d’un modèle de tableur afin d’effectuer ce travail ; nous le partageons avec plaisir sur simple demande.

Tant d’autres questions…

Au sein de cet article, nous nous sommes concentrés sur QUI intervient dans la démarche d’automatisation des tests, et QUOI automatiser.

Nous pensons sincèrement que ces trois questions sont trop peu souvent posées, et que cela constitue une source importante d’échecs dans les projets d’automatisation des tests.

D’autres questions viendront ensuite, mais attention à ne pas mettre la charrue avant les bœufs ! En voici quelques-unes :

  • Quels KPI mettre en œuvre pour mesurer l’efficacité de la démarche d’automatisation des tests ?
  • Quelles mesures qualitatives surveiller en complément ?
  • Et le grand classique, la question qu’on a tendance à poser en premier et qui détrône toutes les autres… Quel outil choisir ?

« Quel outil choisir »… Il faudrait un article dédié (voire, plutôt, une série d’articles) pour répondre à cette question ! En attendant, voici quelques articles de notre blog qui vous donneront des éléments.

Nous espérons que cet article vous aura apporté des éléments utiles à votre démarche. A bientôt pour de nouveaux articles sur ce sujet passionnant qu’est l’automatisation des tests !