Idealmente Sì, il controllo qualità dovrebbe testare il sistema live. Altrimenti, testerai ancora il sistema live, ma i tuoi clienti lo faranno invece.
La vera domanda è come ottenere ciò quando si hanno applicazioni stateful. vale a dire. come posso testare il mio pulsante DeleteAllOrders (esempio estremo), senza effettivamente cancellare tutti gli ordini?
Normalmente questo si ottiene avendo un ambiente di test, ma come avete notato questo è difettoso. Non c'è alcuna garanzia che qualcosa che funziona nel test funzionerà in diretta. Inoltre, inevitabilmente ti ritroverai con dozzine di ambienti di test per tutte le diverse funzioni o team e diventa molto difficile testare se tutto funzionerà bene il giorno.
Un secondo approccio è quello di avere un sottoinsieme di test che si eseguono in diretta, i "smoke test" che consentono di testare le cose facili. "Metti un ordine di prova, ma cancellalo prima che ci venga addebitato", ecc. Ma, ancora una volta, non è perfetto.
Per testare completamente il tuo sistema live, devi programmare il tuo sistema tenendo a mente la testabilità.
Se crei un pulsante Elimina Tutti , devi pensare 'ok come posso testarlo?' forse dovrei aggiungere anche un pulsante UndeleteAllTheOrdersIjustDeleted!
Se alcune funzioni di un sistema vengono eseguite raramente, o difficili da testare, ciò non equivale a che la funzione non sia importante.
La pratica migliore è quella di testare il tuo sistema live tutto il tempo. Se si sviluppa un problema, lo vuoi sapere subito.
Ad esempio, se si dispone di un sito eCommerce, si effettuano costantemente ordini fittizi per assicurarsi che il sito sia attivo e che venda prodotti. Se gli ordini fittizi iniziano a fallire, vuoi sapere subito, non devi aspettare che un cliente chiami il servizio di assistenza.