Supponiamo che la tua azienda venda software che viene fornito con testo personalizzabile e che il lavoro del tuo team è personalizzarlo. Il coinvolgimento del cliente include un contratto in cui il cliente specifica tutte le risorse testuali e in cui il team garantisce un ciclo di test completo.
Da qualche parte nel codice c'è una logica che assomiglia a questa:
var response = proxy.Foo(request);
if (!response.IsOK)
{
switch (response.ErrorCode)
{
case Constants.BadProfile:
DisplayError(Resources.BadProfile);
break;
case Constants.BadRequest:
DisplayError(Resources.BadRequest);
break;
default:
DisplayError(Resources.GeneralError); //Should never happen
break;
}
}
In base al modo in cui il codice viene scritto, è letteralmente impossibile generare una condizione di dati che genera il terzo errore. Ma il team di ingegneri l'ha messo lì solo in caso di un difetto di codice futuro o per evitare la situazione in cui il cliente non è aggiornato e il proxy genera un errore nuovo e sconosciuto.
Detto questo, il cliente ha personalizzato tutte e tre le risorse dei messaggi di errore e QA vuole testarle tutte e tre.
Sarebbe ragionevole che la QA insista sui test per garantire che la risorsa di errore generale sia corretta? Come possono produrre quell'errore?
Oppure l'inclusione del messaggio di errore è un errore nei requisiti, poiché specifica una caratteristica senza criteri di accettazione definibili?
Nota: proxy
in questo esempio è un servizio di terze parti, quindi non è possibile eseguire il rig per generare un errore imprevisto. Ovviamente potremmo modificare il codice client per forzare l'errore, ma non testeremo il codice base che finirà in produzione.
Modifica:
Il "proxy" in questo caso non è un client WCF o REST. È una DLL binaria scatola nera. Non c'è separazione di preoccupazioni, nessuna iniezione di dipendenza e nessun trasporto conveniente da intercettare. Non c'è un posto dove spremere il risultato senza sforzo in modo così eroico da minare la credibilità del test e il dispendio di sforzi per un caso così delicato.
D'altra parte, la rimozione completa del backstop solo per colpire una statistica al 100% del QA sembra un po 'distopica, cioè contraria al senso comune.
Potremmo semplicemente "nascondere" la funzione e non dirlo al cliente, ma il testo contiene preziose informazioni di supporto specifiche per ogni cliente.