Come posso creare i dati del test front-end in base allo schema del modello di back-end?

2

Sto davvero lottando con la creazione di test robusti per il mio frontend a causa dell'accoppiamento nello schema dei dati tra il mio backend e il frontend.

Per chiarire, ho un'API resto Django e ho un front-end che interroga le forme serializzate dei miei modelli di backend API Django. Quando voglio generare dati di test per il mio back-end, utilizzo una factory (factory_boy library) per creare facilmente un'istanza del modello su cui posso eseguire il test.

Nel mio front end, si presume che i dati trasmessi abbiano la stessa struttura dei modelli di back-end. Ogni volta che cambio qualcosa nei miei modelli di back-end, devo cambiare il mio front end per adattarlo alla nuova struttura. Quindi, come faccio a creare robusti dati di test front end se la modifica dei miei modelli di back-end significa che devo riscrivere tutti i miei dati di test?

Devo replicare lo schema di fabbrica che ho nel back-end? C'è una buona pratica per evitare di dover mantenere due repliche di fabbrica?

Ho preso in considerazione una possibile soluzione, ma probabilmente richiederebbe molto lavoro extra a meno che non esista già una libreria che lo faccia già : Creare endpoint nel mio backend che restituiscono l'output dalle fabbriche del modello e che possono accettare dati json per sovrascrivere i valori predefiniti in fabbrica. Il mio front-end può quindi chiamarli per generare dati di test durante l'impostazione del test.

    
posta Jad S 25.09.2017 - 19:58
fonte

1 risposta

1

Potresti scrivere un pacchetto di generazione di dati di test che ha analizzato lo schema e per ogni struttura di dati valida generato un set di dati di test basato sui valori consentiti per i tipi all'interno di quei dati più valori non validi basati su un insieme di regole.

Le regole tipiche comprendono:

  • Numero intero intervallo limitato: test a:
    • intervallo min,
    • intervallo max,
    • 0 se nell'intervallo e non già lì,
    • un paio di valori casuali all'interno dell'intervallo
    • più, (se possibile, farlo),
    • intervallo min -1,
    • intervallo max +1,
    • tipo min rappresentabile &
    • tipo max rappresentabile.
  • String
    • Una selezione di stringhe attese
    • Stringa di lunghezza zero ""
    • Tutta la stringa null
    • Lunghezza massima
    • Lunghezza massima +1
    • Tutti i caratteri validi
    • Alcuni caratteri non validi o imprevisti
  • Enum o Scelta
    • Ogni valore valido
    • Ultimo valore + 1
    • Valore massimo memorizzabile (a seconda del tipo di archiviazione questo sarà probabilmente 0xffff o 0x7fff)
    • Se le enumerazioni sono firmate, -1 & MAX NEG

Naturalmente un vecchio favorito è anche quello di testare deliberatamente con il precedente paio di iterazioni di strutture dati valide per assicurarsi che il codice gestisca con garbo i risultati della sincronizzazione, cioè cosa succede se il back-end viene ripristinato o il front-end connesso a un'installazione non aggiornata.

    
risposta data 26.09.2017 - 06:40
fonte

Leggi altre domande sui tag