Cosa testare in una forma semplice in cui il valore di un campo di input determina altri campi?

1

Nota: - Ho aggiunto tag Android e iOS a questa domanda, ma non è necessariamente limitato a tali piattaforme.

Considera un semplice modulo di registrazione in cui il valore di un campo determina quali altri campi vengono mostrati e come vengono visualizzati. Ad esempio, immagina quanto segue

  • Si inizia selezionando il Paese da un menu a discesa / elenco
  • Se la lingua madre di quel paese non è l'inglese, si visualizza un campo di testo per inserire la lingua.

Domanda: quale strategia adottare per testare un modulo del genere?

Per elaborare un po ', negli ultimi tempi c'è stata una spinta da parte delle comunità di sviluppatori Android e iOS a spostarsi da MVC (beh, su Android che non è mai esistito realmente) verso altre architetture come MVVM o MVP. Una delle principali ragioni citate è che attenersi alle architetture tradizionali confonde le responsabilità di ciò che dovrebbe essere diversi livelli distinti. La loro separazione in derivati di MVC semplifica i test.

In secondo luogo, sia MVVM che MVP hanno il vantaggio di isolare il livello View a tal punto che è possibile testare tutto fino a visualizza la logica senza dover mai toccare un oggetto vista reale. Su Android, questo significa essere in grado di eseguire test JVM Junit puri per testare la logica di visualizzazione.

Suppongo che il mio esempio sopra rientri nella categoria della logica della vista. Tuttavia, non è chiaro per me come posso testarlo senza creare un'istanza reale di un oggetto View. Concettualmente, voglio verificare che se l'utente sceglie un Paese che parla in inglese in modo nativo, non viene mostrato il campo di testo per l'inserimento di una lingua. Altrimenti, viene mostrato il campo di testo. In che modo questo si traduce in test non UI?

    
posta curioustechizen 27.04.2015 - 15:34
fonte

1 risposta

2

What strategy would one adopt to test such a form?

Devi separare la GUI dalla logica decisionale aggiungendo una funzione decisionale che dipende solo dagli attributi business e non dagli elementi della GUI:

bool isNativeLanguageInputVisible(RegistrationData currentRegistrationData)

La tua GUI userebbe questa funzione decisionale per controllare la visibilità e il tuo test va contro la funzione decisionale e non contro la GUI.

    
risposta data 27.04.2015 - 16:59
fonte

Leggi altre domande sui tag