LINCnil/Guide-RGPD-du-developpeur

"Les tests montrent la présence de défauts, pas leur absence"

Locynaeh opened this issue · 3 comments

La fiche n°11 "Tester vos applications" indique :

Tester son produit permet de s’assurer de [...] l'absence de certaines erreurs avant et après sa mise en production.

Ceci est une erreur : le 1er des 7 principes fondamentaux sur le test logiciel (ISTQB Syllabus Niveau Fondation 2018, traduction française par le CFTL, chap. 1.37 Principes sur les tests) est le suivant :

  1. Les tests montrent la présence de défauts, pas leur absence

Les tests peuvent prouver la présence de défauts, mais ne peuvent pas en prouver l’absence. Les tests réduisent la probabilité que des défauts restent cachés dans le logiciel mais, même si aucun défaut n’est découvert, ce n’est pas une preuve que tout est correct.

En effet, si prouver la présence de quelque chose est assez possible, en prouver l'absence est assez malaisé dans un système complexe et conduit ici à penser que le test offre une garantie d'absence de défaut (je suppose ici que l'on ne différencie pas particulièrement "erreur" et "défaut").

On peut également citer Edgar W. Dijkstra :

"Testing can reveal the presence of errors but never their absence"
Edgar W. Dijkstra. Notes on structured programming. AcademicPress, 1972.

Exemple de reformulation en modifiant également d'autres aspects du paragraphe :

Tester son produit permet de vérifier son bon fonctionnement, s’assurer d’une bonne expérience utilisateur ainsi que de trouver et prévenir des défauts avant sa mise en production. Tester son produit permet également de réduire les risques d’atteinte aux données personnelles.

On peut compléter la fiche via la partie "1.1.1 Objectifs habituels des tests" du syllabus sur ce point.

Un grand merci pour votre travail et son partage sous licence Libre.

La fiche n°11 en l'état ne dis pas que les tests prouvent l'absence d'erreur. Elle dit déjà précisément qu'elle permet d'éviter certains défauts.

Ça :

prévenir des défauts avant sa mise en production

et ça :

Tester son produit permet de s’assurer […] de l'absence de certaines erreurs avant et après sa mise en production.

Tout est dans le fait qu'on ne garantis que ce que l'on test, mais il a déjà la précision dans le document initial. Les citations que tu donne parle de preuve d’absence de défaut (de manière complète). Ce n'est pas ce dont parle le paragraphe que tu cite.

Note : que aucun test ne garantis ni ne préviens réellement il faudrait être capable de s'assurer de la couverture, de la pertinence, d'avoir tester effectivement dans chaque étape de la pyramide des tests, etc. La dernière phrase du paragraphe cité est à mon humble avis parfaite en terme de ce qu'apporte les tests : une réduction de risque.

Bonjour barmic,

La fiche n°11 en l'état ne dis pas que les tests prouvent l'absence d'erreur. Elle dit déjà précisément qu'elle permet d'éviter certains défauts.

Elle ne le dit pas mot pour mot mais l'implique : s'assurer de l'absence de certains défauts implique une preuve.
Pour ma part, je le comprends ainsi et c'est une erreur très courante sur les objectifs des tests et leur responsabilité.

Tout est dans le fait qu'on ne garantis que ce que l'on test, mais il a déjà la précision dans le document initial.

Pourrais-tu m'indiquer où ? Merci :-)

Les citations que tu donne parle de preuve d’absence de défaut (de manière complète). Ce n'est pas ce dont parle le paragraphe que tu cite.

De manière complète ou partielle ne change strictement rien : c'est bien le mécanisme d'assurance (et donc de preuve) qui est problématique.

Tester son produit permet de s’assurer de [...] l'absence de certaines erreurs avant et après sa mise en production.

Penser que les tests prouvent/assurent l'absence d'erreurs/de certaines erreurs conduit à se méprendre sur le sens même de l'activité de test.

Note : que aucun test ne garantis ni ne préviens réellement il faudrait être capable de s'assurer de la couverture, de la pertinence, d'avoir tester effectivement dans chaque étape de la pyramide des tests, etc. La dernière phrase du paragraphe cité est à mon humble avis parfaite en terme de ce qu'apporte les tests : une réduction de risque.

La dernière phrase citée n'indique une réduction de risque que pour l'atteinte aux données personnelles. J'indiquais justement que les tests ne pouvaient amener que cela y compris sur la présence d'erreurs.
Ils réduisent (si correctement réalisé bien sûr) le niveau de risque d'une qualité logicielle inadéquate au final, ils aident aussi à construire de la confiance dans le produit et fournissent de l'information.

Concrètement, le souci, de mon point de vue sur la compréhension que j'ai de ce passage initialement cité dans mon 1er post, est que la formulation est trompeuse sur l’objectif des tests.

Bonjour,

L'expression "certaines erreurs" était présente afin de rappeler que la mise en place de tests permet de trouver et de corriger les erreurs... détectées par les tests.

Comme la célèbre "maxime" de Dijkstra le rappelle, bien sûr, montrer l'absence d'erreurs nécessite une preuve de programme formelle (ce qui n'est pas le but des tests).

Nous avons corrigé le début du paragraphe en reprenant votre formulation afin d'éviter les malentendus.

Merci et bonne journée !