Come gestire la nozione di tempo nei test di UI / Integrazione

4

Ci sono alcuni well - noto tecniche per affrontare la nozione di tempo nei test unitari. Questi ti permettono di scrivere le unittest che funzionano sempre con un tempo specifico in modo che il risultato del test sia prevedibile e possa essere verificato. Tuttavia, queste tecniche non funzionano con test di integrazione / test dell'interfaccia utente poiché il test e l'applicazione stessa sono separati (in particolare nelle applicazioni Web in cui l'applicazione in prova potrebbe essere distribuita su un server separato).

Ad esempio, supponiamo stiamo sviluppando un sistema di appuntamenti che deve implementare un pulsante "suggerisci il primo appuntamento disponibile". Se si fa clic sul pulsante, è necessario suggerire la prima finestra temporale disponibile per il giorno lavorativo successivo. Ciò significa che se il pulsante viene cliccato in un dato giorno della settimana, eccetto venerdì, dovrebbe suggerire uno slot il giorno successivo, MA venerdì e sabato dovrebbe suggerire uno slot lunedì.

Come si fa a testare questo requisito?

(So che è possibile aggirare il problema per questo specifico esempio ma tenerlo con me - ci sono sempre situazioni in cui il test non può fornire i dati su cui lavorare. Non volevo fornire un esagerato esempio complicato.)

    
posta JDT 24.09.2013 - 10:31
fonte

1 risposta

2

Assicurati che il tempo venga afferrato da una singola funzione in una singola libreria / tramite un'interfaccia ben definita nel codice dell'applicazione e fornisca una speciale "modalità di test" nell'applicazione in cui tale funzione restituisce sempre la stessa sequenza di data / ora valori. Esegui l'applicazione durante i test solo in quella modalità di test. Se hai bisogno di valori di partenza diversi per test diversi, la tua "modalità di test" avrà bisogno di quel valore come parametro configurabile.

there are always situations where the test cannot supply the data to work from

Se si verifica una situazione del genere e sono necessari dati speciali forniti per un test specifico, è necessario modificare il prodotto per renderlo possibile. È un errore di IMHO che i framework di test o l'ambiente di test dovrebbero consentire test senza una singola modifica al "soggetto in prova". L'idea di "manutenzione degli sportelli" non era un'invenzione dell'industria del software e "il design per la testabilità" è qualcosa per cui devi lavorare, non è gratis.

    
risposta data 24.09.2013 - 11:54
fonte

Leggi altre domande sui tag