Au travail, nous avons un système assez compliqué. Appelons ce système, System_A. Notre équipe QA a créé un autre système, appelez ce système, System_B, pour tester System_A.
La façon dont System_B est utilisé est la suivante. Nous générons des entrées (en utilisant System_B lui-même), IN, traitons ces entrées en retour via System_B et générons des sorties, O_B. Le processus est donc le suivant:
System_B(IN) -> O_B
.
On fait ensuite de même pour System_A pour générer ses propres sorties, O_A:
System_A(IN) -> O_A
.
À tout moment, on suppose que O_B est la sortie attendue et O_A est la sortie observée / réelle. Implicite est que O_B est la source "d'or" (la vérité). Cependant, nous avons rencontré une combinaison de problèmes.
- O_A a tort, O_B a raison
- O_A a raison, O_B a raison
- O_A est faux, O_B est faux
- O_A a raison, O_B a tort
Qui détermine ce qui est juste si O_B est supposé avoir toujours raison (ou ce qui est attendu)? Eh bien, il s'avère que O_B a parfois (ou souvent) tort lors de l'inspection et de l'analyse humaines. Les choses passeront l'AQ en utilisant ce processus, et les vrais utilisateurs se plaindront, et nous revenons à la conclusion que O_B était mauvais après tout.
La question est la suivante: est-ce une mauvaise pratique de créer un "système de test" pour tester le vrai système?
- Et la pente glissante? Alors, ne pouvons-nous pas affirmer que nous avons besoin d'un autre système pour tester le "système de test"?
- Le coût est définitivement prohibitif, car les développeurs doivent maintenant apprendre au moins 2 bases de code, avec peut-être la complexité de System_B plus grande que System_A. Comment pourrions-nous quantifier le bien ou le mal d'avoir System_B dans l'organisation?
- L'une des raisons «convaincantes» originales de créer System_B était «d'automatiser» les tests. Maintenant, nous sommes très fiers d'être entièrement automatisés (car System_B génère l'entrée pour amorcer le processus d'utilisation elle-même pour générer également la sortie). Mais je pense que nous avons fait plus de mal et introduit plus de complexité, d'une manière non quantifiable. Le travail d'AQ doit-il être entièrement automatisé? Est-ce une raison suffisante pour justifier la création d'un système parallèle?
- Ma véritable préoccupation est la suivante, même si nous savons tous que System_B est erroné (assez souvent). Si System_B est si bon pour traiter l'entrée et sa sortie est la source d'or, pourquoi ne pas remplacer System_A par System_B? À cela, personne au travail n'est en mesure d'apporter une réponse satisfaisante.
Tout conseil sur cette question est apprécié.