Al lavoro abbiamo un sistema abbastanza complicato. Chiamiamo questo sistema, System_A. Il nostro team di controllo qualità ha creato un altro sistema, chiama questo sistema, System_B, per testare System_A.
Il modo in cui viene utilizzato System_B è il seguente. Generiamo input (usando System_B stesso), IN, elaboriamo tali input attraverso System_B e generiamo output, O_B. Quindi il processo è il seguente:
System_B(IN) -> O_B
.
Facciamo quindi lo stesso per System_A per generare i propri output, O_A:
System_A(IN) -> O_A
.
In qualsiasi momento, si presume che O_B sia l'output previsto e O_A sia l'output osservato / effettivo. È implicito che O_B è la fonte "d'oro" (la verità). Tuttavia, abbiamo riscontrato una combinazione di problemi.
- O_A è sbagliato, O_B è giusto
- O_A ha ragione, O_B ha ragione
- O_A è sbagliato, O_B è sbagliato
- O_A ha ragione, O_B è sbagliata
Chi determina cosa è giusto se si presume che O_B abbia sempre ragione (o cosa è previsto)? Bene, si scopre che O_B a volte (o spesso) sbaglia nell'ispezione e nell'analisi umana. Le cose passeranno il QA usando questo processo e gli utenti reali si lamenteranno, e torniamo a scoprire che O_B era sbagliato dopo tutto.
La domanda è questa: è una cattiva pratica creare un "sistema di test" per testare il sistema reale?
- E la pendenza scivolosa? Quindi, non possiamo sostenere che abbiamo bisogno di un altro sistema per testare il "sistema di test"?
- Il costo è decisamente proibitivo, poiché ora gli sviluppatori devono imparare almeno 2 basi di codice, con forse la complessità di System_B maggiore di System_A. Come potremmo quantificare quanto sia buono o cattivo avere System_B in giro per l'organizzazione?
- Uno dei motivi "convincenti" originali per creare System_B era "automatizzare" i test. Ora siamo molto orgogliosi di essere completamente automatizzati (poiché System_B genera l'input per avviare il processo di utilizzo di se stesso per generare anche l'output). Ma penso che abbiamo fatto più danni e introdotto più complessità, in modo non quantificabile. Il lavoro di QA deve essere completamente automatizzato? Questa ragione è sufficiente per giustificare la creazione di un sistema parallelo?
- La mia vera preoccupazione è questa, anche se sappiamo tutti che System_B è sbagliato (abbastanza spesso). Se System_B è così bravo nell'elaborare l'input e il suo output è la fonte d'oro, perché non sostituire System_A con System_B? A ciò, nessuno al lavoro è in grado di fornire una risposta soddisfacente.
Qualsiasi consiglio su questo problema è apprezzato.