Al lavoro abbiamo un sistema abbastanza complicato. Chiamiamo questo sistema, System_A. Il nostro team addetto al controllo qualità ha creato un altro sistema, chiama questo sistema, System_B, per testare System_A.
Il modo in cui System_B viene utilizzato è il seguente. Generiamo input (utilizzando System_B stesso), IN, rielaboriamo tali input attraverso System_B e generiamo output, O_B. Quindi il processo è il seguente:
System_B(IN) -> O_B
.
Quindi facciamo lo stesso per System_A per generare le proprie uscite, O_A:
System_A(IN) -> O_A
.
In qualsiasi momento, si presume che O_B sia l'output previsto e O_A è l'output osservato / effettivo. Implicito è che O_B è la fonte "d'oro" (la verità). Tuttavia, abbiamo incontrato 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 è sbagliato
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) sbagliato nell'ispezione e nell'analisi umana. Le cose passeranno il QA usando questo processo, e gli utenti reali si lamenteranno, e torniamo a cercare che O_B fosse sbagliato dopotutto.
La domanda è questa: è una cattiva pratica creare un "sistema di test" per testare il sistema reale?
- E la pista scivolosa? Quindi, non possiamo sostenere che abbiamo bisogno di un altro sistema per testare il "sistema di test"?
- Il costo è decisamente proibitivo, poiché gli sviluppatori ora hanno bisogno di apprendere almeno 2 basi di codice, con forse la complessità di System_B più grande di System_A. Come potremmo quantificare quanto bene o male avere System_B intorno all'organizzazione?
- Uno dei motivi "convincenti" originali per creare System_B era di "automatizzare" i test. Ora siamo molto orgogliosi di essere completamente automatizzati (perché 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 è completamente automatizzato? È sufficiente questa ragione 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? Per questo, nessuno al lavoro è in grado di fornire una risposta soddisfacente.
Qualche consiglio su questo argomento è apprezzato.