La réponse simple est que cela dépend du système. Si vous écrivez un logiciel intégré pour un moniteur cardiaque ou des outils de surveillance de la sécurité pour un réacteur nucléaire, la norme est beaucoup plus élevée que si vous écrivez une plate-forme de blogs.
C'est vraiment une question pour un bon testeur de système (et je n'en suis pas un) mais je vais essayer.
Votre mesure de base sera la couverture du test: quelle quantité de l'application a été réellement testée (à la fois par test unitaire et fonctionnellement).
Vous devez évaluer chaque cas d'utilisation potentiel (et les paramètres de ce cas d'utilisation) pour la probabilité qu'il soit réellement utilisé (afin que vous puissiez supprimer les cas limites), la complexité (les choses plus simples étant moins susceptibles de contenir des bogues, ou plutôt moins susceptibles de contenir du matériel pour trouver des bugs), le coût du test (en termes de temps) et l'impact potentiel d'un défaut s'il est découvert dans cette zone (c'est là qu'intervient le réacteur nucléaire vs la plateforme de blogging).
Sur la base de cette évaluation, vous devez déterminer lesquels d'entre eux vont être testés et dans combien de détails. Une fois que vous avez une liste comme celle-là, l'équipe (y compris un chef de produit / chef de projet / représentant des utilisateurs) peut parcourir cette liste et établir des priorités en fonction des contraintes que vous avez.
Une technique utile à considérer est que vous pouvez également varier les cas d'utilisation testés avec chaque version. Par exemple, vous pouvez avoir une liste de cas de test non critiques et tester la moitié d'entre eux avec une version et l'autre avec la suivante (puis alternative). De cette façon, vous augmentez la couverture totale des tests que vous obtenez pour l'effort (mais au risque d'introduire des bogues de régression).
Cela peut également s'étendre aux tests de plate-forme - si vous prenez en charge deux back-ends de base de données (ou plusieurs navigateurs), testez la moitié de l'application sur l'un, l'autre moitié sur l'autre, puis échangez la prochaine version.
(Je pense que c'est ce qu'on appelle le rayage, mais ne me citez pas à ce sujet.)
Et puis la dernière chose à penser n'est pas ce que vous testez mais ce que vous corrigez réellement lorsque des problèmes sont découverts. Il est courant de dire "corriger tous les bugs" mais la réalité est qu'il y a des contraintes de temps et que tous les bugs ne sont pas égaux. Encore une fois, des nettoyages de bogues réguliers avec toutes les parties concernées sont la meilleure voie à suivre. Cela est particulièrement pertinent lorsqu'un correctif de bogue peut être particulièrement intrusif, car le travail supplémentaire de test et de test de régression qu'il génère peut l'emporter sur les avantages du correctif.